aprantl added a comment.

In https://reviews.llvm.org/D38042#875734, @chandlerc wrote:

> In https://reviews.llvm.org/D38042#875441, @aprantl wrote:
>
> > In https://reviews.llvm.org/D38042#875418, @chandlerc wrote:
> >
> > > Absolutely. I think the verifier should never, under any circumstances, 
> > > mutate the IR. Think about it, with the current design if a pass corrupts 
> > > the debug info the verifier may "hide" this by stripping it out rather 
> > > than allowing us to find it.
> >
> >
> > Okay, I think I agree. Before I venture off implementing this, do you think 
> > that separating out a StripBrokenDebugInfoPass that depends on the Verifier 
> > is right way forward?
>
>
> I don't know what you mean by "depends on" and I'm not sure I'm the right 
> person to say what the exact best design is... But I'd throw something 
> together and start that review on llvm-commits where we can get folks more 
> familiar w/ these details involved to figure it out. It at least seems to be 
> in the right direction.
>
> My only concern is that passes are supposed to be able to rely on the 
> verifier passing, and this wouldn't... Not sure how to handle that case.
>
> > 
> > 
> >> But auto-upgrade happens on *read*. If you want to add the debug info 
> >> stripping to auto-upgrade, that's a reasonable discussion to have, and no 
> >> change here will be required. There might be concerns about that on the 
> >> LLVM side, I don't know. But the verifier (as well as running it here) 
> >> does not seem like the right solution.
> > 
> > Would splitting the VerifierPass into a VerifierPass and a 
> > StripBrokenDebugInfoPass *together* with adding a -enable-llvm-verifier (an 
> > explicit opposite of -disable-llvm-verifier) work for you?
>
> If you want a way to use the `clang` binary to strip broken debug info from a 
> bitcode input, I would add a flag that does exactly this, and leave the 
> verifier as an independent component. I don't know whether such a flag makes 
> sense or not (Richard or other more deep in Clang-land would have a better 
> feel than I would).
>
> But I think that whether the verifier is enabled or not should be orthogonal 
> from any debug info stripping. Stripping the debug info might impact whether 
> something verifies, but the flags should be completely independent.
>
> However, if the debug info stripping ends up as part of auto upgrade, all of 
> this becomes much simpler to think about.


I like the idea of making debug info stripping a part of the auto upgrade 
process, but in order to do this, we would need to run the verifier as part of 
the auto upgrade process (probably inside `llvm::UpgradeDebugInfo()`) in order 
to determine that stripping is necessary. Do you see any problems with that? I 
guess as long as we wire up clang's --disable-llvm-verifier option to the 
bitcode reader we can still get the current behavior if somebody really wants 
that.

I will explore this idea some more. Thanks for your input so far!


https://reviews.llvm.org/D38042



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to