diff options
author | David Blaikie <dblaikie@gmail.com> | 2014-05-20 21:40:13 +0000 |
---|---|---|
committer | David Blaikie <dblaikie@gmail.com> | 2014-05-20 21:40:13 +0000 |
commit | 93ef46b02a357cd3669ad0a0e5a2f579a4601cfe (patch) | |
tree | 5860d686be6968df0644edfd4fd3cfa867708471 /llvm/lib/CodeGen | |
parent | acca0085c114579a9394c2525415e6a0f77e0820 (diff) | |
download | bcm5719-llvm-93ef46b02a357cd3669ad0a0e5a2f579a4601cfe.tar.gz bcm5719-llvm-93ef46b02a357cd3669ad0a0e5a2f579a4601cfe.zip |
Unbreak the sanitizer buildbots after r209226 due to SROA issue described in http://reviews.llvm.org/D3714
Undecided whether this should include a test case - SROA produces bad
dbg.value metadata describing a value for a reference that is actually
the value of the thing the reference refers to. For now, loosening the
assert lets this not assert, but it's still bogus/wrong output...
If someone wants to tell me to add a test, I'm willing/able, just
undecided. Hopefully we'll get SROA fixed soon & we can tighten up this
assertion again.
llvm-svn: 209240
Diffstat (limited to 'llvm/lib/CodeGen')
-rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp index 68673f7fb84..f09cb6ade63 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp @@ -751,11 +751,14 @@ static bool isUnsignedDIType(DwarfDebug *DD, DIType Ty) { if (DTy.isDerivedType()) { dwarf::Tag T = (dwarf::Tag)Ty.getTag(); // Encode pointer constants as unsigned bytes. This is used at least for - // null pointer constant emission. Maybe DW_TAG_reference_type should be - // accepted here too, if there are ways to produce compile-time constant - // references. + // null pointer constant emission. + // FIXME: reference and rvalue_reference /probably/ shouldn't be allowed + // here, but accept them for now due to a bug in SROA producing bogus + // dbg.values. if (T == dwarf::DW_TAG_pointer_type || - T == dwarf::DW_TAG_ptr_to_member_type) + T == dwarf::DW_TAG_ptr_to_member_type || + T == dwarf::DW_TAG_reference_type || + T == dwarf::DW_TAG_rvalue_reference_type) return true; assert(T == dwarf::DW_TAG_typedef || T == dwarf::DW_TAG_const_type || T == dwarf::DW_TAG_volatile_type || |