<div dir="ltr">Hi Duncan,<div><br></div><div>That is exactly what happened, DIGlobalVariable::Verify enforces a display name, which seems unnecessary.</div><div>Eric, any opinion on this?</div><div><br></div><div>Thanks,</div>
<div>Manman</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Jul 19, 2013 at 1:21 AM, Duncan Sands <span dir="ltr"><<a href="mailto:baldrick@free.fr" target="_blank">baldrick@free.fr</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Manman,<br>
<br>
On 19/07/13 07:07, Manman Ren wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Hi Duncan,<br>
<br>
How can I debug the failures?<br>
</blockquote>
<br>
this is coming from Fortran that likes to create anonymous global constants<br>
like this:<br>
<br>
  @0 = internal constant i32 77<br>
<br>
I think it's so that it can pass a pointer to "77" around.  Anyway, the debug<br>
code uses the name of the global as the "display name" but here there is none.<br>
The verifier then barfs because it thinks everything should have a name.<br>
<br>
I'm not sure why LLVM has this obsession that everything should have a name.<br>
Is there a real reason for that?  If dwarf requires a name, then in this kind<br>
of case someone will have to invent one.  The question then is whether it is<br>
better to require front-ends to always supply a name (meaning the front-end has<br>
to invent one), or to accept empty names and have the backend make something up<br>
when outputting dwarf.  Any opinions?<br>
<br>
Ciao, Duncan.<br>
<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Also getDICompositeType is not used on mainline but is used on dragonegg, how<br>
can I figure out the usage?<br>
Do  I have access to the source?<br>
<br>
Thanks,<br>
Manman<br>
<br>
On Jul 18, 2013, at 8:56 PM, Eric Christopher wrote:<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Also this appears to have broken the dragonegg bots. :)<br>
<br>
-eric<br>
<br>
On Thu, Jul 18, 2013 at 6:08 PM, Eric Christopher <<a href="mailto:echristo@gmail.com" target="_blank">echristo@gmail.com</a><br>
<mailto:<a href="mailto:echristo@gmail.com" target="_blank">echristo@gmail.com</a>>> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Debug Info: enable verifying by default and disable testing cases that fail.<br>
<br>
1> Use DebugInfoFinder to find debug info MDNodes.<br>
2> Add disable-debug-info-verifier to disable verifying debug info.<br>
3> Disable verifying for testing cases that fail (will update the testing cases<br>
  later on).<br>
4> MDNodes generated by clang can have empty filename for TAG_inheritance and<br>
  TAG_friend, so DIType::Verify is modified accordingly.<br>
<br>
</blockquote><div class="im">
<br>
Cool, looks about like what I'd expected from when we discussed it.<br>
I'd have preferred you split out the change to verify :)<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Note that DebugInfoFinder does not list all debug info MDNode.<br>
</blockquote>
<br>
Seems like we should fix this? :)<br>
<br>
</div><div class="im"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
For example, clang can generate:<br>
metadata !{i32 786468}, which will fail to verify.<br>
</blockquote>
<br>
This doesn't seem related to "not listing" all of the debug info, but<br>
a problem because of:<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
This MDNode is used by debug info but not included in DebugInfoFinder.<br>
This MDNode is generated as a temporary node in DIBuilder::createFunction<br>
 Value *TElts[] = { GetTagConstant(VMContext, DW_TAG_base_type) };<br>
 MDNode::getTemporary(<u></u>VMContext, TElts)<br>
<br>
</blockquote>
<br>
This is the "we need a temporary placeholder" problem basically.<br>
You'll see it in GVs, subprograms etc when we construct the CU as<br>
well. Theoretically the verifier should catch these as "not<br>
important". What's actually going on here that's causing it to fail?<br>
<br></div><div class="im">
-eric<br>
______________________________<u></u>_________________<br>
llvm-commits mailing list<br>
</div><a href="mailto:llvm-commits@cs.uiuc.edu" target="_blank">llvm-commits@cs.uiuc.edu</a> <mailto:<a href="mailto:llvm-commits@cs.uiuc.edu" target="_blank">llvm-commits@cs.uiuc.<u></u>edu</a>><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/<u></u>mailman/listinfo/llvm-commits</a><br>
</blockquote></blockquote>
<br>
</blockquote><div class="HOEnZb"><div class="h5">
<br>
______________________________<u></u>_________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu" target="_blank">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/<u></u>mailman/listinfo/llvm-commits</a><br>
</div></div></blockquote></div><br></div>