summaryrefslogtreecommitdiff
path: root/codegen.c
diff options
context:
space:
mode:
Diffstat (limited to 'codegen.c')
-rw-r--r--codegen.c11
1 files changed, 2 insertions, 9 deletions
diff --git a/codegen.c b/codegen.c
index e1e534c..f126bda 100644
--- a/codegen.c
+++ b/codegen.c
@@ -273,20 +273,13 @@ static void emit_str_lit(
}
}
-static struct var_def* get_var(const char* name) {
- struct var_def* var_def;
- if (!scope_get_var(scope, &var_def, name))
- CGEN_PANIC("reference to undefined variable %s", name);
- return var_def;
-}
-
static void emit_var_ref(
FILE* outfile,
const struct var_ref_node* node,
const struct lval_def* dst
) {
if (dst != NULL) {
- emit_mov(outfile, dst, &get_var(node->ident)->loc);
+ emit_mov(outfile, dst, &node->def_ref->loc);
}
}
@@ -315,7 +308,7 @@ static struct lval_def emit_lval(
.type = var_def->resolved_type,
};
case LVAL_VAR_REF:
- var_def = get_var(node->inner.var_ref.ident);
+ var_def = node->inner.var_ref.def_ref;
return (struct lval_def) {
.loc = var_def->loc,
.type = var_def->resolved_type,