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

Eric Christopher echristo at gmail.com
Thu Jul 18 18:08:54 PDT 2013


> 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? :)

> 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?

-eric



More information about the llvm-commits mailing list