aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2021-08-07 11:23:40 +0100
committergingerBill <bill@gingerbill.org>2021-08-07 11:23:40 +0100
commitf5e51a29b57159fda894b9006b9142b166305f15 (patch)
treecd5c6f3899218d3afc69061bac82c40e29398618 /src/llvm_backend.cpp
parentbeaad719adf592868bbb878d2e263a8aa6238ec5 (diff)
Fix #1070
Diffstat (limited to 'src/llvm_backend.cpp')
-rw-r--r--src/llvm_backend.cpp8
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");
}