<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">I fixed this in <span class="Apple-style-span" style="font-size: 12px; font-weight: bold; ">r90572.</span><div><b><br></b></div><div><span class="Apple-style-span" style="font-size: 12px; "></span><b>Victor</b></div><div><b><br></b><div><div>On Dec 4, 2009, at 9:39 AM, Devang Patel wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div><br>On Dec 4, 2009, at 12:12 AM, Daniel Dunbar wrote:<br><br><blockquote type="cite">Hi Victor,<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">This is causing a crash in Clang (on its test suite), can you take a<br></blockquote><blockquote type="cite">look? The crash is here:<br></blockquote><blockquote type="cite">           if (isa<Instruction>(N->getElement(n)))<br></blockquote><blockquote type="cite">and N->getElement(n) is null. Perhaps this just needs a null check,<br></blockquote><blockquote type="cite">but I'm not sure if that is supposed to happen.<br></blockquote><br>Yes, Null can happen and it is valid. In fact, most of the MDNodes describing location has null as the last element.<br>-<br>Devang<br><br><blockquote type="cite"><br></blockquote><blockquote type="cite">- Daniel<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">On Thu, Dec 3, 2009 at 5:37 PM, Devang Patel <<a href="mailto:dpatel@apple.com">dpatel@apple.com</a>> wrote:<br></blockquote><blockquote type="cite"><blockquote type="cite">Hi Victor,<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">On Dec 3, 2009, at 5:35 PM, Victor Hernandez wrote:<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">Author: hernande<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">Date: Thu Dec  3 19:35:02 2009<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">New Revision: 90512<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">URL: <a href="http://llvm.org/viewvc/llvm-project?rev=90512&view=rev">http://llvm.org/viewvc/llvm-project?rev=90512&view=rev</a><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">Log:<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">Teach AsmWriter to write inline (not via a global metadata slot)<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">metadata that contains an instruction<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">Modified:<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">   llvm/trunk/lib/VMCore/AsmWriter.cpp<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">Modified: llvm/trunk/lib/VMCore/AsmWriter.cpp<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/AsmWriter.cpp?rev=90512&r1=90511&r2=90512&view=diff">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/AsmWriter.cpp?rev=90512&r1=90511&r2=90512&view=diff</a><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">=<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">=<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">=<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">=<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">=<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">=<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">=<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">=<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">======================================================================<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">--- llvm/trunk/lib/VMCore/AsmWriter.cpp (original)<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">+++ llvm/trunk/lib/VMCore/AsmWriter.cpp Thu Dec  3 19:35:02 2009<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">@@ -695,8 +695,13 @@<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">          !I->hasName())<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">        CreateFunctionSlot(I);<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">      for (unsigned i = 0, e = I->getNumOperands(); i != e; ++i)<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">-        if (MDNode *N = dyn_cast_or_null<MDNode>(I->getOperand(i)))<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">+        if (MDNode *N = dyn_cast_or_null<MDNode>(I->getOperand(i))) {<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">+          // Create a metadata slot only if N contains no<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">instructions.<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">+          for (unsigned n = 0, e = N->getNumElements(); n != e; ++n)<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">+            if (isa<Instruction>(N->getElement(n)))<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">+              continue;<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">          CreateMetadataSlot(N);<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">+        }<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">      // Process metadata attached with this instruction.<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">      MDs.clear();<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">There are other places where CreateMetadataSlot() is used. Please move<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">this check in side CreateMetadataSlot().<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">-<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">Devang<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">_______________________________________________<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">llvm-commits mailing list<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><br></div></blockquote></div><br></div></body></html>