aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend_expr.cpp
diff options
context:
space:
mode:
authorAndreas T Jonsson <mail@andreasjonsson.se>2024-05-10 13:34:02 +0200
committerAndreas T Jonsson <mail@andreasjonsson.se>2024-05-10 13:34:02 +0200
commita9b94f401934612824f05f6abbe28c0da95be9c8 (patch)
treecbdb7753bfa093415f091f2d2a2a3dfc9a9d77c3 /src/llvm_backend_expr.cpp
parent1d3845abf55325d5a973a618b95ebc1a18da3d5e (diff)
parenta45e69e6564c2518c699fd58f8d9123cfa7496b0 (diff)
Merge branch 'netbsd' into netbsd-ci
Diffstat (limited to 'src/llvm_backend_expr.cpp')
-rw-r--r--src/llvm_backend_expr.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/llvm_backend_expr.cpp b/src/llvm_backend_expr.cpp
index ee1a384ae..030926079 100644
--- a/src/llvm_backend_expr.cpp
+++ b/src/llvm_backend_expr.cpp
@@ -4383,7 +4383,11 @@ gb_internal lbAddr lb_build_addr_compound_lit(lbProcedure *p, Ast *expr) {
mask = LLVMConstSub(mask, LLVMConstInt(lit, 1, false));
LLVMValueRef elem = values[i].value;
- elem = LLVMBuildZExt(p->builder, elem, lit, "");
+ if (lb_sizeof(lit) < lb_sizeof(LLVMTypeOf(elem))) {
+ elem = LLVMBuildTrunc(p->builder, elem, lit, "");
+ } else {
+ elem = LLVMBuildZExt(p->builder, elem, lit, "");
+ }
elem = LLVMBuildAnd(p->builder, elem, mask, "");
elem = LLVMBuildShl(p->builder, elem, LLVMConstInt(lit, f.bit_offset, false), "");