[llvm-dev] How to test that GlobalsAA is non unintentionally invalidated
Kristof Beyls via llvm-dev
llvm-dev at lists.llvm.org
Fri Apr 7 11:34:47 PDT 2017
On 7 Apr 2017, at 12:09, Elovikov, Andrei via llvm-dev <llvm-dev at lists.llvm.org<mailto: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 LICM:
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?
I added a somewhat similar test, with similar intentions as part of https://reviews.llvm.org/D19806, committed in http://llvm.org/viewvc/llvm-project?view=revision&revision=268370. That test didn't get touched in the 10 months it has been in tree, so it seems to me that testing it like this has a reasonable chance of highlighting accidentally dropping GlobalsAA. Maybe just adding a simple loop that should be optimized by LICM to the same test file (test/Transforms/PhaseOrdering/globalaa-retained.ll) might be all what's needed?
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the llvm-dev