aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2021-04-22 17:29:48 +0100
committergingerBill <bill@gingerbill.org>2021-04-22 17:29:48 +0100
commitac53577e9b8f310bfdd663b6bdac38246165d1ff (patch)
tree3be64e1fe4256e8fd9d71a3a19437ef5f789b683 /src
parent896057b5a7433b6251f638afdc65b18f1873f2cc (diff)
Improve `auto_cast` logic
Diffstat (limited to 'src')
-rw-r--r--src/ir.cpp3
-rw-r--r--src/llvm_backend.cpp3
2 files changed, 4 insertions, 2 deletions
diff --git a/src/ir.cpp b/src/ir.cpp
index 9f08450d6..1c81f08ed 100644
--- a/src/ir.cpp
+++ b/src/ir.cpp
@@ -8257,7 +8257,8 @@ irValue *ir_build_expr_internal(irProcedure *proc, Ast *expr) {
case_end;
case_ast_node(ac, AutoCast, expr);
- return ir_build_expr(proc, ac->expr);
+ irValue *value = ir_build_expr(proc, ac->expr);
+ return ir_emit_conv(proc, value, tv.type);
case_end;
case_ast_node(ue, UnaryExpr, expr);
diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp
index 4a0e08b15..d3bc3d0f8 100644
--- a/src/llvm_backend.cpp
+++ b/src/llvm_backend.cpp
@@ -11164,7 +11164,8 @@ lbValue lb_build_expr(lbProcedure *p, Ast *expr) {
case_end;
case_ast_node(ac, AutoCast, expr);
- return lb_build_expr(p, ac->expr);
+ lbValue value = lb_build_expr(p, ac->expr);
+ return lb_emit_conv(p, value, tv.type);
case_end;
case_ast_node(ue, UnaryExpr, expr);