aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend_general.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2021-10-25 00:46:50 +0100
committergingerBill <bill@gingerbill.org>2021-10-25 00:46:50 +0100
commit306bdf8869f2c9676e73acbf477a302c08137087 (patch)
tree29c2ffeb7c00008bf44b83ef2a0ca55abcbbb153 /src/llvm_backend_general.cpp
parent7a29f6cff0037ea9b90c0ec3f58fe62a68c2e971 (diff)
Update alignment rules for `matrix` types as a compromise to keep zero padding
Diffstat (limited to 'src/llvm_backend_general.cpp')
-rw-r--r--src/llvm_backend_general.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/llvm_backend_general.cpp b/src/llvm_backend_general.cpp
index 01221cad6..7aa7c7cdd 100644
--- a/src/llvm_backend_general.cpp
+++ b/src/llvm_backend_general.cpp
@@ -512,8 +512,7 @@ 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;
+bool lb_try_update_alignment(LLVMValueRef addr_ptr, unsigned alignment) {
if (LLVMIsAGlobalValue(addr_ptr) || LLVMIsAAllocaInst(addr_ptr) || LLVMIsALoadInst(addr_ptr)) {
if (LLVMGetAlignment(addr_ptr) < alignment) {
if (LLVMIsAAllocaInst(addr_ptr) || LLVMIsAGlobalValue(addr_ptr)) {
@@ -525,6 +524,11 @@ bool lb_try_update_alignment(lbValue ptr, unsigned alignment) {
return false;
}
+bool lb_try_update_alignment(lbValue ptr, unsigned alignment) {
+ return lb_try_update_alignment(ptr.value, alignment);
+}
+
+
bool lb_try_vector_cast(lbModule *m, lbValue ptr, LLVMTypeRef *vector_type_) {
Type *array_type = base_type(type_deref(ptr.type));
GB_ASSERT(is_type_array_like(array_type));