You've already forked linux-packaging-mono
Imported Upstream version 5.18.0.167
Former-commit-id: 289509151e0fee68a1b591a20c9f109c3c789d3a
This commit is contained in:
parent
e19d552987
commit
b084638f15
@ -1,19 +0,0 @@
|
||||
; CFG Simplification is making a loop dead, then changing the add into:
|
||||
;
|
||||
; %V1 = add int %V1, 1
|
||||
;
|
||||
; Which is not valid SSA
|
||||
;
|
||||
; RUN: opt < %s -simplifycfg | llvm-dis
|
||||
|
||||
define void @test() {
|
||||
; <label>:0
|
||||
br i1 true, label %end, label %Loop
|
||||
Loop: ; preds = %Loop, %0
|
||||
%V = phi i32 [ 0, %0 ], [ %V1, %Loop ] ; <i32> [#uses=1]
|
||||
%V1 = add i32 %V, 1 ; <i32> [#uses=1]
|
||||
br label %Loop
|
||||
end: ; preds = %0
|
||||
ret void
|
||||
}
|
||||
|
@ -1,13 +0,0 @@
|
||||
; RUN: opt < %s -simplifycfg
|
||||
|
||||
define i32 @test(i32 %A, i32 %B, i1 %cond) {
|
||||
J:
|
||||
%C = add i32 %A, 12 ; <i32> [#uses=3]
|
||||
br i1 %cond, label %L, label %L
|
||||
L: ; preds = %J, %J
|
||||
%Q = phi i32 [ %C, %J ], [ %C, %J ] ; <i32> [#uses=1]
|
||||
%D = add i32 %C, %B ; <i32> [#uses=1]
|
||||
%E = add i32 %Q, %D ; <i32> [#uses=1]
|
||||
ret i32 %E
|
||||
}
|
||||
|
@ -1,17 +0,0 @@
|
||||
; RUN: opt < %s -simplifycfg -disable-output
|
||||
|
||||
define void @test(i32* %ldo, i1 %c, i1 %d) {
|
||||
bb9:
|
||||
br i1 %c, label %bb11, label %bb10
|
||||
bb10: ; preds = %bb9
|
||||
br label %bb11
|
||||
bb11: ; preds = %bb10, %bb9
|
||||
%reg330 = phi i32* [ null, %bb10 ], [ %ldo, %bb9 ] ; <i32*> [#uses=1]
|
||||
br label %bb20
|
||||
bb20: ; preds = %bb20, %bb11
|
||||
store i32* %reg330, i32** null
|
||||
br i1 %d, label %bb20, label %done
|
||||
done: ; preds = %bb20
|
||||
ret void
|
||||
}
|
||||
|
@ -1,16 +0,0 @@
|
||||
; Do not remove the invoke!
|
||||
;
|
||||
; RUN: opt < %s -simplifycfg -disable-output
|
||||
|
||||
define i32 @test() personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
|
||||
%A = invoke i32 @test( )
|
||||
to label %Ret unwind label %Ret2 ; <i32> [#uses=1]
|
||||
Ret: ; preds = %0
|
||||
ret i32 %A
|
||||
Ret2: ; preds = %0
|
||||
%val = landingpad { i8*, i32 }
|
||||
catch i8* null
|
||||
ret i32 undef
|
||||
}
|
||||
|
||||
declare i32 @__gxx_personality_v0(...)
|
@ -1,22 +0,0 @@
|
||||
; This test checks to make sure that 'br X, Dest, Dest' is folded into
|
||||
; 'br Dest'
|
||||
|
||||
; RUN: opt < %s -simplifycfg -S | FileCheck %s
|
||||
|
||||
declare void @noop()
|
||||
|
||||
; CHECK-NOT: br i1 %c2
|
||||
define i32 @test(i1 %c1, i1 %c2) {
|
||||
call void @noop( )
|
||||
br i1 %c1, label %A, label %Y
|
||||
A: ; preds = %0
|
||||
call void @noop( )
|
||||
br i1 %c2, label %X, label %X
|
||||
X: ; preds = %Y, %A, %A
|
||||
call void @noop( )
|
||||
ret i32 0
|
||||
Y: ; preds = %0
|
||||
call void @noop( )
|
||||
br label %X
|
||||
}
|
||||
|
@ -1,27 +0,0 @@
|
||||
; This test checks to make sure that 'br X, Dest, Dest' is folded into
|
||||
; 'br Dest'. This can only happen after the 'Z' block is eliminated. This is
|
||||
; due to the fact that the SimplifyCFG function does not use
|
||||
; the ConstantFoldTerminator function.
|
||||
|
||||
; RUN: opt < %s -simplifycfg -S | FileCheck %s
|
||||
|
||||
; CHECK-NOT: br i1 %c2
|
||||
|
||||
declare void @noop()
|
||||
|
||||
define i32 @test(i1 %c1, i1 %c2) {
|
||||
call void @noop( )
|
||||
br i1 %c1, label %A, label %Y
|
||||
A: ; preds = %0
|
||||
call void @noop( )
|
||||
br i1 %c2, label %Z, label %X
|
||||
Z: ; preds = %A
|
||||
br label %X
|
||||
X: ; preds = %Y, %Z, %A
|
||||
call void @noop( )
|
||||
ret i32 0
|
||||
Y: ; preds = %0
|
||||
call void @noop( )
|
||||
br label %X
|
||||
}
|
||||
|
@ -1,57 +0,0 @@
|
||||
; RUN: opt < %s -simplifycfg -S | FileCheck %s
|
||||
|
||||
; CHECK-NOT: switch
|
||||
%llvm.dbg.anchor.type = type { i32, i32 }
|
||||
%llvm.dbg.compile_unit.type = type { i32, { }*, i32, i8*, i8*, i8*, i1, i1, i8* }
|
||||
|
||||
@llvm.dbg.compile_units = linkonce constant %llvm.dbg.anchor.type { i32 458752, i32 17 }, section "llvm.metadata"
|
||||
|
||||
@.str = internal constant [4 x i8] c"a.c\00", section "llvm.metadata" ; <[4 x i8]*> [#uses=1]
|
||||
@.str1 = internal constant [6 x i8] c"/tmp/\00", section "llvm.metadata" ; <[6 x i8]*> [#uses=1]
|
||||
@.str2 = internal constant [55 x i8] c"4.2.1 (Based on Apple Inc. build 5636) (LLVM build 00)\00", section "llvm.metadata" ; <[55 x i8]*> [#uses=1]
|
||||
@llvm.dbg.compile_unit = internal constant %llvm.dbg.compile_unit.type { i32 458769, { }* bitcast (%llvm.dbg.anchor.type* @llvm.dbg.compile_units to { }*), i32 1, i8* getelementptr ([4 x i8], [4 x i8]* @.str, i32 0, i32 0), i8* getelementptr ([6 x i8], [6 x i8]* @.str1, i32 0, i32 0), i8* getelementptr ([55 x i8], [55 x i8]* @.str2, i32 0, i32 0), i1 true, i1 false, i8* null }, section "llvm.metadata" ; <%llvm.dbg.compile_unit.type*> [#uses=1]
|
||||
|
||||
declare void @llvm.dbg.stoppoint(i32, i32, { }*) nounwind
|
||||
|
||||
; Test folding all to same dest
|
||||
define i32 @test3(i1 %C) {
|
||||
br i1 %C, label %Start, label %TheDest
|
||||
Start: ; preds = %0
|
||||
call void @llvm.dbg.stoppoint(i32 5, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
|
||||
switch i32 3, label %TheDest [
|
||||
i32 0, label %TheDest
|
||||
i32 1, label %TheDest
|
||||
i32 2, label %TheDest
|
||||
i32 5, label %TheDest
|
||||
]
|
||||
TheDest: ; preds = %Start, %Start, %Start, %Start, %Start, %0
|
||||
ret i32 1234
|
||||
}
|
||||
|
||||
; Test folding switch -> branch
|
||||
define i32 @test4(i32 %C) {
|
||||
switch i32 %C, label %L1 [
|
||||
i32 0, label %L2
|
||||
]
|
||||
L1: ; preds = %0
|
||||
call void @llvm.dbg.stoppoint(i32 5, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
|
||||
ret i32 0
|
||||
L2: ; preds = %0
|
||||
call void @llvm.dbg.stoppoint(i32 5, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
|
||||
ret i32 1
|
||||
}
|
||||
|
||||
; Can fold into a cond branch!
|
||||
define i32 @test5(i32 %C) {
|
||||
switch i32 %C, label %L1 [
|
||||
i32 0, label %L2
|
||||
i32 123, label %L1
|
||||
]
|
||||
L1: ; preds = %0, %0
|
||||
call void @llvm.dbg.stoppoint(i32 5, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
|
||||
ret i32 0
|
||||
L2: ; preds = %0
|
||||
call void @llvm.dbg.stoppoint(i32 5, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
|
||||
ret i32 1
|
||||
}
|
||||
|
@ -1,104 +0,0 @@
|
||||
; NOTE: Assertions have been autogenerated by update_test_checks.py
|
||||
; RUN: opt < %s -simplifycfg -S | FileCheck %s
|
||||
|
||||
; Test normal folding
|
||||
define i32 @test1() {
|
||||
; CHECK-LABEL: @test1(
|
||||
; CHECK-NEXT: TheDest:
|
||||
; CHECK-NEXT: ret i32 1234
|
||||
;
|
||||
switch i32 5, label %Default [
|
||||
i32 0, label %Foo
|
||||
i32 1, label %Bar
|
||||
i32 2, label %Baz
|
||||
i32 5, label %TheDest
|
||||
]
|
||||
Default:
|
||||
ret i32 -1
|
||||
Foo:
|
||||
ret i32 -2
|
||||
Bar:
|
||||
ret i32 -3
|
||||
Baz:
|
||||
ret i32 -4
|
||||
TheDest:
|
||||
ret i32 1234
|
||||
}
|
||||
|
||||
; Test folding to default dest
|
||||
define i32 @test2() {
|
||||
; CHECK-LABEL: @test2(
|
||||
; CHECK-NEXT: Default:
|
||||
; CHECK-NEXT: ret i32 1234
|
||||
;
|
||||
switch i32 3, label %Default [
|
||||
i32 0, label %Foo
|
||||
i32 1, label %Bar
|
||||
i32 2, label %Baz
|
||||
i32 5, label %TheDest
|
||||
]
|
||||
Default:
|
||||
ret i32 1234
|
||||
Foo:
|
||||
ret i32 -2
|
||||
Bar:
|
||||
ret i32 -5
|
||||
Baz:
|
||||
ret i32 -6
|
||||
TheDest:
|
||||
ret i32 -8
|
||||
}
|
||||
|
||||
; Test folding all to same dest
|
||||
define i32 @test3(i1 %C) {
|
||||
; CHECK-LABEL: @test3(
|
||||
; CHECK-NEXT: TheDest:
|
||||
; CHECK-NEXT: ret i32 1234
|
||||
;
|
||||
br i1 %C, label %Start, label %TheDest
|
||||
Start: ; preds = %0
|
||||
switch i32 3, label %TheDest [
|
||||
i32 0, label %TheDest
|
||||
i32 1, label %TheDest
|
||||
i32 2, label %TheDest
|
||||
i32 5, label %TheDest
|
||||
]
|
||||
TheDest:
|
||||
ret i32 1234
|
||||
}
|
||||
|
||||
; Test folding switch -> branch
|
||||
define i32 @test4(i32 %C) {
|
||||
; CHECK-LABEL: @test4(
|
||||
; CHECK-NEXT: L1:
|
||||
; CHECK-NEXT: [[COND:%.*]] = icmp eq i32 %C, 0
|
||||
; CHECK-NEXT: [[DOT:%.*]] = select i1 [[COND]], i32 1, i32 0
|
||||
; CHECK-NEXT: ret i32 [[DOT]]
|
||||
;
|
||||
switch i32 %C, label %L1 [
|
||||
i32 0, label %L2
|
||||
]
|
||||
L1:
|
||||
ret i32 0
|
||||
L2:
|
||||
ret i32 1
|
||||
}
|
||||
|
||||
; Can fold into a cond branch!
|
||||
define i32 @test5(i32 %C) {
|
||||
; CHECK-LABEL: @test5(
|
||||
; CHECK-NEXT: L1:
|
||||
; CHECK-NEXT: [[COND:%.*]] = icmp eq i32 %C, 0
|
||||
; CHECK-NEXT: [[DOT:%.*]] = select i1 [[COND]], i32 1, i32 0
|
||||
; CHECK-NEXT: ret i32 [[DOT]]
|
||||
;
|
||||
switch i32 %C, label %L1 [
|
||||
i32 0, label %L2
|
||||
i32 123, label %L1
|
||||
]
|
||||
L1:
|
||||
ret i32 0
|
||||
L2:
|
||||
ret i32 1
|
||||
}
|
||||
|
@ -1,40 +0,0 @@
|
||||
; RUN: opt < %s -simplifycfg -disable-output
|
||||
|
||||
define void @symhash_add() {
|
||||
entry:
|
||||
br i1 undef, label %then.0, label %UnifiedReturnBlock
|
||||
then.0: ; preds = %entry
|
||||
br i1 undef, label %loopentry.2, label %loopentry.1.preheader
|
||||
loopentry.1.preheader: ; preds = %then.0
|
||||
br label %loopentry.1.outer
|
||||
loopentry.1.outer: ; preds = %loopexit.1, %loopentry.1.preheader
|
||||
br label %loopentry.1
|
||||
loopentry.1: ; preds = %endif.1, %then.4, %then.3, %then.1, %loopentry.1.outer
|
||||
br i1 undef, label %loopexit.1, label %no_exit.1
|
||||
no_exit.1: ; preds = %loopentry.1
|
||||
br i1 undef, label %then.1, label %else.0
|
||||
then.1: ; preds = %no_exit.1
|
||||
br label %loopentry.1
|
||||
else.0: ; preds = %no_exit.1
|
||||
br i1 undef, label %then.2, label %else.1
|
||||
then.2: ; preds = %else.0
|
||||
br i1 undef, label %then.3, label %endif.1
|
||||
then.3: ; preds = %then.2
|
||||
br label %loopentry.1
|
||||
else.1: ; preds = %else.0
|
||||
br i1 undef, label %endif.1, label %then.4
|
||||
then.4: ; preds = %else.1
|
||||
br label %loopentry.1
|
||||
endif.1: ; preds = %else.1, %then.2
|
||||
br label %loopentry.1
|
||||
loopexit.1: ; preds = %loopentry.1
|
||||
br i1 undef, label %loopentry.1.outer, label %loopentry.2
|
||||
loopentry.2: ; preds = %no_exit.2, %loopexit.1, %then.0
|
||||
br i1 undef, label %loopexit.2, label %no_exit.2
|
||||
no_exit.2: ; preds = %loopentry.2
|
||||
br label %loopentry.2
|
||||
loopexit.2: ; preds = %loopentry.2
|
||||
ret void
|
||||
UnifiedReturnBlock: ; preds = %entry
|
||||
ret void
|
||||
}
|
@ -1,95 +0,0 @@
|
||||
; RUN: opt < %s -simplifycfg -disable-output
|
||||
; PR584
|
||||
@g_38098584 = external global i32 ; <i32*> [#uses=1]
|
||||
@g_60187400 = external global i32 ; <i32*> [#uses=1]
|
||||
@g_59182229 = external global i32 ; <i32*> [#uses=2]
|
||||
|
||||
define i32 @_Z13func_26556482h(i8 %l_88173906) {
|
||||
entry:
|
||||
%tmp.1 = bitcast i8 %l_88173906 to i8 ; <i8> [#uses=2]
|
||||
%tmp.3 = icmp eq i8 %l_88173906, 0 ; <i1> [#uses=1]
|
||||
br i1 %tmp.3, label %else.0, label %then.0
|
||||
then.0: ; preds = %entry
|
||||
%tmp.5 = icmp eq i8 %l_88173906, 0 ; <i1> [#uses=1]
|
||||
br i1 %tmp.5, label %else.1, label %then.1
|
||||
then.1: ; preds = %then.0
|
||||
br label %return
|
||||
else.1: ; preds = %then.0
|
||||
br label %loopentry.0
|
||||
loopentry.0: ; preds = %no_exit.0, %else.1
|
||||
%i.0.1 = phi i32 [ 0, %else.1 ], [ %inc.0, %no_exit.0 ] ; <i32> [#uses=2]
|
||||
%tmp.9 = icmp sgt i32 %i.0.1, 99 ; <i1> [#uses=1]
|
||||
br i1 %tmp.9, label %endif.0, label %no_exit.0
|
||||
no_exit.0: ; preds = %loopentry.0
|
||||
%inc.0 = add i32 %i.0.1, 1 ; <i32> [#uses=1]
|
||||
br label %loopentry.0
|
||||
else.0: ; preds = %entry
|
||||
%tmp.12 = sext i8 %tmp.1 to i32 ; <i32> [#uses=1]
|
||||
br label %return
|
||||
endif.0: ; preds = %loopentry.0
|
||||
%tmp.14 = sext i8 %tmp.1 to i32 ; <i32> [#uses=1]
|
||||
%tmp.16 = zext i8 %l_88173906 to i32 ; <i32> [#uses=1]
|
||||
%tmp.17 = icmp sgt i32 %tmp.14, %tmp.16 ; <i1> [#uses=1]
|
||||
%tmp.19 = load i32, i32* @g_59182229 ; <i32> [#uses=2]
|
||||
br i1 %tmp.17, label %cond_true, label %cond_false
|
||||
cond_true: ; preds = %endif.0
|
||||
%tmp.20 = icmp ne i32 %tmp.19, 1 ; <i1> [#uses=1]
|
||||
br label %cond_continue
|
||||
cond_false: ; preds = %endif.0
|
||||
%tmp.22 = icmp ne i32 %tmp.19, 0 ; <i1> [#uses=1]
|
||||
br label %cond_continue
|
||||
cond_continue: ; preds = %cond_false, %cond_true
|
||||
%mem_tmp.0 = phi i1 [ %tmp.20, %cond_true ], [ %tmp.22, %cond_false ] ; <i1> [#uses=1]
|
||||
br i1 %mem_tmp.0, label %then.2, label %else.2
|
||||
then.2: ; preds = %cond_continue
|
||||
%tmp.25 = zext i8 %l_88173906 to i32 ; <i32> [#uses=1]
|
||||
br label %return
|
||||
else.2: ; preds = %cond_continue
|
||||
br label %loopentry.1
|
||||
loopentry.1: ; preds = %endif.3, %else.2
|
||||
%i.1.1 = phi i32 [ 0, %else.2 ], [ %inc.3, %endif.3 ] ; <i32> [#uses=2]
|
||||
%i.3.2 = phi i32 [ undef, %else.2 ], [ %i.3.0, %endif.3 ] ; <i32> [#uses=2]
|
||||
%l_88173906_addr.1 = phi i8 [ %l_88173906, %else.2 ], [ %l_88173906_addr.0, %endif.3 ] ; <i8> [#uses=3]
|
||||
%tmp.29 = icmp sgt i32 %i.1.1, 99 ; <i1> [#uses=1]
|
||||
br i1 %tmp.29, label %endif.2, label %no_exit.1
|
||||
no_exit.1: ; preds = %loopentry.1
|
||||
%tmp.30 = load i32, i32* @g_38098584 ; <i32> [#uses=1]
|
||||
%tmp.31 = icmp eq i32 %tmp.30, 0 ; <i1> [#uses=1]
|
||||
br i1 %tmp.31, label %else.3, label %then.3
|
||||
then.3: ; preds = %no_exit.1
|
||||
br label %endif.3
|
||||
else.3: ; preds = %no_exit.1
|
||||
br i1 false, label %else.4, label %then.4
|
||||
then.4: ; preds = %else.3
|
||||
br label %endif.3
|
||||
else.4: ; preds = %else.3
|
||||
br i1 false, label %else.5, label %then.5
|
||||
then.5: ; preds = %else.4
|
||||
store i32 -1004318825, i32* @g_59182229
|
||||
br label %return
|
||||
else.5: ; preds = %else.4
|
||||
br label %loopentry.3
|
||||
loopentry.3: ; preds = %then.7, %else.5
|
||||
%i.3.3 = phi i32 [ 0, %else.5 ], [ %inc.2, %then.7 ] ; <i32> [#uses=3]
|
||||
%tmp.55 = icmp sgt i32 %i.3.3, 99 ; <i1> [#uses=1]
|
||||
br i1 %tmp.55, label %endif.3, label %no_exit.3
|
||||
no_exit.3: ; preds = %loopentry.3
|
||||
%tmp.57 = icmp eq i8 %l_88173906_addr.1, 0 ; <i1> [#uses=1]
|
||||
br i1 %tmp.57, label %else.7, label %then.7
|
||||
then.7: ; preds = %no_exit.3
|
||||
store i32 16239, i32* @g_60187400
|
||||
%inc.2 = add i32 %i.3.3, 1 ; <i32> [#uses=1]
|
||||
br label %loopentry.3
|
||||
else.7: ; preds = %no_exit.3
|
||||
br label %return
|
||||
endif.3: ; preds = %loopentry.3, %then.4, %then.3
|
||||
%i.3.0 = phi i32 [ %i.3.2, %then.3 ], [ %i.3.2, %then.4 ], [ %i.3.3, %loopentry.3 ] ; <i32> [#uses=1]
|
||||
%l_88173906_addr.0 = phi i8 [ 100, %then.3 ], [ %l_88173906_addr.1, %then.4 ], [ %l_88173906_addr.1, %loopentry.3 ] ; <i8> [#uses=1]
|
||||
%inc.3 = add i32 %i.1.1, 1 ; <i32> [#uses=1]
|
||||
br label %loopentry.1
|
||||
endif.2: ; preds = %loopentry.1
|
||||
br label %return
|
||||
return: ; preds = %endif.2, %else.7, %then.5, %then.2, %else.0, %then.1
|
||||
%result.0 = phi i32 [ 1624650671, %then.1 ], [ %tmp.25, %then.2 ], [ 3379, %then.5 ], [ 52410, %else.7 ], [ -1526438411, %endif.2 ], [ %tmp.12, %else.0 ] ; <i32> [#uses=1]
|
||||
ret i32 %result.0
|
||||
}
|
@ -1,71 +0,0 @@
|
||||
; RUN: opt < %s -simplifycfg -disable-output
|
||||
; END.
|
||||
|
||||
define void @main() {
|
||||
entry:
|
||||
%tmp.14.i19 = icmp eq i32 0, 2 ; <i1> [#uses=1]
|
||||
br i1 %tmp.14.i19, label %endif.1.i20, label %read_min.exit
|
||||
endif.1.i20: ; preds = %entry
|
||||
%tmp.9.i.i = icmp eq i8* null, null ; <i1> [#uses=1]
|
||||
br i1 %tmp.9.i.i, label %then.i12.i, label %then.i.i
|
||||
then.i.i: ; preds = %endif.1.i20
|
||||
ret void
|
||||
then.i12.i: ; preds = %endif.1.i20
|
||||
%tmp.9.i4.i = icmp eq i8* null, null ; <i1> [#uses=1]
|
||||
br i1 %tmp.9.i4.i, label %endif.2.i33, label %then.i5.i
|
||||
then.i5.i: ; preds = %then.i12.i
|
||||
ret void
|
||||
endif.2.i33: ; preds = %then.i12.i
|
||||
br i1 false, label %loopexit.0.i40, label %no_exit.0.i35
|
||||
no_exit.0.i35: ; preds = %no_exit.0.i35, %endif.2.i33
|
||||
%tmp.130.i = icmp slt i32 0, 0 ; <i1> [#uses=1]
|
||||
br i1 %tmp.130.i, label %loopexit.0.i40.loopexit, label %no_exit.0.i35
|
||||
loopexit.0.i40.loopexit: ; preds = %no_exit.0.i35
|
||||
br label %loopexit.0.i40
|
||||
loopexit.0.i40: ; preds = %loopexit.0.i40.loopexit, %endif.2.i33
|
||||
%tmp.341.i = icmp eq i32 0, 0 ; <i1> [#uses=1]
|
||||
br i1 %tmp.341.i, label %loopentry.1.i, label %read_min.exit
|
||||
loopentry.1.i: ; preds = %loopexit.0.i40
|
||||
%tmp.347.i = icmp sgt i32 0, 0 ; <i1> [#uses=1]
|
||||
br i1 %tmp.347.i, label %no_exit.1.i41, label %loopexit.2.i44
|
||||
no_exit.1.i41: ; preds = %endif.5.i, %loopentry.1.i
|
||||
%indvar.i42 = phi i32 [ %indvar.next.i, %endif.5.i ], [ 0, %loopentry.1.i ] ; <i32> [#uses=1]
|
||||
%tmp.355.i = icmp eq i32 0, 3 ; <i1> [#uses=1]
|
||||
br i1 %tmp.355.i, label %endif.5.i, label %read_min.exit
|
||||
endif.5.i: ; preds = %no_exit.1.i41
|
||||
%tmp.34773.i = icmp sgt i32 0, 0 ; <i1> [#uses=1]
|
||||
%indvar.next.i = add i32 %indvar.i42, 1 ; <i32> [#uses=1]
|
||||
br i1 %tmp.34773.i, label %no_exit.1.i41, label %loopexit.1.i.loopexit
|
||||
loopexit.1.i.loopexit: ; preds = %endif.5.i
|
||||
ret void
|
||||
loopexit.2.i44: ; preds = %loopentry.1.i
|
||||
ret void
|
||||
read_min.exit: ; preds = %no_exit.1.i41, %loopexit.0.i40, %entry
|
||||
%tmp.23 = icmp eq i32 0, 0 ; <i1> [#uses=1]
|
||||
br i1 %tmp.23, label %endif.1, label %then.1
|
||||
then.1: ; preds = %read_min.exit
|
||||
br i1 false, label %endif.0.i, label %then.0.i
|
||||
then.0.i: ; preds = %then.1
|
||||
br i1 false, label %endif.1.i, label %then.1.i
|
||||
endif.0.i: ; preds = %then.1
|
||||
br i1 false, label %endif.1.i, label %then.1.i
|
||||
then.1.i: ; preds = %endif.0.i, %then.0.i
|
||||
br i1 false, label %getfree.exit, label %then.2.i
|
||||
endif.1.i: ; preds = %endif.0.i, %then.0.i
|
||||
br i1 false, label %getfree.exit, label %then.2.i
|
||||
then.2.i: ; preds = %endif.1.i, %then.1.i
|
||||
ret void
|
||||
getfree.exit: ; preds = %endif.1.i, %then.1.i
|
||||
ret void
|
||||
endif.1: ; preds = %read_min.exit
|
||||
%tmp.27.i = getelementptr i32, i32* null, i32 0 ; <i32*> [#uses=0]
|
||||
br i1 false, label %loopexit.0.i15, label %no_exit.0.i14
|
||||
no_exit.0.i14: ; preds = %endif.1
|
||||
ret void
|
||||
loopexit.0.i15: ; preds = %endif.1
|
||||
br i1 false, label %primal_start_artificial.exit, label %no_exit.1.i16
|
||||
no_exit.1.i16: ; preds = %no_exit.1.i16, %loopexit.0.i15
|
||||
br i1 false, label %primal_start_artificial.exit, label %no_exit.1.i16
|
||||
primal_start_artificial.exit: ; preds = %no_exit.1.i16, %loopexit.0.i15
|
||||
ret void
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
; RUN: opt < %s -simplifycfg -disable-output
|
||||
|
||||
define i1 @foo() personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
|
||||
%X = invoke i1 @foo( )
|
||||
to label %N unwind label %F ; <i1> [#uses=1]
|
||||
F: ; preds = %0
|
||||
%val = landingpad { i8*, i32 }
|
||||
catch i8* null
|
||||
ret i1 false
|
||||
N: ; preds = %0
|
||||
br i1 %X, label %A, label %B
|
||||
A: ; preds = %N
|
||||
ret i1 true
|
||||
B: ; preds = %N
|
||||
ret i1 true
|
||||
}
|
||||
|
||||
declare i32 @__gxx_personality_v0(...)
|
@ -1,123 +0,0 @@
|
||||
; Make sure this doesn't turn into an infinite loop
|
||||
|
||||
; RUN: opt < %s -simplifycfg -constprop -simplifycfg | llvm-dis | FileCheck %s
|
||||
|
||||
%struct.anon = type { i32, i32, i32, i32, [1024 x i8] }
|
||||
@_zero_ = external global %struct.anon* ; <%struct.anon**> [#uses=2]
|
||||
@_one_ = external global %struct.anon* ; <%struct.anon**> [#uses=4]
|
||||
@str = internal constant [4 x i8] c"%d\0A\00" ; <[4 x i8]*> [#uses=0]
|
||||
|
||||
declare i32 @bc_compare(%struct.anon*, %struct.anon*)
|
||||
|
||||
declare void @free_num(%struct.anon**)
|
||||
|
||||
declare %struct.anon* @copy_num(%struct.anon*)
|
||||
|
||||
declare void @init_num(%struct.anon**)
|
||||
|
||||
declare %struct.anon* @new_num(i32, i32)
|
||||
|
||||
declare void @int2num(%struct.anon**, i32)
|
||||
|
||||
declare void @bc_multiply(%struct.anon*, %struct.anon*, %struct.anon**, i32)
|
||||
|
||||
declare void @bc_raise(%struct.anon*, %struct.anon*, %struct.anon**, i32)
|
||||
|
||||
declare i32 @bc_divide(%struct.anon*, %struct.anon*, %struct.anon**, i32)
|
||||
|
||||
declare void @bc_add(%struct.anon*, %struct.anon*, %struct.anon**)
|
||||
|
||||
declare i32 @_do_compare(%struct.anon*, %struct.anon*, i32, i32)
|
||||
|
||||
declare i32 @printf(i8*, ...)
|
||||
|
||||
define i32 @bc_sqrt(%struct.anon** %num, i32 %scale) {
|
||||
entry:
|
||||
%guess = alloca %struct.anon* ; <%struct.anon**> [#uses=7]
|
||||
%guess1 = alloca %struct.anon* ; <%struct.anon**> [#uses=7]
|
||||
%point5 = alloca %struct.anon* ; <%struct.anon**> [#uses=3]
|
||||
%tmp = load %struct.anon*, %struct.anon** %num ; <%struct.anon*> [#uses=1]
|
||||
%tmp1 = load %struct.anon*, %struct.anon** @_zero_ ; <%struct.anon*> [#uses=1]
|
||||
%tmp.upgrd.1 = call i32 @bc_compare( %struct.anon* %tmp, %struct.anon* %tmp1 ) ; <i32> [#uses=2]
|
||||
%tmp.upgrd.2 = icmp slt i32 %tmp.upgrd.1, 0 ; <i1> [#uses=1]
|
||||
br i1 %tmp.upgrd.2, label %cond_true, label %cond_false
|
||||
cond_true: ; preds = %entry
|
||||
ret i32 0
|
||||
cond_false: ; preds = %entry
|
||||
%tmp5 = icmp eq i32 %tmp.upgrd.1, 0 ; <i1> [#uses=1]
|
||||
br i1 %tmp5, label %cond_true6, label %cond_next13
|
||||
cond_true6: ; preds = %cond_false
|
||||
call void @free_num( %struct.anon** %num )
|
||||
%tmp8 = load %struct.anon*, %struct.anon** @_zero_ ; <%struct.anon*> [#uses=1]
|
||||
%tmp9 = call %struct.anon* @copy_num( %struct.anon* %tmp8 ) ; <%struct.anon*> [#uses=1]
|
||||
store %struct.anon* %tmp9, %struct.anon** %num
|
||||
ret i32 1
|
||||
cond_next13: ; preds = %cond_false
|
||||
%tmp15 = load %struct.anon*, %struct.anon** %num ; <%struct.anon*> [#uses=1]
|
||||
%tmp16 = load %struct.anon*, %struct.anon** @_one_ ; <%struct.anon*> [#uses=1]
|
||||
%tmp17 = call i32 @bc_compare( %struct.anon* %tmp15, %struct.anon* %tmp16 ) ; <i32> [#uses=2]
|
||||
%tmp19 = icmp eq i32 %tmp17, 0 ; <i1> [#uses=1]
|
||||
br i1 %tmp19, label %cond_true20, label %cond_next27
|
||||
cond_true20: ; preds = %cond_next13
|
||||
call void @free_num( %struct.anon** %num )
|
||||
%tmp22 = load %struct.anon*, %struct.anon** @_one_ ; <%struct.anon*> [#uses=1]
|
||||
%tmp23 = call %struct.anon* @copy_num( %struct.anon* %tmp22 ) ; <%struct.anon*> [#uses=1]
|
||||
store %struct.anon* %tmp23, %struct.anon** %num
|
||||
ret i32 1
|
||||
cond_next27: ; preds = %cond_next13
|
||||
%tmp29 = load %struct.anon*, %struct.anon** %num ; <%struct.anon*> [#uses=1]
|
||||
%tmp30 = getelementptr %struct.anon, %struct.anon* %tmp29, i32 0, i32 2 ; <i32*> [#uses=1]
|
||||
%tmp31 = load i32, i32* %tmp30 ; <i32> [#uses=2]
|
||||
%tmp33 = icmp sge i32 %tmp31, %scale ; <i1> [#uses=1]
|
||||
%max = select i1 %tmp33, i32 %tmp31, i32 %scale ; <i32> [#uses=4]
|
||||
%tmp35 = add i32 %max, 2 ; <i32> [#uses=0]
|
||||
call void @init_num( %struct.anon** %guess )
|
||||
call void @init_num( %struct.anon** %guess1 )
|
||||
%tmp36 = call %struct.anon* @new_num( i32 1, i32 1 ) ; <%struct.anon*> [#uses=2]
|
||||
store %struct.anon* %tmp36, %struct.anon** %point5
|
||||
%tmp.upgrd.3 = getelementptr %struct.anon, %struct.anon* %tmp36, i32 0, i32 4, i32 1 ; <i8*> [#uses=1]
|
||||
store i8 5, i8* %tmp.upgrd.3
|
||||
%tmp39 = icmp slt i32 %tmp17, 0 ; <i1> [#uses=1]
|
||||
br i1 %tmp39, label %cond_true40, label %cond_false43
|
||||
cond_true40: ; preds = %cond_next27
|
||||
%tmp41 = load %struct.anon*, %struct.anon** @_one_ ; <%struct.anon*> [#uses=1]
|
||||
%tmp42 = call %struct.anon* @copy_num( %struct.anon* %tmp41 ) ; <%struct.anon*> [#uses=1]
|
||||
store %struct.anon* %tmp42, %struct.anon** %guess
|
||||
br label %bb80.outer
|
||||
cond_false43: ; preds = %cond_next27
|
||||
call void @int2num( %struct.anon** %guess, i32 10 )
|
||||
%tmp45 = load %struct.anon*, %struct.anon** %num ; <%struct.anon*> [#uses=1]
|
||||
%tmp46 = getelementptr %struct.anon, %struct.anon* %tmp45, i32 0, i32 1 ; <i32*> [#uses=1]
|
||||
%tmp47 = load i32, i32* %tmp46 ; <i32> [#uses=1]
|
||||
call void @int2num( %struct.anon** %guess1, i32 %tmp47 )
|
||||
%tmp48 = load %struct.anon*, %struct.anon** %guess1 ; <%struct.anon*> [#uses=1]
|
||||
%tmp49 = load %struct.anon*, %struct.anon** %point5 ; <%struct.anon*> [#uses=1]
|
||||
call void @bc_multiply( %struct.anon* %tmp48, %struct.anon* %tmp49, %struct.anon** %guess1, i32 %max )
|
||||
%tmp51 = load %struct.anon*, %struct.anon** %guess1 ; <%struct.anon*> [#uses=1]
|
||||
%tmp52 = getelementptr %struct.anon, %struct.anon* %tmp51, i32 0, i32 2 ; <i32*> [#uses=1]
|
||||
store i32 0, i32* %tmp52
|
||||
%tmp53 = load %struct.anon*, %struct.anon** %guess ; <%struct.anon*> [#uses=1]
|
||||
%tmp54 = load %struct.anon*, %struct.anon** %guess1 ; <%struct.anon*> [#uses=1]
|
||||
call void @bc_raise( %struct.anon* %tmp53, %struct.anon* %tmp54, %struct.anon** %guess, i32 %max )
|
||||
br label %bb80.outer
|
||||
bb80.outer: ; preds = %cond_true83, %cond_false43, %cond_true40
|
||||
%done.1.ph = phi i32 [ 1, %cond_true83 ], [ 0, %cond_true40 ], [ 0, %cond_false43 ] ; <i32> [#uses=1]
|
||||
br label %bb80
|
||||
bb80: ; preds = %cond_true83, %bb80.outer
|
||||
%tmp82 = icmp eq i32 %done.1.ph, 0 ; <i1> [#uses=1]
|
||||
br i1 %tmp82, label %cond_true83, label %bb86
|
||||
cond_true83: ; preds = %bb80
|
||||
%tmp71 = call i32 @_do_compare( %struct.anon* null, %struct.anon* null, i32 0, i32 1 ) ; <i32> [#uses=1]
|
||||
%tmp76 = icmp eq i32 %tmp71, 0 ; <i1> [#uses=1]
|
||||
br i1 %tmp76, label %bb80.outer, label %bb80
|
||||
; CHECK: bb86
|
||||
bb86: ; preds = %bb80
|
||||
call void @free_num( %struct.anon** %num )
|
||||
%tmp88 = load %struct.anon*, %struct.anon** %guess ; <%struct.anon*> [#uses=1]
|
||||
%tmp89 = load %struct.anon*, %struct.anon** @_one_ ; <%struct.anon*> [#uses=1]
|
||||
%tmp92 = call i32 @bc_divide( %struct.anon* %tmp88, %struct.anon* %tmp89, %struct.anon** %num, i32 %max ) ; <i32> [#uses=0]
|
||||
call void @free_num( %struct.anon** %guess )
|
||||
call void @free_num( %struct.anon** %guess1 )
|
||||
call void @free_num( %struct.anon** %point5 )
|
||||
ret i32 1
|
||||
}
|
@ -1,27 +0,0 @@
|
||||
; RUN: opt < %s -simplifycfg -disable-output
|
||||
|
||||
define void @polnel_() {
|
||||
entry:
|
||||
%tmp595 = icmp slt i32 0, 0 ; <i1> [#uses=4]
|
||||
br i1 %tmp595, label %bb148.critedge, label %cond_true40
|
||||
bb36: ; preds = %bb43
|
||||
br i1 %tmp595, label %bb43, label %cond_true40
|
||||
cond_true40: ; preds = %bb46, %cond_true40, %bb36, %entry
|
||||
%tmp397 = icmp sgt i32 0, 0 ; <i1> [#uses=1]
|
||||
br i1 %tmp397, label %bb43, label %cond_true40
|
||||
bb43: ; preds = %cond_true40, %bb36
|
||||
br i1 false, label %bb53, label %bb36
|
||||
bb46: ; preds = %bb53
|
||||
br i1 %tmp595, label %bb53, label %cond_true40
|
||||
bb53: ; preds = %bb46, %bb43
|
||||
br i1 false, label %bb102, label %bb46
|
||||
bb92.preheader: ; preds = %bb102
|
||||
ret void
|
||||
bb102: ; preds = %bb53
|
||||
br i1 %tmp595, label %bb148, label %bb92.preheader
|
||||
bb148.critedge: ; preds = %entry
|
||||
ret void
|
||||
bb148: ; preds = %bb102
|
||||
ret void
|
||||
}
|
||||
|
@ -1,413 +0,0 @@
|
||||
; RUN: opt < %s -simplifycfg -disable-output
|
||||
; END.
|
||||
|
||||
define void @main(i32 %c) {
|
||||
entry:
|
||||
%tmp.9 = icmp eq i32 %c, 2 ; <i1> [#uses=1]
|
||||
br i1 %tmp.9, label %endif.0, label %then.0
|
||||
then.0: ; preds = %entry
|
||||
ret void
|
||||
endif.0: ; preds = %entry
|
||||
br i1 false, label %then.1, label %endif.1
|
||||
then.1: ; preds = %endif.0
|
||||
ret void
|
||||
endif.1: ; preds = %endif.0
|
||||
br i1 false, label %then.2, label %endif.2
|
||||
then.2: ; preds = %endif.1
|
||||
ret void
|
||||
endif.2: ; preds = %endif.1
|
||||
br i1 false, label %then.3, label %loopentry.0
|
||||
then.3: ; preds = %endif.2
|
||||
ret void
|
||||
loopentry.0: ; preds = %endif.2
|
||||
br i1 false, label %no_exit.0.preheader, label %loopexit.0
|
||||
no_exit.0.preheader: ; preds = %loopentry.0
|
||||
br label %no_exit.0
|
||||
no_exit.0: ; preds = %endif.4, %no_exit.0.preheader
|
||||
br i1 false, label %then.4, label %endif.4
|
||||
then.4: ; preds = %no_exit.0
|
||||
ret void
|
||||
endif.4: ; preds = %no_exit.0
|
||||
br i1 false, label %no_exit.0, label %loopexit.0.loopexit
|
||||
loopexit.0.loopexit: ; preds = %endif.4
|
||||
br label %loopexit.0
|
||||
loopexit.0: ; preds = %loopexit.0.loopexit, %loopentry.0
|
||||
br i1 false, label %then.5, label %loopentry.1
|
||||
then.5: ; preds = %loopexit.0
|
||||
ret void
|
||||
loopentry.1: ; preds = %loopexit.0
|
||||
%tmp.143 = icmp sgt i32 0, 0 ; <i1> [#uses=4]
|
||||
br i1 %tmp.143, label %no_exit.1.preheader, label %loopexit.1
|
||||
no_exit.1.preheader: ; preds = %loopentry.1
|
||||
br label %no_exit.1
|
||||
no_exit.1: ; preds = %endif.6, %no_exit.1.preheader
|
||||
br i1 false, label %then.6, label %shortcirc_next.3
|
||||
shortcirc_next.3: ; preds = %no_exit.1
|
||||
br i1 false, label %then.6, label %shortcirc_next.4
|
||||
shortcirc_next.4: ; preds = %shortcirc_next.3
|
||||
br i1 false, label %then.6, label %endif.6
|
||||
then.6: ; preds = %shortcirc_next.4, %shortcirc_next.3, %no_exit.1
|
||||
ret void
|
||||
endif.6: ; preds = %shortcirc_next.4
|
||||
br i1 false, label %no_exit.1, label %loopexit.1.loopexit
|
||||
loopexit.1.loopexit: ; preds = %endif.6
|
||||
br label %loopexit.1
|
||||
loopexit.1: ; preds = %loopexit.1.loopexit, %loopentry.1
|
||||
br i1 false, label %then.i, label %loopentry.0.i
|
||||
then.i: ; preds = %loopexit.1
|
||||
ret void
|
||||
loopentry.0.i: ; preds = %loopexit.1
|
||||
br i1 %tmp.143, label %no_exit.0.i.preheader, label %readvector.exit
|
||||
no_exit.0.i.preheader: ; preds = %loopentry.0.i
|
||||
br label %no_exit.0.i
|
||||
no_exit.0.i: ; preds = %loopexit.1.i, %no_exit.0.i.preheader
|
||||
br i1 false, label %no_exit.1.i.preheader, label %loopexit.1.i
|
||||
no_exit.1.i.preheader: ; preds = %no_exit.0.i
|
||||
br label %no_exit.1.i
|
||||
no_exit.1.i: ; preds = %loopexit.2.i, %no_exit.1.i.preheader
|
||||
br i1 false, label %no_exit.2.i.preheader, label %loopexit.2.i
|
||||
no_exit.2.i.preheader: ; preds = %no_exit.1.i
|
||||
br label %no_exit.2.i
|
||||
no_exit.2.i: ; preds = %no_exit.2.i, %no_exit.2.i.preheader
|
||||
br i1 false, label %no_exit.2.i, label %loopexit.2.i.loopexit
|
||||
loopexit.2.i.loopexit: ; preds = %no_exit.2.i
|
||||
br label %loopexit.2.i
|
||||
loopexit.2.i: ; preds = %loopexit.2.i.loopexit, %no_exit.1.i
|
||||
br i1 false, label %no_exit.1.i, label %loopexit.1.i.loopexit
|
||||
loopexit.1.i.loopexit: ; preds = %loopexit.2.i
|
||||
br label %loopexit.1.i
|
||||
loopexit.1.i: ; preds = %loopexit.1.i.loopexit, %no_exit.0.i
|
||||
br i1 false, label %no_exit.0.i, label %readvector.exit.loopexit
|
||||
readvector.exit.loopexit: ; preds = %loopexit.1.i
|
||||
br label %readvector.exit
|
||||
readvector.exit: ; preds = %readvector.exit.loopexit, %loopentry.0.i
|
||||
br i1 %tmp.143, label %loopentry.1.preheader.i, label %loopexit.0.i
|
||||
loopentry.1.preheader.i: ; preds = %readvector.exit
|
||||
br label %loopentry.1.outer.i
|
||||
loopentry.1.outer.i: ; preds = %loopexit.1.i110, %loopentry.1.preheader.i
|
||||
br label %loopentry.1.i85
|
||||
loopentry.1.i85.loopexit: ; preds = %hamming.exit16.i
|
||||
br label %loopentry.1.i85
|
||||
loopentry.1.i85: ; preds = %loopentry.1.i85.loopexit, %loopentry.1.outer.i
|
||||
br i1 false, label %no_exit.1.preheader.i, label %loopexit.1.i110.loopexit1
|
||||
no_exit.1.preheader.i: ; preds = %loopentry.1.i85
|
||||
br label %no_exit.1.i87
|
||||
no_exit.1.i87: ; preds = %then.1.i107, %no_exit.1.preheader.i
|
||||
br i1 false, label %no_exit.i.i101.preheader, label %hamming.exit.i104
|
||||
no_exit.i.i101.preheader: ; preds = %no_exit.1.i87
|
||||
br label %no_exit.i.i101
|
||||
no_exit.i.i101: ; preds = %no_exit.i.i101, %no_exit.i.i101.preheader
|
||||
br i1 false, label %no_exit.i.i101, label %hamming.exit.i104.loopexit
|
||||
hamming.exit.i104.loopexit: ; preds = %no_exit.i.i101
|
||||
br label %hamming.exit.i104
|
||||
hamming.exit.i104: ; preds = %hamming.exit.i104.loopexit, %no_exit.1.i87
|
||||
br i1 false, label %no_exit.i15.i.preheader, label %hamming.exit16.i
|
||||
no_exit.i15.i.preheader: ; preds = %hamming.exit.i104
|
||||
br label %no_exit.i15.i
|
||||
no_exit.i15.i: ; preds = %no_exit.i15.i, %no_exit.i15.i.preheader
|
||||
br i1 false, label %no_exit.i15.i, label %hamming.exit16.i.loopexit
|
||||
hamming.exit16.i.loopexit: ; preds = %no_exit.i15.i
|
||||
br label %hamming.exit16.i
|
||||
hamming.exit16.i: ; preds = %hamming.exit16.i.loopexit, %hamming.exit.i104
|
||||
br i1 false, label %loopentry.1.i85.loopexit, label %then.1.i107
|
||||
then.1.i107: ; preds = %hamming.exit16.i
|
||||
br i1 false, label %no_exit.1.i87, label %loopexit.1.i110.loopexit
|
||||
loopexit.1.i110.loopexit: ; preds = %then.1.i107
|
||||
br label %loopexit.1.i110
|
||||
loopexit.1.i110.loopexit1: ; preds = %loopentry.1.i85
|
||||
br label %loopexit.1.i110
|
||||
loopexit.1.i110: ; preds = %loopexit.1.i110.loopexit1, %loopexit.1.i110.loopexit
|
||||
br i1 false, label %loopentry.1.outer.i, label %loopexit.0.i.loopexit
|
||||
loopexit.0.i.loopexit: ; preds = %loopexit.1.i110
|
||||
br label %loopexit.0.i
|
||||
loopexit.0.i: ; preds = %loopexit.0.i.loopexit, %readvector.exit
|
||||
br i1 false, label %UnifiedReturnBlock.i113, label %then.2.i112
|
||||
then.2.i112: ; preds = %loopexit.0.i
|
||||
br label %checkham.exit
|
||||
UnifiedReturnBlock.i113: ; preds = %loopexit.0.i
|
||||
br label %checkham.exit
|
||||
checkham.exit: ; preds = %UnifiedReturnBlock.i113, %then.2.i112
|
||||
br i1 false, label %loopentry.1.i14.preheader, label %loopentry.3.i.preheader
|
||||
loopentry.1.i14.preheader: ; preds = %checkham.exit
|
||||
br label %loopentry.1.i14
|
||||
loopentry.1.i14: ; preds = %loopexit.1.i18, %loopentry.1.i14.preheader
|
||||
br i1 false, label %no_exit.1.i16.preheader, label %loopexit.1.i18
|
||||
no_exit.1.i16.preheader: ; preds = %loopentry.1.i14
|
||||
br label %no_exit.1.i16
|
||||
no_exit.1.i16: ; preds = %no_exit.1.i16, %no_exit.1.i16.preheader
|
||||
br i1 false, label %no_exit.1.i16, label %loopexit.1.i18.loopexit
|
||||
loopexit.1.i18.loopexit: ; preds = %no_exit.1.i16
|
||||
br label %loopexit.1.i18
|
||||
loopexit.1.i18: ; preds = %loopexit.1.i18.loopexit, %loopentry.1.i14
|
||||
br i1 false, label %loopentry.1.i14, label %loopentry.3.i.loopexit
|
||||
loopentry.3.i.loopexit: ; preds = %loopexit.1.i18
|
||||
br label %loopentry.3.i.preheader
|
||||
loopentry.3.i.preheader: ; preds = %loopentry.3.i.loopexit, %checkham.exit
|
||||
br label %loopentry.3.i
|
||||
loopentry.3.i: ; preds = %endif.1.i, %loopentry.3.i.preheader
|
||||
br i1 false, label %loopentry.4.i.preheader, label %endif.1.i
|
||||
loopentry.4.i.preheader: ; preds = %loopentry.3.i
|
||||
br label %loopentry.4.i
|
||||
loopentry.4.i: ; preds = %loopexit.4.i, %loopentry.4.i.preheader
|
||||
br i1 false, label %no_exit.4.i.preheader, label %loopexit.4.i
|
||||
no_exit.4.i.preheader: ; preds = %loopentry.4.i
|
||||
br label %no_exit.4.i
|
||||
no_exit.4.i: ; preds = %no_exit.4.i.backedge, %no_exit.4.i.preheader
|
||||
br i1 false, label %endif.0.i, label %else.i
|
||||
else.i: ; preds = %no_exit.4.i
|
||||
br i1 false, label %no_exit.4.i.backedge, label %loopexit.4.i.loopexit
|
||||
no_exit.4.i.backedge: ; preds = %endif.0.i, %else.i
|
||||
br label %no_exit.4.i
|
||||
endif.0.i: ; preds = %no_exit.4.i
|
||||
br i1 false, label %no_exit.4.i.backedge, label %loopexit.4.i.loopexit
|
||||
loopexit.4.i.loopexit: ; preds = %endif.0.i, %else.i
|
||||
br label %loopexit.4.i
|
||||
loopexit.4.i: ; preds = %loopexit.4.i.loopexit, %loopentry.4.i
|
||||
br i1 false, label %loopentry.4.i, label %endif.1.i.loopexit
|
||||
endif.1.i.loopexit: ; preds = %loopexit.4.i
|
||||
br label %endif.1.i
|
||||
endif.1.i: ; preds = %endif.1.i.loopexit, %loopentry.3.i
|
||||
%exitcond = icmp eq i32 0, 10 ; <i1> [#uses=1]
|
||||
br i1 %exitcond, label %generateT.exit, label %loopentry.3.i
|
||||
generateT.exit: ; preds = %endif.1.i
|
||||
br i1 false, label %then.0.i, label %loopentry.1.i30.preheader
|
||||
then.0.i: ; preds = %generateT.exit
|
||||
ret void
|
||||
loopentry.1.i30.loopexit: ; preds = %loopexit.3.i
|
||||
br label %loopentry.1.i30.backedge
|
||||
loopentry.1.i30.preheader: ; preds = %generateT.exit
|
||||
br label %loopentry.1.i30
|
||||
loopentry.1.i30: ; preds = %loopentry.1.i30.backedge, %loopentry.1.i30.preheader
|
||||
br i1 %tmp.143, label %no_exit.0.i31.preheader, label %loopentry.1.i30.backedge
|
||||
loopentry.1.i30.backedge: ; preds = %loopentry.1.i30, %loopentry.1.i30.loopexit
|
||||
br label %loopentry.1.i30
|
||||
no_exit.0.i31.preheader: ; preds = %loopentry.1.i30
|
||||
br label %no_exit.0.i31
|
||||
no_exit.0.i31: ; preds = %loopexit.3.i, %no_exit.0.i31.preheader
|
||||
br i1 false, label %then.1.i, label %else.0.i
|
||||
then.1.i: ; preds = %no_exit.0.i31
|
||||
br i1 undef, label %then.0.i29, label %loopentry.0.i31
|
||||
then.0.i29: ; preds = %then.1.i
|
||||
unreachable
|
||||
loopentry.0.i31: ; preds = %then.1.i
|
||||
br i1 false, label %no_exit.0.i38.preheader, label %loopentry.1.i.preheader
|
||||
no_exit.0.i38.preheader: ; preds = %loopentry.0.i31
|
||||
br label %no_exit.0.i38
|
||||
no_exit.0.i38: ; preds = %no_exit.0.i38, %no_exit.0.i38.preheader
|
||||
br i1 undef, label %no_exit.0.i38, label %loopentry.1.i.preheader.loopexit
|
||||
loopentry.1.i.preheader.loopexit: ; preds = %no_exit.0.i38
|
||||
br label %loopentry.1.i.preheader
|
||||
loopentry.1.i.preheader: ; preds = %loopentry.1.i.preheader.loopexit, %loopentry.0.i31
|
||||
br label %loopentry.1.i
|
||||
loopentry.1.i: ; preds = %endif.2.i, %loopentry.1.i.preheader
|
||||
br i1 undef, label %loopentry.2.i39.preheader, label %loopexit.1.i79.loopexit2
|
||||
loopentry.2.i39.preheader: ; preds = %loopentry.1.i
|
||||
br label %loopentry.2.i39
|
||||
loopentry.2.i39: ; preds = %loopexit.5.i77, %loopentry.2.i39.preheader
|
||||
br i1 false, label %loopentry.3.i40.preheader, label %hamming.exit.i71
|
||||
loopentry.3.i40.preheader: ; preds = %loopentry.2.i39
|
||||
br label %loopentry.3.i40
|
||||
loopentry.3.i40: ; preds = %loopexit.3.i51, %loopentry.3.i40.preheader
|
||||
br i1 false, label %no_exit.3.preheader.i42, label %loopexit.3.i51
|
||||
no_exit.3.preheader.i42: ; preds = %loopentry.3.i40
|
||||
br label %no_exit.3.i49
|
||||
no_exit.3.i49: ; preds = %no_exit.3.i49, %no_exit.3.preheader.i42
|
||||
br i1 undef, label %no_exit.3.i49, label %loopexit.3.i51.loopexit
|
||||
loopexit.3.i51.loopexit: ; preds = %no_exit.3.i49
|
||||
br label %loopexit.3.i51
|
||||
loopexit.3.i51: ; preds = %loopexit.3.i51.loopexit, %loopentry.3.i40
|
||||
br i1 undef, label %loopentry.3.i40, label %loopentry.4.i52
|
||||
loopentry.4.i52: ; preds = %loopexit.3.i51
|
||||
br i1 false, label %no_exit.4.i54.preheader, label %hamming.exit.i71
|
||||
no_exit.4.i54.preheader: ; preds = %loopentry.4.i52
|
||||
br label %no_exit.4.i54
|
||||
no_exit.4.i54: ; preds = %no_exit.4.backedge.i, %no_exit.4.i54.preheader
|
||||
br i1 undef, label %then.1.i55, label %endif.1.i56
|
||||
then.1.i55: ; preds = %no_exit.4.i54
|
||||
br i1 undef, label %no_exit.4.backedge.i, label %loopexit.4.i57
|
||||
no_exit.4.backedge.i: ; preds = %endif.1.i56, %then.1.i55
|
||||
br label %no_exit.4.i54
|
||||
endif.1.i56: ; preds = %no_exit.4.i54
|
||||
br i1 undef, label %no_exit.4.backedge.i, label %loopexit.4.i57
|
||||
loopexit.4.i57: ; preds = %endif.1.i56, %then.1.i55
|
||||
br i1 false, label %no_exit.i.i69.preheader, label %hamming.exit.i71
|
||||
no_exit.i.i69.preheader: ; preds = %loopexit.4.i57
|
||||
br label %no_exit.i.i69
|
||||
no_exit.i.i69: ; preds = %no_exit.i.i69, %no_exit.i.i69.preheader
|
||||
br i1 undef, label %no_exit.i.i69, label %hamming.exit.i71.loopexit
|
||||
hamming.exit.i71.loopexit: ; preds = %no_exit.i.i69
|
||||
br label %hamming.exit.i71
|
||||
hamming.exit.i71: ; preds = %hamming.exit.i71.loopexit, %loopexit.4.i57, %loopentry.4.i52, %loopentry.2.i39
|
||||
br i1 undef, label %endif.2.i, label %loopentry.5.i72
|
||||
loopentry.5.i72: ; preds = %hamming.exit.i71
|
||||
br i1 false, label %shortcirc_next.i74.preheader, label %loopexit.5.i77
|
||||
shortcirc_next.i74.preheader: ; preds = %loopentry.5.i72
|
||||
br label %shortcirc_next.i74
|
||||
shortcirc_next.i74: ; preds = %no_exit.5.i76, %shortcirc_next.i74.preheader
|
||||
br i1 undef, label %no_exit.5.i76, label %loopexit.5.i77.loopexit
|
||||
no_exit.5.i76: ; preds = %shortcirc_next.i74
|
||||
br i1 undef, label %shortcirc_next.i74, label %loopexit.5.i77.loopexit
|
||||
loopexit.5.i77.loopexit: ; preds = %no_exit.5.i76, %shortcirc_next.i74
|
||||
br label %loopexit.5.i77
|
||||
loopexit.5.i77: ; preds = %loopexit.5.i77.loopexit, %loopentry.5.i72
|
||||
br i1 undef, label %loopentry.2.i39, label %loopexit.1.i79.loopexit
|
||||
endif.2.i: ; preds = %hamming.exit.i71
|
||||
br label %loopentry.1.i
|
||||
loopexit.1.i79.loopexit: ; preds = %loopexit.5.i77
|
||||
br label %loopexit.1.i79
|
||||
loopexit.1.i79.loopexit2: ; preds = %loopentry.1.i
|
||||
br label %loopexit.1.i79
|
||||
loopexit.1.i79: ; preds = %loopexit.1.i79.loopexit2, %loopexit.1.i79.loopexit
|
||||
br i1 undef, label %then.3.i, label %loopentry.6.i80
|
||||
then.3.i: ; preds = %loopexit.1.i79
|
||||
br i1 false, label %no_exit.6.i82.preheader, label %run.exit
|
||||
loopentry.6.i80: ; preds = %loopexit.1.i79
|
||||
br i1 false, label %no_exit.6.i82.preheader, label %run.exit
|
||||
no_exit.6.i82.preheader: ; preds = %loopentry.6.i80, %then.3.i
|
||||
br label %no_exit.6.i82
|
||||
no_exit.6.i82: ; preds = %no_exit.6.i82, %no_exit.6.i82.preheader
|
||||
br i1 undef, label %no_exit.6.i82, label %run.exit.loopexit
|
||||
run.exit.loopexit: ; preds = %no_exit.6.i82
|
||||
br label %run.exit
|
||||
run.exit: ; preds = %run.exit.loopexit, %loopentry.6.i80, %then.3.i
|
||||
br i1 false, label %no_exit.1.i36.preheader, label %loopentry.3.i37
|
||||
else.0.i: ; preds = %no_exit.0.i31
|
||||
br i1 false, label %then.0.i4, label %loopentry.0.i6
|
||||
then.0.i4: ; preds = %else.0.i
|
||||
unreachable
|
||||
loopentry.0.i6: ; preds = %else.0.i
|
||||
br i1 false, label %no_exit.0.i8.preheader, label %loopentry.2.i.preheader
|
||||
no_exit.0.i8.preheader: ; preds = %loopentry.0.i6
|
||||
br label %no_exit.0.i8
|
||||
no_exit.0.i8: ; preds = %no_exit.0.i8, %no_exit.0.i8.preheader
|
||||
br i1 false, label %no_exit.0.i8, label %loopentry.2.i.preheader.loopexit
|
||||
loopentry.2.i.preheader.loopexit: ; preds = %no_exit.0.i8
|
||||
br label %loopentry.2.i.preheader
|
||||
loopentry.2.i.preheader: ; preds = %loopentry.2.i.preheader.loopexit, %loopentry.0.i6
|
||||
br label %loopentry.2.i
|
||||
loopentry.2.i: ; preds = %endif.3.i19, %loopentry.2.i.preheader
|
||||
br i1 false, label %loopentry.3.i10.preheader, label %loopentry.4.i15
|
||||
loopentry.3.i10.preheader: ; preds = %loopentry.2.i
|
||||
br label %loopentry.3.i10
|
||||
loopentry.3.i10: ; preds = %loopexit.3.i14, %loopentry.3.i10.preheader
|
||||
br i1 false, label %no_exit.3.preheader.i, label %loopexit.3.i14
|
||||
no_exit.3.preheader.i: ; preds = %loopentry.3.i10
|
||||
br label %no_exit.3.i12
|
||||
no_exit.3.i12: ; preds = %no_exit.3.i12, %no_exit.3.preheader.i
|
||||
br i1 false, label %no_exit.3.i12, label %loopexit.3.i14.loopexit
|
||||
loopexit.3.i14.loopexit: ; preds = %no_exit.3.i12
|
||||
br label %loopexit.3.i14
|
||||
loopexit.3.i14: ; preds = %loopexit.3.i14.loopexit, %loopentry.3.i10
|
||||
br i1 false, label %loopentry.3.i10, label %loopentry.4.i15.loopexit
|
||||
loopentry.4.i15.loopexit: ; preds = %loopexit.3.i14
|
||||
br label %loopentry.4.i15
|
||||
loopentry.4.i15: ; preds = %loopentry.4.i15.loopexit, %loopentry.2.i
|
||||
br i1 false, label %loopentry.5.outer.i.preheader, label %loopentry.7.i
|
||||
loopentry.5.outer.i.preheader: ; preds = %loopentry.4.i15
|
||||
br label %loopentry.5.outer.i
|
||||
loopentry.5.outer.i: ; preds = %loopexit.5.i, %loopentry.5.outer.i.preheader
|
||||
br label %loopentry.5.i
|
||||
loopentry.5.i: ; preds = %endif.1.i18, %loopentry.5.outer.i
|
||||
br i1 false, label %no_exit.5.i.preheader, label %loopexit.5.i.loopexit3
|
||||
no_exit.5.i.preheader: ; preds = %loopentry.5.i
|
||||
br label %no_exit.5.i
|
||||
no_exit.5.i: ; preds = %then.2.i, %no_exit.5.i.preheader
|
||||
br i1 false, label %loopentry.6.i, label %endif.1.i18
|
||||
loopentry.6.i: ; preds = %no_exit.5.i
|
||||
br i1 false, label %no_exit.6.preheader.i, label %loopexit.6.i
|
||||
no_exit.6.preheader.i: ; preds = %loopentry.6.i
|
||||
br label %no_exit.6.i
|
||||
no_exit.6.i: ; preds = %no_exit.6.i, %no_exit.6.preheader.i
|
||||
br i1 false, label %no_exit.6.i, label %loopexit.6.i.loopexit
|
||||
loopexit.6.i.loopexit: ; preds = %no_exit.6.i
|
||||
br label %loopexit.6.i
|
||||
loopexit.6.i: ; preds = %loopexit.6.i.loopexit, %loopentry.6.i
|
||||
br i1 false, label %then.2.i, label %endif.1.i18
|
||||
then.2.i: ; preds = %loopexit.6.i
|
||||
br i1 false, label %no_exit.5.i, label %loopexit.5.i.loopexit
|
||||
endif.1.i18: ; preds = %loopexit.6.i, %no_exit.5.i
|
||||
br label %loopentry.5.i
|
||||
loopexit.5.i.loopexit: ; preds = %then.2.i
|
||||
br label %loopexit.5.i
|
||||
loopexit.5.i.loopexit3: ; preds = %loopentry.5.i
|
||||
br label %loopexit.5.i
|
||||
loopexit.5.i: ; preds = %loopexit.5.i.loopexit3, %loopexit.5.i.loopexit
|
||||
br i1 false, label %loopentry.5.outer.i, label %loopentry.7.i.loopexit
|
||||
loopentry.7.i.loopexit: ; preds = %loopexit.5.i
|
||||
br label %loopentry.7.i
|
||||
loopentry.7.i: ; preds = %loopentry.7.i.loopexit, %loopentry.4.i15
|
||||
br i1 false, label %no_exit.7.i.preheader, label %hamming.exit.i
|
||||
no_exit.7.i.preheader: ; preds = %loopentry.7.i
|
||||
br label %no_exit.7.i
|
||||
no_exit.7.i: ; preds = %no_exit.7.i, %no_exit.7.i.preheader
|
||||
br i1 false, label %no_exit.7.i, label %loopexit.7.i
|
||||
loopexit.7.i: ; preds = %no_exit.7.i
|
||||
br i1 false, label %no_exit.i.i.preheader, label %hamming.exit.i
|
||||
no_exit.i.i.preheader: ; preds = %loopexit.7.i
|
||||
br label %no_exit.i.i
|
||||
no_exit.i.i: ; preds = %no_exit.i.i, %no_exit.i.i.preheader
|
||||
br i1 false, label %no_exit.i.i, label %hamming.exit.i.loopexit
|
||||
hamming.exit.i.loopexit: ; preds = %no_exit.i.i
|
||||
br label %hamming.exit.i
|
||||
hamming.exit.i: ; preds = %hamming.exit.i.loopexit, %loopexit.7.i, %loopentry.7.i
|
||||
br i1 false, label %endif.3.i19, label %loopentry.8.i
|
||||
loopentry.8.i: ; preds = %hamming.exit.i
|
||||
br i1 false, label %shortcirc_next.i.preheader, label %loopexit.8.i
|
||||
shortcirc_next.i.preheader: ; preds = %loopentry.8.i
|
||||
br label %shortcirc_next.i
|
||||
shortcirc_next.i: ; preds = %no_exit.8.i, %shortcirc_next.i.preheader
|
||||
br i1 false, label %no_exit.8.i, label %loopexit.8.i.loopexit
|
||||
no_exit.8.i: ; preds = %shortcirc_next.i
|
||||
br i1 false, label %shortcirc_next.i, label %loopexit.8.i.loopexit
|
||||
loopexit.8.i.loopexit: ; preds = %no_exit.8.i, %shortcirc_next.i
|
||||
br label %loopexit.8.i
|
||||
loopexit.8.i: ; preds = %loopexit.8.i.loopexit, %loopentry.8.i
|
||||
br i1 false, label %no_exit.9.i.preheader, label %endif.3.i19
|
||||
no_exit.9.i.preheader: ; preds = %loopexit.8.i
|
||||
br label %no_exit.9.i
|
||||
no_exit.9.i: ; preds = %no_exit.9.i, %no_exit.9.i.preheader
|
||||
br i1 false, label %no_exit.9.i, label %endif.3.i19.loopexit
|
||||
endif.3.i19.loopexit: ; preds = %no_exit.9.i
|
||||
br label %endif.3.i19
|
||||
endif.3.i19: ; preds = %endif.3.i19.loopexit, %loopexit.8.i, %hamming.exit.i
|
||||
br i1 false, label %loopentry.2.i, label %loopexit.1.i20
|
||||
loopexit.1.i20: ; preds = %endif.3.i19
|
||||
br i1 false, label %then.4.i, label %UnifiedReturnBlock.i
|
||||
then.4.i: ; preds = %loopexit.1.i20
|
||||
br label %runcont.exit
|
||||
UnifiedReturnBlock.i: ; preds = %loopexit.1.i20
|
||||
br label %runcont.exit
|
||||
runcont.exit: ; preds = %UnifiedReturnBlock.i, %then.4.i
|
||||
br i1 false, label %no_exit.1.i36.preheader, label %loopentry.3.i37
|
||||
no_exit.1.i36.preheader: ; preds = %runcont.exit, %run.exit
|
||||
br label %no_exit.1.i36
|
||||
no_exit.1.i36: ; preds = %no_exit.1.i36, %no_exit.1.i36.preheader
|
||||
br i1 false, label %no_exit.1.i36, label %loopentry.3.i37.loopexit
|
||||
loopentry.3.i37.loopexit: ; preds = %no_exit.1.i36
|
||||
br label %loopentry.3.i37
|
||||
loopentry.3.i37: ; preds = %loopentry.3.i37.loopexit, %runcont.exit, %run.exit
|
||||
br i1 false, label %loopentry.4.i38.preheader, label %loopexit.3.i
|
||||
loopentry.4.i38.preheader: ; preds = %loopentry.3.i37
|
||||
br label %loopentry.4.i38
|
||||
loopentry.4.i38: ; preds = %loopexit.4.i42, %loopentry.4.i38.preheader
|
||||
br i1 false, label %no_exit.3.i.preheader, label %loopexit.4.i42
|
||||
no_exit.3.i.preheader: ; preds = %loopentry.4.i38
|
||||
br label %no_exit.3.i
|
||||
no_exit.3.i: ; preds = %no_exit.3.i.backedge, %no_exit.3.i.preheader
|
||||
br i1 false, label %endif.3.i, label %else.1.i
|
||||
else.1.i: ; preds = %no_exit.3.i
|
||||
br i1 false, label %no_exit.3.i.backedge, label %loopexit.4.i42.loopexit
|
||||
no_exit.3.i.backedge: ; preds = %endif.3.i, %else.1.i
|
||||
br label %no_exit.3.i
|
||||
endif.3.i: ; preds = %no_exit.3.i
|
||||
br i1 false, label %no_exit.3.i.backedge, label %loopexit.4.i42.loopexit
|
||||
loopexit.4.i42.loopexit: ; preds = %endif.3.i, %else.1.i
|
||||
br label %loopexit.4.i42
|
||||
loopexit.4.i42: ; preds = %loopexit.4.i42.loopexit, %loopentry.4.i38
|
||||
br i1 false, label %loopentry.4.i38, label %loopexit.3.i.loopexit
|
||||
loopexit.3.i.loopexit: ; preds = %loopexit.4.i42
|
||||
br label %loopexit.3.i
|
||||
loopexit.3.i: ; preds = %loopexit.3.i.loopexit, %loopentry.3.i37
|
||||
%tmp.13.i155 = icmp slt i32 0, 0 ; <i1> [#uses=1]
|
||||
br i1 %tmp.13.i155, label %no_exit.0.i31, label %loopentry.1.i30.loopexit
|
||||
}
|
@ -1,96 +0,0 @@
|
||||
; RUN: opt < %s -gvn -simplifycfg -disable-output
|
||||
; PR867
|
||||
|
||||
target datalayout = "E-p:32:32"
|
||||
target triple = "powerpc-apple-darwin8"
|
||||
%struct.CUMULATIVE_ARGS = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
|
||||
%struct.eh_status = type opaque
|
||||
%struct.emit_status = type { i32, i32, %struct.rtx_def*, %struct.rtx_def*, %struct.sequence_stack*, i32, %struct.location_t, i32, i8*, %struct.rtx_def** }
|
||||
%struct.expr_status = type { i32, i32, i32, %struct.rtx_def*, %struct.rtx_def*, %struct.rtx_def* }
|
||||
%struct.function = type { %struct.eh_status*, %struct.expr_status*, %struct.emit_status*, %struct.varasm_status*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.function*, i32, i32, i32, i32, %struct.rtx_def*, %struct.CUMULATIVE_ARGS, %struct.rtx_def*, %struct.rtx_def*, %struct.initial_value_struct*, %struct.rtx_def*, %struct.rtx_def*, %struct.rtx_def*, %struct.rtx_def*, %struct.rtx_def*, %struct.rtx_def*, i8, i32, i64, %struct.tree_node*, %struct.tree_node*, %struct.rtx_def*, %struct.varray_head_tag*, %struct.temp_slot*, i32, %struct.var_refs_queue*, i32, i32, %struct.rtvec_def*, %struct.tree_node*, i32, i32, i32, %struct.machine_function*, i32, i32, i8, i8, %struct.language_function*, %struct.rtx_def*, i32, i32, i32, i32, %struct.location_t, %struct.varray_head_tag*, %struct.tree_node*, i8, i8, i8 }
|
||||
%struct.initial_value_struct = type opaque
|
||||
%struct.lang_decl = type opaque
|
||||
%struct.lang_type = type opaque
|
||||
%struct.language_function = type opaque
|
||||
%struct.location_t = type { i8*, i32 }
|
||||
%struct.machine_function = type { i32, i32, i8*, i32, i32 }
|
||||
%struct.rtunion = type { i32 }
|
||||
%struct.rtvec_def = type { i32, [1 x %struct.rtx_def*] }
|
||||
%struct.rtx_def = type { i16, i8, i8, %struct.u }
|
||||
%struct.sequence_stack = type { %struct.rtx_def*, %struct.rtx_def*, %struct.sequence_stack* }
|
||||
%struct.temp_slot = type opaque
|
||||
%struct.tree_common = type { %struct.tree_node*, %struct.tree_node*, %union.tree_ann_d*, i8, i8, i8, i8, i8 }
|
||||
%struct.tree_decl = type { %struct.tree_common, %struct.location_t, i32, %struct.tree_node*, i8, i8, i8, i8, i8, i8, i8, i8, i32, %struct.tree_decl_u1, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.rtx_def*, %struct.tree_decl_u2, %struct.tree_node*, %struct.tree_node*, i64, %struct.lang_decl* }
|
||||
%struct.tree_decl_u1 = type { i64 }
|
||||
%struct.tree_decl_u2 = type { %struct.function* }
|
||||
%struct.tree_node = type { %struct.tree_decl }
|
||||
%struct.tree_type = type { %struct.tree_common, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, i32, i16, i8, i8, i32, %struct.tree_node*, %struct.tree_node*, %struct.rtunion, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, i64, %struct.lang_type* }
|
||||
%struct.u = type { [1 x i64] }
|
||||
%struct.var_refs_queue = type { %struct.rtx_def*, i32, i32, %struct.var_refs_queue* }
|
||||
%struct.varasm_status = type opaque
|
||||
%struct.varray_head_tag = type { i32, i32, i32, i8*, %struct.u }
|
||||
%union.tree_ann_d = type opaque
|
||||
@mode_class = external global [35 x i8] ; <[35 x i8]*> [#uses=3]
|
||||
|
||||
define void @fold_builtin_classify() {
|
||||
entry:
|
||||
%tmp63 = load i32, i32* null ; <i32> [#uses=1]
|
||||
switch i32 %tmp63, label %bb276 [
|
||||
i32 414, label %bb145
|
||||
i32 417, label %bb
|
||||
]
|
||||
bb: ; preds = %entry
|
||||
ret void
|
||||
bb145: ; preds = %entry
|
||||
%tmp146 = load %struct.tree_node*, %struct.tree_node** null ; <%struct.tree_node*> [#uses=1]
|
||||
%tmp148 = getelementptr %struct.tree_node, %struct.tree_node* %tmp146, i32 0, i32 0, i32 0, i32 1 ; <%struct.tree_node**> [#uses=1]
|
||||
%tmp149 = load %struct.tree_node*, %struct.tree_node** %tmp148 ; <%struct.tree_node*> [#uses=1]
|
||||
%tmp150 = bitcast %struct.tree_node* %tmp149 to %struct.tree_type* ; <%struct.tree_type*> [#uses=1]
|
||||
%tmp151 = getelementptr %struct.tree_type, %struct.tree_type* %tmp150, i32 0, i32 6 ; <i16*> [#uses=1]
|
||||
%tmp151.upgrd.1 = bitcast i16* %tmp151 to i32* ; <i32*> [#uses=1]
|
||||
%tmp152 = load i32, i32* %tmp151.upgrd.1 ; <i32> [#uses=1]
|
||||
%tmp154 = lshr i32 %tmp152, 16 ; <i32> [#uses=1]
|
||||
%tmp154.mask = and i32 %tmp154, 127 ; <i32> [#uses=1]
|
||||
%gep.upgrd.2 = zext i32 %tmp154.mask to i64 ; <i64> [#uses=1]
|
||||
%tmp155 = getelementptr [35 x i8], [35 x i8]* @mode_class, i32 0, i64 %gep.upgrd.2 ; <i8*> [#uses=1]
|
||||
%tmp156 = load i8, i8* %tmp155 ; <i8> [#uses=1]
|
||||
%tmp157 = icmp eq i8 %tmp156, 4 ; <i1> [#uses=1]
|
||||
br i1 %tmp157, label %cond_next241, label %cond_true158
|
||||
cond_true158: ; preds = %bb145
|
||||
%tmp172 = load %struct.tree_node*, %struct.tree_node** null ; <%struct.tree_node*> [#uses=1]
|
||||
%tmp174 = getelementptr %struct.tree_node, %struct.tree_node* %tmp172, i32 0, i32 0, i32 0, i32 1 ; <%struct.tree_node**> [#uses=1]
|
||||
%tmp175 = load %struct.tree_node*, %struct.tree_node** %tmp174 ; <%struct.tree_node*> [#uses=1]
|
||||
%tmp176 = bitcast %struct.tree_node* %tmp175 to %struct.tree_type* ; <%struct.tree_type*> [#uses=1]
|
||||
%tmp177 = getelementptr %struct.tree_type, %struct.tree_type* %tmp176, i32 0, i32 6 ; <i16*> [#uses=1]
|
||||
%tmp177.upgrd.3 = bitcast i16* %tmp177 to i32* ; <i32*> [#uses=1]
|
||||
%tmp178 = load i32, i32* %tmp177.upgrd.3 ; <i32> [#uses=1]
|
||||
%tmp180 = lshr i32 %tmp178, 16 ; <i32> [#uses=1]
|
||||
%tmp180.mask = and i32 %tmp180, 127 ; <i32> [#uses=1]
|
||||
%gep.upgrd.4 = zext i32 %tmp180.mask to i64 ; <i64> [#uses=1]
|
||||
%tmp181 = getelementptr [35 x i8], [35 x i8]* @mode_class, i32 0, i64 %gep.upgrd.4 ; <i8*> [#uses=1]
|
||||
%tmp182 = load i8, i8* %tmp181 ; <i8> [#uses=1]
|
||||
%tmp183 = icmp eq i8 %tmp182, 8 ; <i1> [#uses=1]
|
||||
br i1 %tmp183, label %cond_next241, label %cond_true184
|
||||
cond_true184: ; preds = %cond_true158
|
||||
%tmp185 = load %struct.tree_node*, %struct.tree_node** null ; <%struct.tree_node*> [#uses=1]
|
||||
%tmp187 = getelementptr %struct.tree_node, %struct.tree_node* %tmp185, i32 0, i32 0, i32 0, i32 1 ; <%struct.tree_node**> [#uses=1]
|
||||
%tmp188 = load %struct.tree_node*, %struct.tree_node** %tmp187 ; <%struct.tree_node*> [#uses=1]
|
||||
%tmp189 = bitcast %struct.tree_node* %tmp188 to %struct.tree_type* ; <%struct.tree_type*> [#uses=1]
|
||||
%tmp190 = getelementptr %struct.tree_type, %struct.tree_type* %tmp189, i32 0, i32 6 ; <i16*> [#uses=1]
|
||||
%tmp190.upgrd.5 = bitcast i16* %tmp190 to i32* ; <i32*> [#uses=1]
|
||||
%tmp191 = load i32, i32* %tmp190.upgrd.5 ; <i32> [#uses=1]
|
||||
%tmp193 = lshr i32 %tmp191, 16 ; <i32> [#uses=1]
|
||||
%tmp193.mask = and i32 %tmp193, 127 ; <i32> [#uses=1]
|
||||
%gep.upgrd.6 = zext i32 %tmp193.mask to i64 ; <i64> [#uses=1]
|
||||
%tmp194 = getelementptr [35 x i8], [35 x i8]* @mode_class, i32 0, i64 %gep.upgrd.6 ; <i8*> [#uses=1]
|
||||
%tmp195 = load i8, i8* %tmp194 ; <i8> [#uses=1]
|
||||
%tmp196 = icmp eq i8 %tmp195, 4 ; <i1> [#uses=1]
|
||||
br i1 %tmp196, label %cond_next241, label %cond_true197
|
||||
cond_true197: ; preds = %cond_true184
|
||||
ret void
|
||||
cond_next241: ; preds = %cond_true184, %cond_true158, %bb145
|
||||
%tmp245 = load i32, i32* null ; <i32> [#uses=0]
|
||||
ret void
|
||||
bb276: ; preds = %entry
|
||||
ret void
|
||||
}
|
@ -1,29 +0,0 @@
|
||||
; PR957
|
||||
; RUN: opt < %s -simplifycfg -S | FileCheck %s
|
||||
|
||||
; CHECK-NOT: select
|
||||
|
||||
@G = extern_weak global i32
|
||||
|
||||
define i32 @test(i32 %tmp) {
|
||||
cond_false179:
|
||||
%tmp181 = icmp eq i32 %tmp, 0 ; <i1> [#uses=1]
|
||||
br i1 %tmp181, label %cond_true182, label %cond_next185
|
||||
cond_true182: ; preds = %cond_false179
|
||||
br label %cond_next185
|
||||
cond_next185: ; preds = %cond_true182, %cond_false179
|
||||
%d0.3 = phi i32 [ udiv (i32 1, i32 ptrtoint (i32* @G to i32)), %cond_true182 ], [ %tmp, %cond_false179 ] ; <i32> [#uses=1]
|
||||
ret i32 %d0.3
|
||||
}
|
||||
|
||||
define i32 @test2(i32 %tmp) {
|
||||
cond_false179:
|
||||
%tmp181 = icmp eq i32 %tmp, 0 ; <i1> [#uses=1]
|
||||
br i1 %tmp181, label %cond_true182, label %cond_next185
|
||||
cond_true182: ; preds = %cond_false179
|
||||
br label %cond_next185
|
||||
cond_next185: ; preds = %cond_true182, %cond_false179
|
||||
%d0.3 = phi i32 [ udiv (i32 1, i32 ptrtoint (i32* @G to i32)), %cond_true182 ], [ %tmp, %cond_false179 ] ; <i32> [#uses=1]
|
||||
call i32 @test( i32 4 ) ; <i32>:0 [#uses=0]
|
||||
ret i32 %d0.3
|
||||
}
|
@ -1,131 +0,0 @@
|
||||
; RUN: opt < %s -simplifycfg | llvm-dis
|
||||
; END.
|
||||
|
||||
; ModuleID = '2006-12-08-Ptr-ICmp-Branch.ll'
|
||||
target datalayout = "e-p:32:32"
|
||||
target triple = "i686-pc-linux-gnu"
|
||||
%struct.FILE = type { i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, %struct._IO_marker*, %struct.FILE*, i32, i32, i32, i16, i8, [1 x i8], i8*, i64, i8*, i8*, i8*, i8*, i32, i32, [40 x i8] }
|
||||
%struct._IO_FILE = type { i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, %struct._IO_marker*, %struct.FILE*, i32, i32, i32, i16, i8, [1 x i8], i8*, i64, i8*, i8*, i8*, i8*, i32, i32, [40 x i8] }
|
||||
%struct._IO_marker = type { %struct._IO_marker*, %struct.FILE*, i32 }
|
||||
%struct.charsequence = type { i8*, i32, i32 }
|
||||
%struct.trie_s = type { [26 x %struct.trie_s*], i32 }
|
||||
@str = external global [14 x i8] ; <[14 x i8]*> [#uses=0]
|
||||
@str.upgrd.1 = external global [32 x i8] ; <[32 x i8]*> [#uses=0]
|
||||
@str.upgrd.2 = external global [12 x i8] ; <[12 x i8]*> [#uses=0]
|
||||
@C.0.2294 = external global %struct.charsequence ; <%struct.charsequence*> [#uses=3]
|
||||
@t = external global %struct.trie_s* ; <%struct.trie_s**> [#uses=0]
|
||||
@str.upgrd.3 = external global [3 x i8] ; <[3 x i8]*> [#uses=0]
|
||||
@str.upgrd.4 = external global [26 x i8] ; <[26 x i8]*> [#uses=0]
|
||||
|
||||
declare void @charsequence_reset(%struct.charsequence*)
|
||||
|
||||
declare void @free(i8*)
|
||||
|
||||
declare void @charsequence_push(%struct.charsequence*, i8)
|
||||
|
||||
declare i8* @charsequence_val(%struct.charsequence*)
|
||||
|
||||
declare i32 @_IO_getc(%struct.FILE*)
|
||||
|
||||
declare i32 @tolower(i32)
|
||||
|
||||
declare %struct.trie_s* @trie_insert(%struct.trie_s*, i8*)
|
||||
|
||||
declare i32 @feof(%struct.FILE*)
|
||||
|
||||
define void @addfile(%struct.trie_s* %t, %struct.FILE* %f) {
|
||||
entry:
|
||||
%t_addr = alloca %struct.trie_s* ; <%struct.trie_s**> [#uses=2]
|
||||
%f_addr = alloca %struct.FILE* ; <%struct.FILE**> [#uses=3]
|
||||
%c = alloca i8, align 1 ; <i8*> [#uses=7]
|
||||
%wstate = alloca i32, align 4 ; <i32*> [#uses=4]
|
||||
%cs = alloca %struct.charsequence, align 16 ; <%struct.charsequence*> [#uses=7]
|
||||
%str = alloca i8*, align 4 ; <i8**> [#uses=3]
|
||||
%"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0]
|
||||
store %struct.trie_s* %t, %struct.trie_s** %t_addr
|
||||
store %struct.FILE* %f, %struct.FILE** %f_addr
|
||||
store i32 0, i32* %wstate
|
||||
%tmp = getelementptr %struct.charsequence, %struct.charsequence* %cs, i64 0, i32 0 ; <i8**> [#uses=1]
|
||||
%tmp1 = getelementptr %struct.charsequence, %struct.charsequence* @C.0.2294, i64 0, i32 0 ; <i8**> [#uses=1]
|
||||
%tmp.upgrd.5 = load i8*, i8** %tmp1 ; <i8*> [#uses=1]
|
||||
store i8* %tmp.upgrd.5, i8** %tmp
|
||||
%tmp.upgrd.6 = getelementptr %struct.charsequence, %struct.charsequence* %cs, i64 0, i32 1 ; <i32*> [#uses=1]
|
||||
%tmp2 = getelementptr %struct.charsequence, %struct.charsequence* @C.0.2294, i64 0, i32 1 ; <i32*> [#uses=1]
|
||||
%tmp.upgrd.7 = load i32, i32* %tmp2 ; <i32> [#uses=1]
|
||||
store i32 %tmp.upgrd.7, i32* %tmp.upgrd.6
|
||||
%tmp3 = getelementptr %struct.charsequence, %struct.charsequence* %cs, i64 0, i32 2 ; <i32*> [#uses=1]
|
||||
%tmp4 = getelementptr %struct.charsequence, %struct.charsequence* @C.0.2294, i64 0, i32 2 ; <i32*> [#uses=1]
|
||||
%tmp5 = load i32, i32* %tmp4 ; <i32> [#uses=1]
|
||||
store i32 %tmp5, i32* %tmp3
|
||||
br label %bb33
|
||||
bb: ; preds = %bb33
|
||||
%tmp.upgrd.8 = load %struct.FILE*, %struct.FILE** %f_addr ; <%struct.FILE*> [#uses=1]
|
||||
%tmp.upgrd.9 = call i32 @_IO_getc( %struct.FILE* %tmp.upgrd.8 ) ; <i32> [#uses=1]
|
||||
%tmp6 = call i32 @tolower( i32 %tmp.upgrd.9 ) ; <i32> [#uses=1]
|
||||
%tmp6.upgrd.10 = trunc i32 %tmp6 to i8 ; <i8> [#uses=1]
|
||||
store i8 %tmp6.upgrd.10, i8* %c
|
||||
%tmp7 = load i32, i32* %wstate ; <i32> [#uses=1]
|
||||
%tmp.upgrd.11 = icmp ne i32 %tmp7, 0 ; <i1> [#uses=1]
|
||||
br i1 %tmp.upgrd.11, label %cond_true, label %cond_false
|
||||
cond_true: ; preds = %bb
|
||||
%tmp.upgrd.12 = load i8, i8* %c ; <i8> [#uses=1]
|
||||
%tmp8 = icmp sle i8 %tmp.upgrd.12, 96 ; <i1> [#uses=1]
|
||||
br i1 %tmp8, label %cond_true9, label %cond_next
|
||||
cond_true9: ; preds = %cond_true
|
||||
br label %bb16
|
||||
cond_next: ; preds = %cond_true
|
||||
%tmp10 = load i8, i8* %c ; <i8> [#uses=1]
|
||||
%tmp11 = icmp sgt i8 %tmp10, 122 ; <i1> [#uses=1]
|
||||
br i1 %tmp11, label %cond_true12, label %cond_next13
|
||||
cond_true12: ; preds = %cond_next
|
||||
br label %bb16
|
||||
cond_next13: ; preds = %cond_next
|
||||
%tmp14 = load i8, i8* %c ; <i8> [#uses=1]
|
||||
%tmp14.upgrd.13 = sext i8 %tmp14 to i32 ; <i32> [#uses=1]
|
||||
%tmp1415 = trunc i32 %tmp14.upgrd.13 to i8 ; <i8> [#uses=1]
|
||||
call void @charsequence_push( %struct.charsequence* %cs, i8 %tmp1415 )
|
||||
br label %bb21
|
||||
bb16: ; preds = %cond_true12, %cond_true9
|
||||
%tmp17 = call i8* @charsequence_val( %struct.charsequence* %cs ) ; <i8*> [#uses=1]
|
||||
store i8* %tmp17, i8** %str
|
||||
%tmp.upgrd.14 = load %struct.trie_s*, %struct.trie_s** %t_addr ; <%struct.trie_s*> [#uses=1]
|
||||
%tmp18 = load i8*, i8** %str ; <i8*> [#uses=1]
|
||||
%tmp19 = call %struct.trie_s* @trie_insert( %struct.trie_s* %tmp.upgrd.14, i8* %tmp18 ) ; <%struct.trie_s*> [#uses=0]
|
||||
%tmp20 = load i8*, i8** %str ; <i8*> [#uses=1]
|
||||
call void @free( i8* %tmp20 )
|
||||
store i32 0, i32* %wstate
|
||||
br label %bb21
|
||||
bb21: ; preds = %bb16, %cond_next13
|
||||
br label %cond_next32
|
||||
cond_false: ; preds = %bb
|
||||
%tmp22 = load i8, i8* %c ; <i8> [#uses=1]
|
||||
%tmp23 = icmp sgt i8 %tmp22, 96 ; <i1> [#uses=1]
|
||||
br i1 %tmp23, label %cond_true24, label %cond_next31
|
||||
cond_true24: ; preds = %cond_false
|
||||
%tmp25 = load i8, i8* %c ; <i8> [#uses=1]
|
||||
%tmp26 = icmp sle i8 %tmp25, 122 ; <i1> [#uses=1]
|
||||
br i1 %tmp26, label %cond_true27, label %cond_next30
|
||||
cond_true27: ; preds = %cond_true24
|
||||
call void @charsequence_reset( %struct.charsequence* %cs )
|
||||
%tmp28 = load i8, i8* %c ; <i8> [#uses=1]
|
||||
%tmp28.upgrd.15 = sext i8 %tmp28 to i32 ; <i32> [#uses=1]
|
||||
%tmp2829 = trunc i32 %tmp28.upgrd.15 to i8 ; <i8> [#uses=1]
|
||||
call void @charsequence_push( %struct.charsequence* %cs, i8 %tmp2829 )
|
||||
store i32 1, i32* %wstate
|
||||
br label %cond_next30
|
||||
cond_next30: ; preds = %cond_true27, %cond_true24
|
||||
br label %cond_next31
|
||||
cond_next31: ; preds = %cond_next30, %cond_false
|
||||
br label %cond_next32
|
||||
cond_next32: ; preds = %cond_next31, %bb21
|
||||
br label %bb33
|
||||
bb33: ; preds = %cond_next32, %entry
|
||||
%tmp34 = load %struct.FILE*, %struct.FILE** %f_addr ; <%struct.FILE*> [#uses=1]
|
||||
%tmp35 = call i32 @feof( %struct.FILE* %tmp34 ) ; <i32> [#uses=1]
|
||||
%tmp36 = icmp eq i32 %tmp35, 0 ; <i1> [#uses=1]
|
||||
br i1 %tmp36, label %bb, label %bb37
|
||||
bb37: ; preds = %bb33
|
||||
br label %return
|
||||
return: ; preds = %bb37
|
||||
ret void
|
||||
}
|
@ -1,20 +0,0 @@
|
||||
; RUN: opt < %s -simplifycfg -S | FileCheck %s
|
||||
|
||||
; CHECK-NOT: invoke
|
||||
|
||||
declare i32 @func(i8*) nounwind
|
||||
|
||||
define i32 @test() personality i32 (...)* @__gxx_personality_v0 {
|
||||
invoke i32 @func( i8* null )
|
||||
to label %Cont unwind label %Other ; <i32>:1 [#uses=0]
|
||||
|
||||
Cont: ; preds = %0
|
||||
ret i32 0
|
||||
|
||||
Other: ; preds = %0
|
||||
landingpad { i8*, i32 }
|
||||
catch i8* null
|
||||
ret i32 1
|
||||
}
|
||||
|
||||
declare i32 @__gxx_personality_v0(...)
|
@ -1,37 +0,0 @@
|
||||
;RUN: opt < %s -simplifycfg -disable-output
|
||||
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128"
|
||||
|
||||
define i32 @bork() nounwind {
|
||||
entry:
|
||||
br label %bb5.outer
|
||||
|
||||
bb5.outer.loopexit: ; preds = %bb5
|
||||
br label %bb5.outer
|
||||
|
||||
bb5.outer: ; preds = %bb5.outer.loopexit, %entry
|
||||
%undo.0.ph = phi i32 [ 0, %entry ], [ 1, %bb5.outer.loopexit ] ; <i32> [#uses=1]
|
||||
br label %bb5
|
||||
|
||||
bb5: ; preds = %bb5, %bb5.outer
|
||||
%tmp6 = tail call i32 (...) @foo( ) nounwind ; <i32> [#uses=1]
|
||||
switch i32 %tmp6, label %bb13 [
|
||||
i32 -1, label %bb10
|
||||
i32 102, label %bb5
|
||||
i32 110, label %bb5.outer.loopexit
|
||||
]
|
||||
|
||||
bb10: ; preds = %bb5
|
||||
%tmp12 = tail call i32 (...) @bar( i32 %undo.0.ph ) nounwind ; <i32> [#uses=0]
|
||||
br label %UnifiedReturnBlock
|
||||
|
||||
bb13: ; preds = %bb5
|
||||
br label %UnifiedReturnBlock
|
||||
|
||||
UnifiedReturnBlock: ; preds = %bb13, %bb10
|
||||
%UnifiedRetVal = phi i32 [ 1, %bb10 ], [ 258, %bb13 ] ; <i32> [#uses=1]
|
||||
ret i32 %UnifiedRetVal
|
||||
}
|
||||
|
||||
declare i32 @foo(...)
|
||||
|
||||
declare i32 @bar(...)
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user