diff options
| author | gingerBill <bill@gingerbill.org> | 2021-08-07 11:23:40 +0100 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2021-08-07 11:23:40 +0100 |
| commit | f5e51a29b57159fda894b9006b9142b166305f15 (patch) | |
| tree | cd5c6f3899218d3afc69061bac82c40e29398618 /src/llvm_backend.cpp | |
| parent | beaad719adf592868bbb878d2e263a8aa6238ec5 (diff) | |
Fix #1070
Diffstat (limited to 'src/llvm_backend.cpp')
| -rw-r--r-- | src/llvm_backend.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp index 7b6a58c30..16681cdde 100644 --- a/src/llvm_backend.cpp +++ b/src/llvm_backend.cpp @@ -9372,7 +9372,7 @@ lbValue lb_emit_call(lbProcedure *p, lbValue value, Array<lbValue> const &args, lbValue lb_emit_array_ep(lbProcedure *p, lbValue s, lbValue index) { Type *t = s.type; - GB_ASSERT(is_type_pointer(t)); + GB_ASSERT_MSG(is_type_pointer(t), "%s", type_to_string(t)); Type *st = base_type(type_deref(t)); GB_ASSERT_MSG(is_type_array(st) || is_type_enumerated_array(st), "%s", type_to_string(st)); GB_ASSERT_MSG(is_type_integer(core_type(index.type)), "%s", type_to_string(index.type)); @@ -13346,8 +13346,10 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { case_ast_node(ue, UnaryExpr, expr); switch (ue->op.kind) { - case Token_And: - return lb_build_addr(p, ue->expr); + case Token_And: { + lbValue ptr = lb_build_expr(p, expr); + return lb_addr(lb_address_from_load_or_generate_local(p, ptr)); + } default: GB_PANIC("Invalid unary expression for lb_build_addr"); } |