mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 19:23:23 +01:00
9477970d8d
Summary: In LICM, CFG could be changed in splitPredecessorsOfLoopExit(), which update only DT and LoopInfo. Therefore, we should preserve only DT and LoopInfo specifically, instead of all analyses that depend on the CFG (setPreservesCFG()). This change should fix PR37323. Reviewers: uabelho, davide, dberlin, Ka-Ka Reviewed By: dberlin Subscribers: mzolotukhin, bjope, mcrosier, llvm-commits Differential Revision: https://reviews.llvm.org/D46775 llvm-svn: 333198
32 lines
1.2 KiB
LLVM
32 lines
1.2 KiB
LLVM
;RUN: opt -verify-dom-info -loop-simplify -postdomtree -licm -adce -verify-loop-info -S -o - %s | FileCheck %s
|
|
;RUN: opt -verify-dom-info -passes='loop-simplify,require<postdomtree>,require<opt-remark-emit>,loop(licm),function(adce)' -S -o - %s | FileCheck %s
|
|
|
|
target triple = "x86_64-unknown-linux-gnu"
|
|
|
|
@c = external global i16, align 1
|
|
|
|
;Make sure this test do not crash while accessing PostDomTree which is not
|
|
;preserved in LICM.
|
|
;
|
|
;CHECK-LABEL: fn1()
|
|
;CHECK-LABEL: for.cond.loopexit.split.loop.exit
|
|
;CHECK-LABEL: for.cond.loopexit.split.loop.exit1
|
|
define void @fn1() {
|
|
entry:
|
|
br label %for.cond
|
|
|
|
for.cond: ; preds = %if.end, %for.cond1, %entry
|
|
%0 = phi i16 [ undef, %entry ], [ ptrtoint (i16* @c to i16), %if.end ], [ %.mux, %for.cond1 ]
|
|
br i1 undef, label %for.cond1, label %for.end8
|
|
|
|
for.cond1: ; preds = %if.end, %for.cond
|
|
%.mux = select i1 undef, i16 undef, i16 ptrtoint (i16* @c to i16)
|
|
br i1 undef, label %for.cond, label %if.end
|
|
|
|
if.end: ; preds = %for.cond1
|
|
br i1 undef, label %for.cond, label %for.cond1
|
|
|
|
for.end8: ; preds = %for.cond
|
|
ret void
|
|
}
|