[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:

> Hello,
>
> During the last month we've faced two cases where some performance
> degradations were observed due to GlobalsAA not being preserved till the
> LICM:
>

Do you mean "compile time" or "generated code performance"?


>   1) New pass pgo-memop-opt (fixed in http://lists.llvm.org/
> pipermail/llvm-commits/Week-of-Mon-20170403/443360.html)
>   2) GVNHoist (when it was moved to the simplification part of the
> pipeline)
> 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
between :)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170407/0d672b8f/attachment.html>


More information about the llvm-dev mailing list