Factor code for testing whether replacing one value with another

preserves LCSSA form out of ScalarEvolution and into the LoopInfo
class.  Use it to check that SimplifyInstruction simplifications
are not breaking LCSSA form.  Fixes PR8622.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119727 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Duncan Sands
2010-11-18 19:59:41 +00:00
parent 707120047e
commit d0c6f3dafd
5 changed files with 72 additions and 37 deletions
@@ -0,0 +1,28 @@
; RUN: opt < %s -loop-unswitch
; PR8622
@g_38 = external global i32, align 4
define void @func_67(i32 %p_68.coerce) nounwind {
entry:
br i1 true, label %for.end12, label %bb.nph
bb.nph: ; preds = %entry
%g_38.promoted = load i32* @g_38
br label %for.body
for.body: ; preds = %for.cond, %bb.nph
%tobool.i = icmp eq i32 %p_68.coerce, 1
%xor4.i = xor i32 %p_68.coerce, 1
%call1 = select i1 %tobool.i, i32 0, i32 %xor4.i
br label %for.cond
for.cond: ; preds = %for.body
br i1 true, label %for.cond.for.end12_crit_edge, label %for.body
for.cond.for.end12_crit_edge: ; preds = %for.cond
store i32 %call1, i32* @g_38
br label %for.end12
for.end12: ; preds = %for.cond.for.end12_crit_edge, %entry
ret void
}