1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-01 16:33:37 +01:00
llvm-mirror/test/Transforms/GVN/2007-07-26-InterlockingLoops.ll
Duncan Sands 617030ad18 Teach InstructionSimplify about phi nodes. I chose to have it simply
offload the work to hasConstantValue rather than do something more
complicated (such handling mutually recursive phis) because (1) it is
not clear it is worth it; and (2) if it is worth it, maybe such logic
would be better placed in hasConstantValue.  Adjust some GVN tests
which are now cleaned up much further (eg: all phi nodes are removed).

llvm-svn: 119043
2010-11-14 13:30:18 +00:00

34 lines
798 B
LLVM

; RUN: opt < %s -basicaa -gvn -S | FileCheck %s
@last = external global [65 x i32*]
define i32 @NextRootMove(i32 %wtm) {
entry:
%tmp17618 = load i32** getelementptr ([65 x i32*]* @last, i32 0, i32 1), align 4
; CHECK: entry:
; CHECK-NEXT: %tmp17618 = load
; CHECK-NOT: load
; CHECK-NOT: phi
br label %cond_true116
cond_true116:
br i1 false, label %cond_true128, label %cond_true145
cond_true128:
%tmp17625 = load i32** getelementptr ([65 x i32*]* @last, i32 0, i32 1), align 4
br i1 false, label %bb98.backedge, label %return.loopexit
bb98.backedge:
br label %cond_true116
cond_true145:
%tmp17631 = load i32** getelementptr ([65 x i32*]* @last, i32 0, i32 1), align 4
br i1 false, label %bb98.backedge, label %return.loopexit
return.loopexit:
br label %return
return:
ret i32 0
}