aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend_general.cpp
diff options
context:
space:
mode:
authorgingerBill <gingerBill@users.noreply.github.com>2024-07-02 22:16:49 +0100
committerGitHub <noreply@github.com>2024-07-02 22:16:49 +0100
commit7e6acdf800a3811a561a5e942bb69c173c1c1868 (patch)
tree8d0d0f8f02865e10c8b8944c15d2ab0f684b3d81 /src/llvm_backend_general.cpp
parent8b49549fd3cc7c7dc73dc79566b24c514392b4aa (diff)
parent723314909679b89e159cb4cb05d250d12ac64436 (diff)
Merge pull request #3855 from laytan/master
Fix two LLVM assertion failures
Diffstat (limited to 'src/llvm_backend_general.cpp')
-rw-r--r--src/llvm_backend_general.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/llvm_backend_general.cpp b/src/llvm_backend_general.cpp
index c2ae5de74..10276aa08 100644
--- a/src/llvm_backend_general.cpp
+++ b/src/llvm_backend_general.cpp
@@ -1109,9 +1109,13 @@ gb_internal lbValue lb_emit_load(lbProcedure *p, lbValue value) {
Type *t = type_deref(value.type);
LLVMValueRef v = LLVMBuildLoad2(p->builder, lb_type(p->module, t), value.value, "");
- u64 is_packed = lb_get_metadata_custom_u64(p->module, value.value, ODIN_METADATA_IS_PACKED);
- if (is_packed != 0) {
- LLVMSetAlignment(v, 1);
+ // If it is not an instruction it isn't a GEP, so we don't need to track alignment in the metadata,
+ // which is not possible anyway (only LLVM instructions can have metadata).
+ if (LLVMIsAInstruction(value.value)) {
+ u64 is_packed = lb_get_metadata_custom_u64(p->module, value.value, ODIN_METADATA_IS_PACKED);
+ if (is_packed != 0) {
+ LLVMSetAlignment(v, 1);
+ }
}
return lbValue{v, t};