diff options
| author | Jacob Young <jacobly0@users.noreply.github.com> | 2023-08-08 22:34:24 -0400 |
|---|---|---|
| committer | Jacob Young <jacobly0@users.noreply.github.com> | 2023-08-08 23:32:40 -0400 |
| commit | 3e1dd93bb2ac7e9d99fb340f1f4ca6868a52cb6b (patch) | |
| tree | 3a67b92da2378f614bc52bf23133bcf22b5a5c4b /src/zig_llvm.cpp | |
| parent | 53bea0f7e44591e741c357297a1f25310d36ca78 (diff) | |
| download | zig-3e1dd93bb2ac7e9d99fb340f1f4ca6868a52cb6b.tar.gz zig-3e1dd93bb2ac7e9d99fb340f1f4ca6868a52cb6b.zip | |
llvm: force strip without libllvm to avoid unimplemented behavior
Also fix deinit bugs.
Diffstat (limited to 'src/zig_llvm.cpp')
| -rw-r--r-- | src/zig_llvm.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/zig_llvm.cpp b/src/zig_llvm.cpp index 6dd54d3ae4..256d3581df 100644 --- a/src/zig_llvm.cpp +++ b/src/zig_llvm.cpp @@ -1131,7 +1131,16 @@ void ZigLLVMEraseGlobalValue(LLVMValueRef GlobalVal) { } void ZigLLVMDeleteGlobalValue(LLVMValueRef GlobalVal) { - delete unwrap<GlobalVariable>(GlobalVal); + auto *GV = unwrap<GlobalValue>(GlobalVal); + assert(GV->getParent() == nullptr); + switch (GV->getValueID()) { +#define HANDLE_GLOBAL_VALUE(NAME) \ + case Value::NAME##Val: \ + delete static_cast<NAME *>(GV); \ + break; +#include <llvm/IR/Value.def> + default: llvm_unreachable("Expected global value"); + } } void ZigLLVMSetInitializer(LLVMValueRef GlobalVar, LLVMValueRef ConstantVal) { |
