[llvm] r209240 - Unbreak the sanitizer buildbots after r209226 due to SROA issue described in http://reviews.llvm.org/D3714

David Blaikie dblaikie at gmail.com
Tue May 20 14:40:13 PDT 2014


Author: dblaikie
Date: Tue May 20 16:40:13 2014
New Revision: 209240

URL: http://llvm.org/viewvc/llvm-project?rev=209240&view=rev
Log:
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.

Modified:
    llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp

Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp?rev=209240&r1=209239&r2=209240&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp (original)
+++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp Tue May 20 16:40:13 2014
@@ -751,11 +751,14 @@ static bool isUnsignedDIType(DwarfDebug
   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 ||





More information about the llvm-commits mailing list