[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