aboutsummaryrefslogtreecommitdiff
path: root/src/codegen
diff options
context:
space:
mode:
Diffstat (limited to 'src/codegen')
-rw-r--r--src/codegen/ssa.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/codegen/ssa.cpp b/src/codegen/ssa.cpp
index f1e992d7b..89443a1dd 100644
--- a/src/codegen/ssa.cpp
+++ b/src/codegen/ssa.cpp
@@ -2723,6 +2723,13 @@ ssaAddr ssa_build_addr(ssaProcedure *proc, AstNode *expr) {
ssaValue *gep = ssa_emit_zero_gep(proc, e);
return ssa_make_addr(gep, expr);
case_end;
+
+ case_ast_node(ce, CallExpr, expr);
+ ssaValue *e = ssa_build_expr(proc, expr);
+ ssaValue *v = ssa_add_local_generated(proc, ssa_type(e));
+ ssa_emit_store(proc, v, e);
+ return ssa_make_addr(v, expr);
+ case_end;
}
TokenPos token_pos = ast_node_token(expr).pos;
@@ -3506,7 +3513,6 @@ void ssa_insert_code_before_proc(ssaProcedure* proc, ssaProcedure *parent) {
}
}
-
void ssa_build_proc(ssaValue *value, ssaProcedure *parent) {
ssaProcedure *proc = &value->Proc;