commit aafff258973fb58f1a964eb050d5602ed8b9f60c (tree)
parent e025ad7b46e3be08e17e70444f909d351ddc6718
Author: february cozzocrea <91439207+f-cozzocrea@users.noreply.github.com>
Date: Wed, 10 Jan 2024 11:13:11 -0800
translate-c: float cast from boolean expr fix
Diffstat:
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/src/translate_c.zig b/src/translate_c.zig
@@ -2388,7 +2388,7 @@ fn transCCast(
}
if (!cIsFloating(src_type) and cIsFloating(dst_type)) {
var rhs = expr;
- if (qualTypeIsBoolean(src_type)) rhs = try Tag.int_from_bool.create(c.arena, expr);
+ if (qualTypeIsBoolean(src_type) or isBoolRes(rhs)) rhs = try Tag.int_from_bool.create(c.arena, expr);
// @as(dest_type, @floatFromInt(val))
return Tag.as.create(c.arena, .{
.lhs = dst_node,
diff --git a/test/cases/run_translated_c/float_from_bool_expr_cast.c b/test/cases/run_translated_c/float_from_bool_expr_cast.c
@@ -0,0 +1,8 @@
+int main() {
+ float f = (float)(10.0f > 1.0f);
+ return 0;
+}
+
+// run-translated-c
+// c_frontend=clang
+//