diff options
| author | Andreas T Jonsson <mail@andreasjonsson.se> | 2024-05-10 13:34:02 +0200 |
|---|---|---|
| committer | Andreas T Jonsson <mail@andreasjonsson.se> | 2024-05-10 13:34:02 +0200 |
| commit | a9b94f401934612824f05f6abbe28c0da95be9c8 (patch) | |
| tree | cbdb7753bfa093415f091f2d2a2a3dfc9a9d77c3 /src/llvm_backend_expr.cpp | |
| parent | 1d3845abf55325d5a973a618b95ebc1a18da3d5e (diff) | |
| parent | a45e69e6564c2518c699fd58f8d9123cfa7496b0 (diff) | |
Merge branch 'netbsd' into netbsd-ci
Diffstat (limited to 'src/llvm_backend_expr.cpp')
| -rw-r--r-- | src/llvm_backend_expr.cpp | 6 |
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), ""); |