diff options
| author | gingerBill <bill@gingerbill.org> | 2021-06-15 01:16:19 +0100 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2021-06-15 01:16:19 +0100 |
| commit | 84a4188c7214fdf0270f9f835e626fa214a98df0 (patch) | |
| tree | 959472bf032336e254fcb2b4c7dc29f15aeb705c /src/llvm_backend.cpp | |
| parent | 31f1e0aeaef9cd9db6777990ddd1c7c2f1ed307a (diff) | |
Fix #1017
Diffstat (limited to 'src/llvm_backend.cpp')
| -rw-r--r-- | src/llvm_backend.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp index 255959377..769f5be45 100644 --- a/src/llvm_backend.cpp +++ b/src/llvm_backend.cpp @@ -293,12 +293,15 @@ void lb_emit_slice_bounds_check(lbProcedure *p, Token token, lbValue low, lbValu bool lb_try_update_alignment(lbValue ptr, unsigned alignment) { LLVMValueRef addr_ptr = ptr.value; - if (LLVMGetAlignment(addr_ptr) < alignment) { - if (LLVMIsAAllocaInst(addr_ptr) || LLVMIsAGlobalValue(addr_ptr)) { - LLVMSetAlignment(addr_ptr, alignment); + if (LLVMIsAGlobalValue(addr_ptr) || LLVMIsAAllocaInst(addr_ptr) || LLVMIsALoadInst(addr_ptr)) { + if (LLVMGetAlignment(addr_ptr) < alignment) { + if (LLVMIsAAllocaInst(addr_ptr) || LLVMIsAGlobalValue(addr_ptr)) { + LLVMSetAlignment(addr_ptr, alignment); + } } + return LLVMGetAlignment(addr_ptr) >= alignment; } - return LLVMGetAlignment(addr_ptr) >= alignment; + return false; } bool lb_try_vector_cast(lbModule *m, lbValue ptr, LLVMTypeRef *vector_type_) { |