<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Nicholas thinks this should be in 2.4. Can I get approval from a code owner please?<div><br></div><div>-Tanya</div><div><br><div><div>On Oct 17, 2008, at 11:48 AM, Bill Wendling wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div>Author: void<br>Date: Fri Oct 17 13:48:57 2008<br>New Revision: 57714<br><br>URL: <a href="http://llvm.org/viewvc/llvm-project?rev=57714&view=rev">http://llvm.org/viewvc/llvm-project?rev=57714&view=rev</a><br>Log:<br>The Dwarf writer was comparing mangled and unmangled names for C++ code when we<br>have an unreachable block in a function. This was triggering the assert. This is<br>a horrid hack to cover this up.<br><br>Oh! for a good debug info architecture!<br><br>Added:<br>    llvm/trunk/test/DebugInfo/2008-10-17-C++DebugCrash.ll<br>Modified:<br>    llvm/trunk/lib/CodeGen/AsmPrinter/DwarfWriter.cpp<br><br>Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfWriter.cpp<br>URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfWriter.cpp?rev=57714&r1=57713&r2=57714&view=diff">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfWriter.cpp?rev=57714&r1=57713&r2=57714&view=diff</a><br><br>==============================================================================<br>--- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfWriter.cpp (original)<br>+++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfWriter.cpp Fri Oct 17 13:48:57 2008<br>@@ -2060,8 +2060,11 @@<br>         return;<br>       }<br>     }<br>-<br>+#if 0<br>+    // FIXME: This is causing an abort because C++ mangled names are compared<br>+    // with their unmangled counterparts. See PR2885. Don't do this assert.<br>     assert(0 && "Couldn't find DIE for machine function!");<br>+#endif<br>   }<br><br>   /// EmitInitial - Emit initial Dwarf declarations.  This is necessary for cc<br><br>Added: llvm/trunk/test/DebugInfo/2008-10-17-C++DebugCrash.ll<br>URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/2008-10-17-C%2B%2BDebugCrash.ll?rev=57714&view=auto">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/2008-10-17-C%2B%2BDebugCrash.ll?rev=57714&view=auto</a><br><br>==============================================================================<br>--- llvm/trunk/test/DebugInfo/2008-10-17-C++DebugCrash.ll (added)<br>+++ llvm/trunk/test/DebugInfo/2008-10-17-C++DebugCrash.ll Fri Oct 17 13:48:57 2008<br>@@ -0,0 +1,58 @@<br>+; RUN: llvm-as < %s | llc<br>+; PR2885<br>+<br>+;; NOTE: This generates bad debug info in this case! But that's better than<br>+;; ICEing.<br>+<br>+; ModuleID = 'bug.bc'<br>+target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32"<br>+target triple = "i386-pc-linux-gnu"<br>+<span class="Apple-tab-span" style="white-space:pre">      </span>%llvm.dbg.anchor.type = type { i32, i32 }<br>+<span class="Apple-tab-span" style="white-space:pre">        </span>%llvm.dbg.basictype.type = type { i32, { }*, i8*, { }*, i32, i64, i64, i64, i32, i32 }<br>+<span class="Apple-tab-span" style="white-space:pre">   </span>%llvm.dbg.compile_unit.type = type { i32, { }*, i32, i8*, i8*, i8* }<br>+<span class="Apple-tab-span" style="white-space:pre">     </span>%llvm.dbg.subprogram.type = type { i32, { }*, { }*, i8*, i8*, i8*, { }*, i32, { }*, i1, i1 }<br>+<span class="Apple-tab-span" style="white-space:pre">     </span>%llvm.dbg.variable.type = type { i32, { }*, i8*, { }*, i32, { }* }<br><a href="mailto:+@llvm.dbg.subprogram">+@llvm.dbg.subprogram</a> = internal constant %llvm.dbg.subprogram.type { i32 393262, { }* bitcast (%llvm.dbg.anchor.type* @llvm.dbg.subprograms to { }*), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([11 x i8]* @.str3, i32 0, i32 0), i8* getelementptr ([11 x i8]* @.str3, i32 0, i32 0), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 14, { }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype to { }*), i1 true, i1 true }<span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>; <%llvm.dbg.subprogram.type*> [#uses=0]<br><a href="mailto:+@llvm.dbg.subprograms">+@llvm.dbg.subprograms</a> = linkonce constant %llvm.dbg.anchor.type { i32 393216, i32 46 }<span class="Apple-tab-span" style="white-space:pre">   </span><span class="Apple-tab-span" style="white-space:pre">    </span>; <%llvm.dbg.anchor.type*> [#uses=1]<br><a href="mailto:+@llvm.dbg.compile_unit">+@llvm.dbg.compile_unit</a> = internal constant %llvm.dbg.compile_unit.type { i32 393233, { }* bitcast (%llvm.dbg.anchor.type* @llvm.dbg.compile_units to { }*), i32 4, i8* getelementptr ([7 x i8]* @.str, i32 0, i32 0), i8* getelementptr ([16 x i8]* @.str1, i32 0, i32 0), i8* getelementptr ([52 x i8]* @.str2, i32 0, i32 0) }<span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>; <%llvm.dbg.compile_unit.type*> [#uses=1]<br><a href="mailto:+@llvm.dbg.compile_units">+@llvm.dbg.compile_units</a> = linkonce constant %llvm.dbg.anchor.type { i32 393216, i32 17 }<span class="Apple-tab-span" style="white-space:pre">     </span><span class="Apple-tab-span" style="white-space:pre">    </span>; <%llvm.dbg.anchor.type*> [#uses=1]<br>+@.str = internal constant [7 x i8] c"die.cc\00"<span class="Apple-tab-span" style="white-space:pre">      </span><span class="Apple-tab-span" style="white-space:pre">    </span>; <[7 x i8]*> [#uses=1]<br>+@.str1 = internal constant [16 x i8] c"/home/nicholas/\00"<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span>; <[16 x i8]*> [#uses=1]<br>+@.str2 = internal constant [52 x i8] c"4.2.1 (Based on Apple Inc. build 5623) (LLVM build)\00"<span class="Apple-tab-span" style="white-space:pre">   </span><span class="Apple-tab-span" style="white-space:pre">    </span>; <[52 x i8]*> [#uses=1]<br>+@.str3 = internal constant [11 x i8] c"AssertFail\00"<span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>; <[11 x i8]*> [#uses=1]<br><a href="mailto:+@llvm.dbg.basictype">+@llvm.dbg.basictype</a> = internal constant %llvm.dbg.basictype.type { i32 393252, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([4 x i8]* @.str4, i32 0, i32 0), { }* null, i32 0, i64 32, i64 32, i64 0, i32 0, i32 5 }<span class="Apple-tab-span" style="white-space:pre">     </span><span class="Apple-tab-span" style="white-space:pre">    </span>; <%llvm.dbg.basictype.type*> [#uses=1]<br>+@.str4 = internal constant [4 x i8] c"int\00"<span class="Apple-tab-span" style="white-space:pre">     </span><span class="Apple-tab-span" style="white-space:pre">    </span>; <[4 x i8]*> [#uses=1]<br><a href="mailto:+@llvm.dbg.subprogram5">+@llvm.dbg.subprogram5</a> = internal constant %llvm.dbg.subprogram.type { i32 393262, { }* bitcast (%llvm.dbg.anchor.type* @llvm.dbg.subprograms to { }*), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([7 x i8]* @.str6, i32 0, i32 0), i8* getelementptr ([7 x i8]* @.str6, i32 0, i32 0), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 19, { }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype7 to { }*), i1 true, i1 true }<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span>; <%llvm.dbg.subprogram.type*> [#uses=1]<br>+@.str6 = internal constant [7 x i8] c"FooOne\00"<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre">    </span>; <[7 x i8]*> [#uses=1]<br><a href="mailto:+@llvm.dbg.basictype7">+@llvm.dbg.basictype7</a> = internal constant %llvm.dbg.basictype.type { i32 393252, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([9 x i8]* @.str8, i32 0, i32 0), { }* null, i32 0, i64 32, i64 32, i64 0, i32 0, i32 5 }<span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>; <%llvm.dbg.basictype.type*> [#uses=1]<br>+@.str8 = internal constant [9 x i8] c"long int\00"<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span>; <[9 x i8]*> [#uses=1]<br><a href="mailto:+@llvm.dbg.variable">+@llvm.dbg.variable</a> = internal constant %llvm.dbg.variable.type { i32 393473, { }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram5 to { }*), i8* getelementptr ([6 x i8]* @.str9, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 19, { }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype10 to { }*) }<span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span>; <%llvm.dbg.variable.type*> [#uses=0]<br>+@.str9 = internal constant [6 x i8] c"count\00"<span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>; <[6 x i8]*> [#uses=1]<br><a href="mailto:+@llvm.dbg.basictype10">+@llvm.dbg.basictype10</a> = internal constant %llvm.dbg.basictype.type { i32 393252, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([18 x i8]* @.str11, i32 0, i32 0), { }* null, i32 0, i64 32, i64 32, i64 0, i32 0, i32 7 }<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span>; <%llvm.dbg.basictype.type*> [#uses=1]<br>+@.str11 = internal constant [18 x i8] c"long unsigned int\00"<span class="Apple-tab-span" style="white-space:pre">     </span><span class="Apple-tab-span" style="white-space:pre">    </span>; <[18 x i8]*> [#uses=1]<br><a href="mailto:+@llvm.dbg.subprogram12">+@llvm.dbg.subprogram12</a> = internal constant %llvm.dbg.subprogram.type { i32 393262, { }* bitcast (%llvm.dbg.anchor.type* @llvm.dbg.subprograms to { }*), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([7 x i8]* @.str13, i32 0, i32 0), i8* getelementptr ([7 x i8]* @.str13, i32 0, i32 0), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 24, { }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype7 to { }*), i1 true, i1 true }<span class="Apple-tab-span" style="white-space:pre">   </span><span class="Apple-tab-span" style="white-space:pre">    </span>; <%llvm.dbg.subprogram.type*> [#uses=0]<br>+@.str13 = internal constant [7 x i8] c"FooTwo\00"<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span>; <[7 x i8]*> [#uses=1]<br><a href="mailto:+@llvm.dbg.subprogram14">+@llvm.dbg.subprogram14</a> = internal constant %llvm.dbg.subprogram.type { i32 393262, { }* bitcast (%llvm.dbg.anchor.type* @llvm.dbg.subprograms to { }*), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([9 x i8]* @.str15, i32 0, i32 0), i8* getelementptr ([9 x i8]* @.str15, i32 0, i32 0), i8* getelementptr ([13 x i8]* @.str16, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 29, { }* null, i1 false, i1 true }<span class="Apple-tab-span" style="white-space:pre">   </span><span class="Apple-tab-span" style="white-space:pre">    </span>; <%llvm.dbg.subprogram.type*> [#uses=0]<br>+@.str15 = internal constant [9 x i8] c"FooThree\00"<span class="Apple-tab-span" style="white-space:pre">      </span><span class="Apple-tab-span" style="white-space:pre">    </span>; <[9 x i8]*> [#uses=1]<br>+@.str16 = internal constant [13 x i8] c"_Z8FooThreev\00"<span class="Apple-tab-span" style="white-space:pre">  </span><span class="Apple-tab-span" style="white-space:pre">    </span>; <[13 x i8]*> [#uses=1]<br>+<br>+declare void @_Z8FooThreev() nounwind<br>+<br>+define internal i32 @_ZL10AssertFailv() nounwind {<br>+entry:<br>+<span class="Apple-tab-span" style="white-space:pre">       </span>unreachable<br>+}<br>+<br>+declare void @llvm.dbg.func.start({ }*) nounwind<br>+<br>+declare void @llvm.dbg.stoppoint(i32, i32, { }*) nounwind<br>+<br>+declare void @abort() noreturn nounwind<br>+<br>+declare void @llvm.dbg.region.end({ }*) nounwind<br>+<br>+declare i32 @_ZL6FooOnem(i32) nounwind<br>+<br>+declare void @llvm.dbg.declare({ }*, { }*) nounwind<br>+<br>+declare i32 @_ZL6FooTwov() nounwind<br><br><br>_______________________________________________<br>llvm-commits mailing list<br><a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br><a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br></div></blockquote></div><br></div></body></html>