aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2021-03-22 16:14:58 +0000
committergingerBill <bill@gingerbill.org>2021-03-22 16:14:58 +0000
commitccd91aee5c46b55bf452a7b57322ebb5f0ec94a9 (patch)
treeee885e6fa4fffa568430f21dd979448bcff1a151 /src/llvm_backend.cpp
parentbf46a3f1d353196a8ce8a7f017d94610f4e9b203 (diff)
Fix debug information for `typeid` on -llvm-api
Diffstat (limited to 'src/llvm_backend.cpp')
-rw-r--r--src/llvm_backend.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp
index 5ddf65a11..d3500d5b6 100644
--- a/src/llvm_backend.cpp
+++ b/src/llvm_backend.cpp
@@ -1666,7 +1666,8 @@ LLVMMetadataRef lb_debug_type_internal(lbModule *m, Type *type) {
return lb_debug_basic_struct(m, str_lit("any"), 2*word_bits, word_bits, elements, gb_count_of(elements));
}
- case Basic_typeid: return LLVMDIBuilderCreateBasicType(m->debug_builder, "typeid", 6, word_bits, 0, LLVMDIFlagZero);
+ case Basic_typeid:
+ return LLVMDIBuilderCreateBasicType(m->debug_builder, "typeid", 6, word_bits, LLVMDWARFTypeEncoding_Unsigned, LLVMDIFlagZero);
// Endian Specific Types
case Basic_i16le: return LLVMDIBuilderCreateBasicType(m->debug_builder, "i16le", 5, 16, LLVMDWARFTypeEncoding_Signed, LLVMDIFlagLittleEndian);
@@ -2823,7 +2824,7 @@ void lb_add_debug_local_variable(lbProcedure *p, LLVMValueRef ptr, Type *type, T
unsigned alignment_in_bits = cast(unsigned)(8*type_align_of(type));
LLVMDIFlags flags = LLVMDIFlagZero;
- LLVMBool always_preserve = false;
+ LLVMBool always_preserve = build_context.optimization_level == 0;
LLVMMetadataRef debug_type = lb_debug_type(m, type);