gingerBill 4 years ago
parent
commit
84a4188c72
1 changed files with 7 additions and 4 deletions
  1. 7 4
      src/llvm_backend.cpp

+ 7 - 4
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)  {
 bool lb_try_update_alignment(lbValue ptr, unsigned alignment)  {
 	LLVMValueRef addr_ptr = ptr.value;
 	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_) {
 bool lb_try_vector_cast(lbModule *m, lbValue ptr, LLVMTypeRef *vector_type_) {