[llvm] r186634 - Debug Info: enable verifying by default and disable testing cases that fail.
Manman Ren
mren at apple.com
Thu Jul 18 22:10:23 PDT 2013
On Jul 18, 2013, at 6:08 PM, Eric Christopher wrote:
>> Debug Info: enable verifying by default and disable testing cases that fail.
>>
>> 1> Use DebugInfoFinder to find debug info MDNodes.
>> 2> Add disable-debug-info-verifier to disable verifying debug info.
>> 3> Disable verifying for testing cases that fail (will update the testing cases
>> later on).
>> 4> MDNodes generated by clang can have empty filename for TAG_inheritance and
>> TAG_friend, so DIType::Verify is modified accordingly.
>>
>
> Cool, looks about like what I'd expected from when we discussed it.
> I'd have preferred you split out the change to verify :)
>
>> Note that DebugInfoFinder does not list all debug info MDNode.
>
> Seems like we should fix this? :)
Yes if it is true.
>
>> For example, clang can generate:
>> metadata !{i32 786468}, which will fail to verify.
>
> This doesn't seem related to "not listing" all of the debug info, but
> a problem because of:
>
>> This MDNode is used by debug info but not included in DebugInfoFinder.
>> This MDNode is generated as a temporary node in DIBuilder::createFunction
>> Value *TElts[] = { GetTagConstant(VMContext, DW_TAG_base_type) };
>> MDNode::getTemporary(VMContext, TElts)
>>
>
> This is the "we need a temporary placeholder" problem basically.
> You'll see it in GVs, subprograms etc when we construct the CU as
> well. Theoretically the verifier should catch these as "not
> important". What's actually going on here that's causing it to fail?
Should this temporary node be treated as a debug info MDNode?
If yes it will fail verification since the tag says it is a base_type, but it has a single operand.
Manman
>
> -eric
More information about the llvm-commits
mailing list