[llvm] r186634 - Debug Info: enable verifying by default and disable testing cases that fail.

Eric Christopher echristo at gmail.com
Thu Jul 18 23:02:58 PDT 2013


>> 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.'

You just said it was 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.
>

Should probably be treated as a debug info node at the moment. I think
ideally we're going to want to treat these as either NULL terminators
or just use NULL nodes here instead of something that we're just going
to find and replace.

-eric



More information about the llvm-commits mailing list