[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