[llvm-dev] Missing attribute inference cases
Chandler Carruth via llvm-dev
llvm-dev at lists.llvm.org
Fri Feb 16 17:12:35 PST 2018
Thanks for the digging!
A quick note:
On Fri, Feb 16, 2018 at 10:30 AM Philip Reames via llvm-dev <
llvm-dev at lists.llvm.org> wrote:
> *Untrusted Declarations*
>
> In several cases, we check hasExactDefinition before checking properties
> of the function declaration (such as return type). To my knowledge, facts
> on declarations are valid even in the place of derefinement. This results
> in the analysis being unnecessarily conservative around external
> declarations.
>
We need to be careful here. Totally agree with you, just worried about
something somewhere *inferring* things onto declarations when it shouldn't
and a general lack of adequate understanding of the line between the good
and bad cases...
> *AlwaysInline and hasExactDefinition*
>
> I believe, but have not fully thought through, that it is legal to IPO
> across an inexact definition boundary if a particularly callsite or
> declaration is marked alwaysinline. It's not clear this matters since
> we'll eventually inline it anyway, but this might be a compile time savings
> by simplifying callers earlier than otherwise possible.
>
Given pass ordering, I'd not worry about this. The inliner runs first (in
the new PM) and then we deduce attributes so we should already have nuked
any always_inline edges.
We also have the pre-call-graph cleanup passes that do most of the code
deletion and such prior to inlining.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180217/18472211/attachment.html>
More information about the llvm-dev
mailing list