[llvm-dev] How to test that GlobalsAA is non unintentionally invalidated
Daniel Berlin via llvm-dev
llvm-dev at lists.llvm.org
Fri Apr 7 08:36:23 PDT 2017
On Fri, Apr 7, 2017 at 3:09 AM, Elovikov, Andrei via llvm-dev <
llvm-dev at lists.llvm.org> wrote:
> During the last month we've faced two cases where some performance
> degradations were observed due to GlobalsAA not being preserved till the
Do you mean "compile time" or "generated code performance"?
> 1) New pass pgo-memop-opt (fixed in http://lists.llvm.org/
> 2) GVNHoist (when it was moved to the simplification part of the
> So it would be good to guard against such issues. However, this highly
> depends on the particular structure of the optimization pipeline.
> LIT test like this seems to work:
> ; RUN: opt < %s -O3 -debug-pass=Details -disable-output 2>&1 | FileCheck %s
> ; CHECK-NOT: is not preserving 'Globals Alias Analysis'
> ; CHECK: 'Loop Invariant Code Motion' is not preserving 'Rotate Loops'
> <some IR with simple loop>
> but looks too hard-coded. Are there ways to do it in a cleaner manner?
> Yes. Add a flag explicitly to output the state of preserved analysis, for
the specific goal of being used in tests, and use that.
But note: I'm not sure it's entirely reasonable to expect everything in
between here and there to preserve something you want preserved.
These are tradeoffs, and adding a test so you can see when it's not true
seems reasonable, but so would xfailing that test if we add something in
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the llvm-dev