[LLVMdev] Debug Info Verifier: should we create a module pass for it?

Eric Christopher echristo at gmail.com
Mon Dec 16 16:05:06 PST 2013


My off the cuff idea here is to make it a module pass, but we'll split the
verification a bit:

a) IR verification time -

Verify debug metadata attached to instructions (i.e. line information).
Only check it for structure (i.e. do the various metadata nodes have the
right number and kind of operands).

b) Module pass -

Walk down from the CUs in the file and verify everything we see. I think
then the only duplication we'll get are methods from classes as the context
for functions. We'll also need to check the contexts on the various
metadata operands on the line numbers which is unfortunate as that probably
involves a separate walk over the instructions, but then we could cache the
information we've already seen.

Thoughts?

-eric

On Tue Nov 19 2013 at 10:55:38 AM, Manman Ren <manman.ren at gmail.com> wrote:

> Hi all,
>
> Currently, debug info verifier is part of the IR verifier which is a
> function pass.
>
> One part of the IR verifier that I don't like is it verifies module-level
> data in doFinalization. If we have two verifier passes in a single module
> pass manager, doFinalization of the two passes will run on the same module
> data after all passes.
>
> I followed the same model for debug info verifier: verifying debug info
> reachable from a function in runOnFunction and verifying module level debug
> info in doFinalization. But it can be time consuming (see email discussion
> in "Debug Info Slowing Things Down?!"), since each function can reach a lot
> of debug info MDNodes, some of them are shared between functions.
>
> One possibility is to cache MDNodes verified by one function so other
> functions do not verify those MDNodes again. But this is a violation of
> Function Pass in my opinion, since other optimization passes can run
> between verifying one function and verifying another function, and the
> MDNodes verified by one function can be modified when verifying another
> function.
>
> Another possibility is to separate debug info verifier into its own module
> pass. The disadvantage is that we have to run the IR verifier and the debug
> info verifier, each will traverse the module.
>
> Comments and suggestions are welcome.
>
> Thanks,
> Manman
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20131217/6dea1c90/attachment.html>


More information about the llvm-dev mailing list