[PATCH] D46775: [LICM] Preserve DT and LoopInfo specifically

Jun Bum Lim via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu May 17 09:41:41 PDT 2018


junbuml added inline comments.


================
Comment at: test/Transforms/LICM/pr37323.ll:1-2
+;RUN: opt -loop-simplify -postdomtree -licm -adce -S -o - %s | FileCheck %s
+;RUN: opt -passes='loop-simplify,require<postdomtree>,require<opt-remark-emit>,loop(licm),function(adce)' -S -o - %s | FileCheck %s
+
----------------
mzolotukhin wrote:
> junbuml wrote:
> > mzolotukhin wrote:
> > > By the way, do we have something like `-verify-dom-tree` for PostDT? It would be cleaner to explicitly verify postdom tree here than calling ADCE and hoping it crashes.
> > The same tag (-verify-dom-info) seem to cover PostDT's verifyAnalysis as well.  Using -verify-dom-info, I confirmed that this test crash in PostDT's verifyAnalysis without this change.
> Thanks for checking! Also, speaking of reducing the test case further- can we get rid of `-loop-simplify` (i.e. replace the test with the output of `loop-simplify`) and `-adce`?
Without this patch, I tried to reproduce the crash in this test case without -loop-simplify and -adce. However, we need both to reproduce the crash.  If we remove -loop-simplify and put passes just like "-postdomtree -licm -adce", then the PDT executed before LICM will be invalidated (not preserved) after "Canonicalize natural loops".  Therefore, we cannot reproduce the crash because the postdom will be re-executed before ADCE. Please see the pass order for "-postdomtree -licm -adce" : 
 
      Post-Dominator Tree Construction     <-- execute postdom
      Dominator Tree Construction
      Natural Loop Information
      Canonicalize natural loops           <-- postdom is invalidated and not preserved
      LCSSA Verifier
      Loop-Closed SSA Form Pass
      Basic Alias Analysis (stateless AA impl)
      Function Alias Analysis Results
      Scalar Evolution Analysis
      Loop Pass Manager
        Loop Invariant Code Motion
      Post-Dominator Tree Construction    <--- re-execute postdom
      Aggressive Dead Code Elimination    <--- cannot reproduce the crash

We should make the postdom executed after "Canonicalize natural loops".

Even with -verify-loop-info, after licm, we still need a pass which requires postdom (e.g., adce) to verify postdom. Otherwise, PostDT's verifyAnalysis wont be invoked. 



https://reviews.llvm.org/D46775





More information about the llvm-commits mailing list