aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend_expr.cpp
diff options
context:
space:
mode:
authorMichael <132351311+perogycook@users.noreply.github.com>2023-11-26 00:00:47 -0700
committerGitHub <noreply@github.com>2023-11-26 00:00:47 -0700
commit9300c99d654448e4ee353caeac5825a6995ea28e (patch)
tree2c95d759e62e77f120cd21878adaba1bea566610 /src/llvm_backend_expr.cpp
parent9366bf44a69af7a251a8f96938ae5c9931941c25 (diff)
parente8e350144374957cb96d4a38411deba434c93a1d (diff)
Merge branch 'odin-lang:master' into raylib5
Diffstat (limited to 'src/llvm_backend_expr.cpp')
-rw-r--r--src/llvm_backend_expr.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/llvm_backend_expr.cpp b/src/llvm_backend_expr.cpp
index 8678a125c..d1176f896 100644
--- a/src/llvm_backend_expr.cpp
+++ b/src/llvm_backend_expr.cpp
@@ -2939,6 +2939,12 @@ gb_internal lbValue lb_build_unary_and(lbProcedure *p, Ast *expr) {
} else if (is_type_soa_pointer(tv.type)) {
ast_node(ie, IndexExpr, ue_expr);
lbValue addr = lb_build_addr_ptr(p, ie->expr);
+
+ if (is_type_pointer(type_deref(addr.type))) {
+ addr = lb_emit_load(p, addr);
+ }
+ GB_ASSERT(is_type_pointer(addr.type));
+
lbValue index = lb_build_expr(p, ie->index);
if (!build_context.no_bounds_check) {