[llvm-dev] Intended behavior of CGSCC pass manager.

Sanjoy Das via llvm-dev llvm-dev at lists.llvm.org
Wed Jun 8 18:04:58 PDT 2016

Hi Sean,

On Wed, Jun 8, 2016 at 5:35 PM, Sean Silva <chisophugis at gmail.com> wrote:
> In both of these examples you gave (out-of-thin-air devirtualization and
> forwarding into a callee) is the contract of a CGSCC pass being violated? (I
> believe the contract is that a CGSCC pass cannot invalidate the analyses of
> a different SCC
> (https://github.com/llvm-mirror/llvm/blob/master/include/llvm/Analysis/CGSCCPassManager.h#L104)
> )

I'm not sure -- in both the cases I'm introducing a call to a
different SCC.  Obviously, if your analysis state is "cache of all
incoming call edges at the function granularity" then it is violated.
But, OTOH, if your analysis state is "a count of all the CallInsts
coming into the function" then even basic things like unrolling loops
will invalidate that.

-- Sanjoy

More information about the llvm-dev mailing list