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,11 +0,0 @@
|
||||
; RUN: opt < %s -adce
|
||||
|
||||
define i32 @"main"(i32 %argc) {
|
||||
br label %2
|
||||
|
||||
%retval = phi i32 [ %argc, %2 ] ; <i32> [#uses=2]
|
||||
%two = add i32 %retval, %retval ; <i32> [#uses=1]
|
||||
ret i32 %two
|
||||
|
||||
br label %1
|
||||
}
|
@ -1,16 +0,0 @@
|
||||
; It is illegal to remove BB1 because it will mess up the PHI node!
|
||||
;
|
||||
; RUN: opt < %s -adce -S | grep BB1
|
||||
|
||||
define i32 @test(i1 %C, i32 %A, i32 %B) {
|
||||
; <label>:0
|
||||
br i1 %C, label %BB1, label %BB2
|
||||
|
||||
BB1: ; preds = %0
|
||||
br label %BB2
|
||||
|
||||
BB2: ; preds = %BB1, %0
|
||||
%R = phi i32 [ %A, %0 ], [ %B, %BB1 ] ; <i32> [#uses=1]
|
||||
ret i32 %R
|
||||
}
|
||||
|
@ -1,35 +0,0 @@
|
||||
; This testcase contains a entire loop that should be removed. The only thing
|
||||
; left is the store instruction in BB0. The problem this testcase was running
|
||||
; into was that when the reg109 PHI was getting zero predecessors, it was
|
||||
; removed even though there were uses still around. Now the uses are filled
|
||||
; in with a dummy value before the PHI is deleted.
|
||||
;
|
||||
; RUN: opt < %s -S -adce | grep bb1
|
||||
; RUN: opt < %s -S -adce -adce-remove-loops | FileCheck %s
|
||||
|
||||
%node_t = type { double*, %node_t*, %node_t**, double**, double*, i32, i32 }
|
||||
|
||||
define void @localize_local(%node_t* %nodelist) {
|
||||
bb0:
|
||||
%nodelist.upgrd.1 = alloca %node_t* ; <%node_t**> [#uses=2]
|
||||
store %node_t* %nodelist, %node_t** %nodelist.upgrd.1
|
||||
br label %bb1
|
||||
|
||||
bb1: ; preds = %bb0
|
||||
%reg107 = load %node_t*, %node_t** %nodelist.upgrd.1 ; <%node_t*> [#uses=2]
|
||||
%cond211 = icmp eq %node_t* %reg107, null ; <i1> [#uses=1]
|
||||
; CHECK: br label %bb3
|
||||
br i1 %cond211, label %bb3, label %bb2
|
||||
|
||||
bb2: ; preds = %bb2, %bb1
|
||||
%reg109 = phi %node_t* [ %reg110, %bb2 ], [ %reg107, %bb1 ] ; <%node_t*> [#uses=1]
|
||||
%reg212 = getelementptr %node_t, %node_t* %reg109, i64 0, i32 1 ; <%node_t**> [#uses=1]
|
||||
%reg110 = load %node_t*, %node_t** %reg212 ; <%node_t*> [#uses=2]
|
||||
%cond213 = icmp ne %node_t* %reg110, null ; <i1> [#uses=1]
|
||||
; CHECK: br label %bb3
|
||||
br i1 %cond213, label %bb2, label %bb3
|
||||
|
||||
bb3: ; preds = %bb2, %bb1
|
||||
ret void
|
||||
}
|
||||
|
@ -1,19 +0,0 @@
|
||||
; This testcase is a distilled form of: 2002-05-28-Crash.ll
|
||||
|
||||
; RUN: opt < %s -adce
|
||||
; RUN: opt < %s -adce -adce-remove-loops -S | FileCheck %s
|
||||
|
||||
define float @test(i32 %i) {
|
||||
%F = sitofp i32 %i to float ; <float> [#uses=1]
|
||||
%I = bitcast i32 %i to i32 ; <i32> [#uses=1]
|
||||
br label %Loop
|
||||
|
||||
Loop: ; preds = %Loop, %0
|
||||
%B = icmp ne i32 %I, 0 ; <i1> [#uses=1]
|
||||
; CHECK: br label %Out
|
||||
br i1 %B, label %Out, label %Loop
|
||||
|
||||
Out: ; preds = %Loop
|
||||
ret float %F
|
||||
}
|
||||
|
@ -1,56 +0,0 @@
|
||||
; This testcase is distilled from the GNU rx package. The loop should be
|
||||
; removed but causes a problem when ADCE does. The source function is:
|
||||
; int rx_bitset_empty (int size, rx_Bitset set) {
|
||||
; int x;
|
||||
; RX_subset s;
|
||||
; s = set[0];
|
||||
; set[0] = 1;
|
||||
; for (x = rx_bitset_numb_subsets(size) - 1; !set[x]; --x)
|
||||
; ;
|
||||
; set[0] = s;
|
||||
; return !s;
|
||||
;}
|
||||
;
|
||||
; RUN: opt < %s -adce
|
||||
; RUN: opt < %s -adce -adce-remove-loops -S | FileCheck %s
|
||||
|
||||
define i32 @rx_bitset_empty(i32 %size, i32* %set) {
|
||||
bb1:
|
||||
%reg110 = load i32, i32* %set ; <i32> [#uses=2]
|
||||
store i32 1, i32* %set
|
||||
%cast112 = sext i32 %size to i64 ; <i64> [#uses=1]
|
||||
%reg113 = add i64 %cast112, 31 ; <i64> [#uses=1]
|
||||
%reg114 = lshr i64 %reg113, 5 ; <i64> [#uses=2]
|
||||
%cast109 = trunc i64 %reg114 to i32 ; <i32> [#uses=1]
|
||||
%reg129 = add i32 %cast109, -1 ; <i32> [#uses=1]
|
||||
%reg114-idxcast = trunc i64 %reg114 to i32 ; <i32> [#uses=1]
|
||||
%reg114-idxcast-offset = add i32 %reg114-idxcast, 1073741823 ; <i32> [#uses=1]
|
||||
%reg114-idxcast-offset.upgrd.1 = zext i32 %reg114-idxcast-offset to i64 ; <i64> [#uses=1]
|
||||
%reg124 = getelementptr i32, i32* %set, i64 %reg114-idxcast-offset.upgrd.1 ; <i32*> [#uses=1]
|
||||
%reg125 = load i32, i32* %reg124 ; <i32> [#uses=1]
|
||||
%cond232 = icmp ne i32 %reg125, 0 ; <i1> [#uses=1]
|
||||
; CHECK: br label %bb3
|
||||
br i1 %cond232, label %bb3, label %bb2
|
||||
|
||||
bb2: ; preds = %bb2, %bb1
|
||||
%cann-indvar = phi i32 [ 0, %bb1 ], [ %add1-indvar, %bb2 ] ; <i32> [#uses=2]
|
||||
%reg130-scale = mul i32 %cann-indvar, -1 ; <i32> [#uses=1]
|
||||
%reg130 = add i32 %reg130-scale, %reg129 ; <i32> [#uses=1]
|
||||
%add1-indvar = add i32 %cann-indvar, 1 ; <i32> [#uses=1]
|
||||
%reg130-idxcast = bitcast i32 %reg130 to i32 ; <i32> [#uses=1]
|
||||
%reg130-idxcast-offset = add i32 %reg130-idxcast, 1073741823 ; <i32> [#uses=1]
|
||||
%reg130-idxcast-offset.upgrd.2 = zext i32 %reg130-idxcast-offset to i64 ; <i64> [#uses=1]
|
||||
%reg118 = getelementptr i32, i32* %set, i64 %reg130-idxcast-offset.upgrd.2 ; <i32*> [#uses=1]
|
||||
%reg119 = load i32, i32* %reg118 ; <i32> [#uses=1]
|
||||
%cond233 = icmp eq i32 %reg119, 0 ; <i1> [#uses=1]
|
||||
br i1 %cond233, label %bb2, label %bb3
|
||||
|
||||
bb3: ; preds = %bb2, %bb1
|
||||
store i32 %reg110, i32* %set
|
||||
%cast126 = zext i32 %reg110 to i64 ; <i64> [#uses=1]
|
||||
%reg127 = add i64 %cast126, -1 ; <i64> [#uses=1]
|
||||
%reg128 = lshr i64 %reg127, 63 ; <i64> [#uses=1]
|
||||
%cast120 = trunc i64 %reg128 to i32 ; <i32> [#uses=1]
|
||||
ret i32 %cast120
|
||||
}
|
||||
|
@ -1,14 +0,0 @@
|
||||
; This testcase fails because ADCE does not correctly delete the chain of
|
||||
; three instructions that are dead here. Ironically there were a dead basic
|
||||
; block in this function, it would work fine, but that would be the part we
|
||||
; have to fix now, wouldn't it....
|
||||
;
|
||||
; RUN: opt < %s -adce -S | FileCheck %s
|
||||
|
||||
define void @foo(i8* %reg5481) {
|
||||
%cast611 = bitcast i8* %reg5481 to i8** ; <i8**> [#uses=1]
|
||||
%reg162 = load i8*, i8** %cast611 ; <i8*> [#uses=1]
|
||||
; CHECK-NOT: ptrtoint
|
||||
ptrtoint i8* %reg162 to i32 ; <i32>:1 [#uses=0]
|
||||
ret void
|
||||
}
|
@ -1,50 +0,0 @@
|
||||
; This testcase was extracted from the gzip SPEC benchmark
|
||||
;
|
||||
; RUN: opt < %s -adce | FileCheck %s
|
||||
|
||||
@bk = external global i32 ; <i32*> [#uses=2]
|
||||
@hufts = external global i32 ; <i32*> [#uses=1]
|
||||
|
||||
define i32 @inflate() {
|
||||
bb0:
|
||||
br label %bb2
|
||||
|
||||
bb2: ; preds = %bb6, %bb0
|
||||
%reg128 = phi i32 [ %reg130, %bb6 ], [ 0, %bb0 ] ; <i32> [#uses=2]
|
||||
br i1 true, label %bb4, label %bb3
|
||||
|
||||
bb3: ; preds = %bb2
|
||||
br label %UnifiedExitNode
|
||||
|
||||
; CHECK-NOT: bb4:
|
||||
; CHECK-NOT: bb5:
|
||||
bb4: ; preds = %bb2
|
||||
%reg117 = load i32, i32* @hufts ; <i32> [#uses=2]
|
||||
%cond241 = icmp ule i32 %reg117, %reg128 ; <i1> [#uses=1]
|
||||
br i1 %cond241, label %bb6, label %bb5
|
||||
|
||||
bb5: ; preds = %bb4
|
||||
br label %bb6
|
||||
|
||||
bb6: ; preds = %bb5, %bb4
|
||||
%reg130 = phi i32 [ %reg117, %bb5 ], [ %reg128, %bb4 ] ; <i32> [#uses=1]
|
||||
br i1 false, label %bb2, label %bb7
|
||||
|
||||
bb7: ; preds = %bb6
|
||||
%reg126 = load i32, i32* @bk ; <i32> [#uses=1]
|
||||
%cond247 = icmp ule i32 %reg126, 7 ; <i1> [#uses=1]
|
||||
br i1 %cond247, label %bb9, label %bb8
|
||||
|
||||
bb8: ; preds = %bb8, %bb7
|
||||
%reg119 = load i32, i32* @bk ; <i32> [#uses=1]
|
||||
%cond256 = icmp ugt i32 %reg119, 7 ; <i1> [#uses=1]
|
||||
br i1 %cond256, label %bb8, label %bb9
|
||||
|
||||
bb9: ; preds = %bb8, %bb7
|
||||
br label %UnifiedExitNode
|
||||
|
||||
UnifiedExitNode: ; preds = %bb9, %bb3
|
||||
%UnifiedRetVal = phi i32 [ 7, %bb3 ], [ 0, %bb9 ] ; <i32> [#uses=1]
|
||||
ret i32 %UnifiedRetVal
|
||||
}
|
||||
|
@ -1,10 +0,0 @@
|
||||
; RUN: opt < %s -adce -disable-output
|
||||
; RUN: opt < %s -adce -disable-output -adce-remove-loops
|
||||
|
||||
define void @test() {
|
||||
br label %BB3
|
||||
|
||||
BB3: ; preds = %BB3, %0
|
||||
br label %BB3
|
||||
}
|
||||
|
@ -1,30 +0,0 @@
|
||||
; Testcase reduced from 197.parser by bugpoint
|
||||
; RUN: opt < %s -adce
|
||||
; RUN: opt < %s -adce -adce-remove-loops -S | FileCheck %s
|
||||
|
||||
define void @conjunction_prune() {
|
||||
; <label>:0
|
||||
br label %bb19
|
||||
|
||||
bb19: ; preds = %bb23, %bb22, %0
|
||||
%reg205 = phi i8* [ null, %bb22 ], [ null, %bb23 ], [ null, %0 ] ; <i8*> [#uses=1]
|
||||
; CHECK: br label %bb22
|
||||
br i1 false, label %bb21, label %bb22
|
||||
|
||||
bb21: ; preds = %bb19
|
||||
%cast455 = bitcast i8* %reg205 to i8** ; <i8**> [#uses=0]
|
||||
; CHECK: br label %bb22
|
||||
br label %bb22
|
||||
|
||||
bb22: ; preds = %bb21, %bb19
|
||||
; CHECK: br label %bb23
|
||||
br i1 false, label %bb19, label %bb23
|
||||
|
||||
bb23: ; preds = %bb22
|
||||
; CHECK: br label %bb28
|
||||
br i1 false, label %bb19, label %bb28
|
||||
|
||||
bb28: ; preds = %bb23
|
||||
ret void
|
||||
}
|
||||
|
@ -1,37 +0,0 @@
|
||||
; THis testcase caused an assertion failure because a PHI node did not have
|
||||
; entries for it's postdominator. But I think this can only happen when the
|
||||
; PHI node is dead, so we just avoid patching up dead PHI nodes.
|
||||
|
||||
; RUN: opt < %s -adce -S | FileCheck %s
|
||||
; RUN: opt < %s -adce -adce-remove-loops -S | FileCheck %s
|
||||
|
||||
target datalayout = "e-p:32:32"
|
||||
|
||||
define void @dead_test8() {
|
||||
entry:
|
||||
br label %loopentry
|
||||
|
||||
loopentry: ; preds = %endif, %entry
|
||||
%k.1 = phi i32 [ %k.0, %endif ], [ 0, %entry ] ; <i32> [#uses=1]
|
||||
br i1 false, label %no_exit, label %return
|
||||
|
||||
no_exit: ; preds = %loopentry
|
||||
; CHECK: br label %then
|
||||
br i1 false, label %then, label %else
|
||||
|
||||
then: ; preds = %no_exit
|
||||
br label %endif
|
||||
|
||||
else: ; preds = %no_exit
|
||||
%dec = add i32 %k.1, -1 ; <i32> [#uses=1]
|
||||
br label %endif
|
||||
|
||||
endif: ; preds = %else, %then
|
||||
%k.0 = phi i32 [ %dec, %else ], [ 0, %then ] ; <i32> [#uses=1]
|
||||
store i32 2, i32* null
|
||||
br label %loopentry
|
||||
|
||||
return: ; preds = %loopentry
|
||||
ret void
|
||||
}
|
||||
|
@ -1,29 +0,0 @@
|
||||
; RUN: opt < %s -adce -disable-output
|
||||
; RUN: opt < %s -adce -adce-remove-loops -disable-output
|
||||
|
||||
@G = external global i32* ; <i32**> [#uses=1]
|
||||
|
||||
declare void @Fn(i32*)
|
||||
|
||||
define i32 @main(i32 %argc.1, i8** %argv.1) {
|
||||
entry:
|
||||
br label %endif.42
|
||||
|
||||
endif.42: ; preds = %shortcirc_done.12, %then.66, %endif.42, %entry
|
||||
br i1 false, label %endif.65, label %endif.42
|
||||
|
||||
then.66: ; preds = %shortcirc_done.12
|
||||
call void @Fn( i32* %tmp.2846 )
|
||||
br label %endif.42
|
||||
|
||||
endif.65: ; preds = %endif.42
|
||||
%tmp.2846 = load i32*, i32** @G ; <i32*> [#uses=1]
|
||||
br i1 false, label %shortcirc_next.12, label %shortcirc_done.12
|
||||
|
||||
shortcirc_next.12: ; preds = %endif.65
|
||||
br label %shortcirc_done.12
|
||||
|
||||
shortcirc_done.12: ; preds = %shortcirc_next.12, %endif.65
|
||||
br i1 false, label %then.66, label %endif.42
|
||||
}
|
||||
|
@ -1,94 +0,0 @@
|
||||
; RUN: opt < %s -adce -disable-output
|
||||
; RUN: opt < %s -adce -adce-remove-loops=true -disable-output
|
||||
|
||||
target datalayout = "e-p:32:32"
|
||||
%struct..CppObjTypeDesc = type { i32, i16, i16 }
|
||||
%struct..TypeToken = type { i32, i16, i16 }
|
||||
|
||||
define i32 @C_ReFaxToDb() {
|
||||
entry:
|
||||
br i1 false, label %endif.0, label %then.0
|
||||
|
||||
then.0: ; preds = %entry
|
||||
ret i32 0
|
||||
|
||||
endif.0: ; preds = %entry
|
||||
br i1 false, label %then.11, label %then.4
|
||||
|
||||
then.4: ; preds = %endif.0
|
||||
ret i32 0
|
||||
|
||||
then.11: ; preds = %endif.0
|
||||
br i1 false, label %loopentry.0, label %else.2
|
||||
|
||||
loopentry.0: ; preds = %loopentry.1, %endif.14, %then.11
|
||||
br i1 false, label %endif.14, label %loopexit.0
|
||||
|
||||
endif.14: ; preds = %loopentry.0
|
||||
br i1 false, label %loopentry.1, label %loopentry.0
|
||||
|
||||
loopentry.1: ; preds = %then.53, %endif.14
|
||||
%SubArrays.10 = phi i32* [ %SubArrays.8, %then.53 ], [ null, %endif.14 ] ; <i32*> [#uses=3]
|
||||
br i1 false, label %no_exit.1, label %loopentry.0
|
||||
|
||||
no_exit.1: ; preds = %loopentry.1
|
||||
; CHECK: switch
|
||||
switch i32 0, label %label.17 [
|
||||
i32 2, label %label.11
|
||||
i32 19, label %label.10
|
||||
]
|
||||
|
||||
label.10: ; preds = %no_exit.1
|
||||
br i1 false, label %then.43, label %endif.43
|
||||
|
||||
then.43: ; preds = %label.10
|
||||
br i1 false, label %then.44, label %endif.44
|
||||
|
||||
then.44: ; preds = %then.43
|
||||
br i1 false, label %shortcirc_next.4, label %endif.45
|
||||
|
||||
shortcirc_next.4: ; preds = %then.44
|
||||
br i1 false, label %no_exit.2, label %loopexit.2
|
||||
|
||||
no_exit.2: ; preds = %shortcirc_next.4
|
||||
%tmp.897 = getelementptr i32, i32* %SubArrays.10, i64 0 ; <i32*> [#uses=1]
|
||||
%tmp.899 = load i32, i32* %tmp.897 ; <i32> [#uses=1]
|
||||
store i32 %tmp.899, i32* null
|
||||
ret i32 0
|
||||
|
||||
loopexit.2: ; preds = %shortcirc_next.4
|
||||
ret i32 0
|
||||
|
||||
endif.45: ; preds = %then.44
|
||||
ret i32 0
|
||||
|
||||
endif.44: ; preds = %then.43
|
||||
ret i32 0
|
||||
|
||||
endif.43: ; preds = %label.10
|
||||
ret i32 0
|
||||
|
||||
label.11: ; preds = %no_exit.1
|
||||
ret i32 0
|
||||
|
||||
label.17: ; preds = %no_exit.1
|
||||
br i1 false, label %then.53, label %shortcirc_next.7
|
||||
|
||||
shortcirc_next.7: ; preds = %label.17
|
||||
br i1 false, label %then.53, label %shortcirc_next.8
|
||||
|
||||
shortcirc_next.8: ; preds = %shortcirc_next.7
|
||||
ret i32 0
|
||||
|
||||
then.53: ; preds = %shortcirc_next.7, %label.17
|
||||
%SubArrays.8 = phi i32* [ %SubArrays.10, %shortcirc_next.7 ], [ %SubArrays.10, %label.17 ] ; <i32*> [#uses=1]
|
||||
%tmp.1023 = load i32, i32* null ; <i32> [#uses=1]
|
||||
switch i32 %tmp.1023, label %loopentry.1 [
|
||||
]
|
||||
|
||||
loopexit.0: ; preds = %loopentry.0
|
||||
ret i32 0
|
||||
|
||||
else.2: ; preds = %then.11
|
||||
ret i32 0
|
||||
}
|
@ -1,44 +0,0 @@
|
||||
; RUN: opt < %s -adce -S | FileCheck %s
|
||||
; RUN: opt < %s -adce -adce-remove-loops -S | FileCheck %s
|
||||
|
||||
define void @dead_test8(i32* %data.1, i32 %idx.1) {
|
||||
entry:
|
||||
%tmp.1 = load i32, i32* %data.1 ; <i32> [#uses=2]
|
||||
%tmp.41 = icmp sgt i32 %tmp.1, 0 ; <i1> [#uses=1]
|
||||
br i1 %tmp.41, label %no_exit.preheader, label %return
|
||||
|
||||
no_exit.preheader: ; preds = %entry
|
||||
%tmp.11 = getelementptr i32, i32* %data.1, i64 1 ; <i32*> [#uses=1]
|
||||
%tmp.22-idxcast = sext i32 %idx.1 to i64 ; <i64> [#uses=1]
|
||||
%tmp.28 = getelementptr i32, i32* %data.1, i64 %tmp.22-idxcast ; <i32*> [#uses=1]
|
||||
br label %no_exit
|
||||
|
||||
no_exit: ; preds = %endif, %no_exit.preheader
|
||||
%k.1 = phi i32 [ %k.0, %endif ], [ 0, %no_exit.preheader ] ; <i32> [#uses=3]
|
||||
%i.0 = phi i32 [ %inc.1, %endif ], [ 0, %no_exit.preheader ] ; <i32> [#uses=1]
|
||||
%tmp.12 = load i32, i32* %tmp.11 ; <i32> [#uses=1]
|
||||
%tmp.14 = sub i32 0, %tmp.12 ; <i32> [#uses=1]
|
||||
; CHECK-NOT: %tmp.161
|
||||
%tmp.161 = icmp ne i32 %k.1, %tmp.14 ; <i1> [#uses=1]
|
||||
; CHECK: br label %then
|
||||
br i1 %tmp.161, label %then, label %else
|
||||
|
||||
then: ; preds = %no_exit
|
||||
%inc.0 = add i32 %k.1, 1 ; <i32> [#uses=1]
|
||||
br label %endif
|
||||
|
||||
else: ; preds = %no_exit
|
||||
%dec = add i32 %k.1, -1 ; <i32> [#uses=1]
|
||||
br label %endif
|
||||
|
||||
endif: ; preds = %else, %then
|
||||
%k.0 = phi i32 [ %dec, %else ], [ %inc.0, %then ] ; <i32> [#uses=1]
|
||||
store i32 2, i32* %tmp.28
|
||||
%inc.1 = add i32 %i.0, 1 ; <i32> [#uses=2]
|
||||
%tmp.4 = icmp slt i32 %inc.1, %tmp.1 ; <i1> [#uses=1]
|
||||
br i1 %tmp.4, label %no_exit, label %return
|
||||
|
||||
return: ; preds = %endif, %entry
|
||||
ret void
|
||||
}
|
||||
|
@ -1,22 +0,0 @@
|
||||
; RUN: opt < %s -adce -disable-output
|
||||
|
||||
define void @test() personality i32 (...)* @__gxx_personality_v0 {
|
||||
br i1 false, label %then, label %endif
|
||||
|
||||
then: ; preds = %0
|
||||
invoke void null( i8* null )
|
||||
to label %invoke_cont unwind label %invoke_catch
|
||||
|
||||
invoke_catch: ; preds = %then
|
||||
%exn = landingpad {i8*, i32}
|
||||
cleanup
|
||||
resume { i8*, i32 } %exn
|
||||
|
||||
invoke_cont: ; preds = %then
|
||||
ret void
|
||||
|
||||
endif: ; preds = %0
|
||||
ret void
|
||||
}
|
||||
|
||||
declare i32 @__gxx_personality_v0(...)
|
@ -1,10 +0,0 @@
|
||||
; RUN: opt < %s -adce -disable-output
|
||||
; RUN: opt < %s -adce -adce-remove-loops -disable-output
|
||||
|
||||
define i32 @main() {
|
||||
br label %loop
|
||||
|
||||
loop: ; preds = %loop, %0
|
||||
br label %loop
|
||||
}
|
||||
|
@ -1,20 +0,0 @@
|
||||
; RUN: opt < %s -adce -simplifycfg -S | grep call
|
||||
; RUN: opt < %s -adce -adce-remove-loops -simplifycfg -S | grep call
|
||||
|
||||
declare void @exit(i32)
|
||||
|
||||
define i32 @main(i32 %argc) {
|
||||
%C = icmp eq i32 %argc, 1 ; <i1> [#uses=2]
|
||||
br i1 %C, label %Cond, label %Done
|
||||
|
||||
Cond: ; preds = %0
|
||||
br i1 %C, label %Loop, label %Done
|
||||
|
||||
Loop: ; preds = %Loop, %Cond
|
||||
call void @exit( i32 0 )
|
||||
br label %Loop
|
||||
|
||||
Done: ; preds = %Cond, %0
|
||||
ret i32 1
|
||||
}
|
||||
|
@ -1,17 +0,0 @@
|
||||
; RUN: opt < %s -adce -disable-output
|
||||
; RUN: opt < %s -adce -adce-remove-loops -disable-output
|
||||
|
||||
define void @test() {
|
||||
entry:
|
||||
br label %UnifiedReturnBlock
|
||||
|
||||
UnifiedReturnBlock: ; preds = %invoke_catch.0, %entry
|
||||
ret void
|
||||
|
||||
invoke_catch.0: ; No predecessors!
|
||||
br i1 false, label %UnifiedUnwindBlock, label %UnifiedReturnBlock
|
||||
|
||||
UnifiedUnwindBlock: ; preds = %invoke_catch.0
|
||||
unreachable
|
||||
}
|
||||
|
@ -1,52 +0,0 @@
|
||||
; RUN: opt < %s -adce -disable-output
|
||||
|
||||
declare void @strlen()
|
||||
|
||||
declare void @_ZN10QByteArray6resizeEi()
|
||||
|
||||
declare void @q_atomic_decrement()
|
||||
|
||||
define void @_ZNK10QByteArray13leftJustifiedEicb() personality i32 (...)* @__gxx_personality_v0 {
|
||||
entry:
|
||||
invoke void @strlen( )
|
||||
to label %tmp.3.i.noexc unwind label %invoke_catch.0
|
||||
|
||||
tmp.3.i.noexc: ; preds = %entry
|
||||
br i1 false, label %then.0, label %else.0
|
||||
|
||||
invoke_catch.0: ; preds = %entry
|
||||
%exn.0 = landingpad {i8*, i32}
|
||||
cleanup
|
||||
invoke void @q_atomic_decrement( )
|
||||
to label %tmp.1.i.i183.noexc unwind label %terminate
|
||||
|
||||
tmp.1.i.i183.noexc: ; preds = %invoke_catch.0
|
||||
ret void
|
||||
|
||||
then.0: ; preds = %tmp.3.i.noexc
|
||||
invoke void @_ZN10QByteArray6resizeEi( )
|
||||
to label %invoke_cont.1 unwind label %invoke_catch.1
|
||||
|
||||
invoke_catch.1: ; preds = %then.0
|
||||
%exn.1 = landingpad {i8*, i32}
|
||||
cleanup
|
||||
invoke void @q_atomic_decrement( )
|
||||
to label %tmp.1.i.i162.noexc unwind label %terminate
|
||||
|
||||
tmp.1.i.i162.noexc: ; preds = %invoke_catch.1
|
||||
ret void
|
||||
|
||||
invoke_cont.1: ; preds = %then.0
|
||||
ret void
|
||||
|
||||
else.0: ; preds = %tmp.3.i.noexc
|
||||
ret void
|
||||
|
||||
terminate: ; preds = %invoke_catch.1, %invoke_catch.0
|
||||
%dbg.0.1 = phi { }* [ null, %invoke_catch.1 ], [ null, %invoke_catch.0 ] ; <{ }*> [#uses=0]
|
||||
%exn = landingpad {i8*, i32}
|
||||
cleanup
|
||||
unreachable
|
||||
}
|
||||
|
||||
declare i32 @__gxx_personality_v0(...)
|
55
external/llvm/test/Transforms/ADCE/2016-09-06.ll
vendored
55
external/llvm/test/Transforms/ADCE/2016-09-06.ll
vendored
@ -1,55 +0,0 @@
|
||||
; RUN: opt < %s -sroa -adce -adce-remove-loops -S | FileCheck %s
|
||||
; ModuleID = 'test1.bc'
|
||||
source_filename = "test1.c"
|
||||
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
|
||||
target triple = "x86_64-unknown-linux-gnu"
|
||||
|
||||
; Function Attrs: nounwind uwtable
|
||||
define i32 @foo(i32, i32, i32) #0 {
|
||||
%4 = alloca i32, align 4
|
||||
%5 = alloca i32, align 4
|
||||
%6 = alloca i32, align 4
|
||||
%7 = alloca i32, align 4
|
||||
%8 = alloca i32, align 4
|
||||
store i32 %0, i32* %4, align 4
|
||||
store i32 %1, i32* %5, align 4
|
||||
store i32 %2, i32* %6, align 4
|
||||
store i32 0, i32* %7, align 4
|
||||
%9 = load i32, i32* %5, align 4
|
||||
%I10 = icmp ne i32 %9, 0
|
||||
br i1 %I10, label %B11, label %B21
|
||||
|
||||
B11:
|
||||
store i32 0, i32* %8, align 4
|
||||
br label %B12
|
||||
|
||||
B12:
|
||||
%I13 = load i32, i32* %8, align 4
|
||||
%I14 = load i32, i32* %6, align 4
|
||||
%I15 = icmp slt i32 %I13, %I14
|
||||
; CHECK: br label %B20
|
||||
br i1 %I15, label %B16, label %B20
|
||||
|
||||
B16:
|
||||
br label %B17
|
||||
|
||||
B17:
|
||||
%I18 = load i32, i32* %8, align 4
|
||||
%I19 = add nsw i32 %I18, 1
|
||||
store i32 %I19, i32* %8, align 4
|
||||
br label %B12
|
||||
|
||||
B20:
|
||||
store i32 1, i32* %7, align 4
|
||||
br label %B21
|
||||
|
||||
B21:
|
||||
%I22 = load i32, i32* %7, align 4
|
||||
ret i32 %I22
|
||||
}
|
||||
|
||||
attributes #0 = { nounwind uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
|
||||
|
||||
!llvm.ident = !{!0}
|
||||
|
||||
!0 = !{!"clang version 4.0.0 (http://llvm.org/git/clang.git 5864a13abf4490e76ae2eb0896198e1305927df2)"}
|
@ -1,24 +0,0 @@
|
||||
; RUN: opt < %s -adce | llvm-dis
|
||||
; RUN: opt < %s -adce -verify-dom-info | llvm-dis
|
||||
|
||||
define void @foo() {
|
||||
entry:
|
||||
br label %switch
|
||||
switch: ; preds = %entry
|
||||
switch i32 undef, label %default [
|
||||
i32 2, label %two
|
||||
i32 5, label %five
|
||||
i32 4, label %four
|
||||
]
|
||||
four: ; preds = %switch
|
||||
br label %exit
|
||||
five: ; preds = %switch
|
||||
br label %exit
|
||||
two: ; preds = %switch
|
||||
br label %exit
|
||||
default: ; preds = %switch
|
||||
br label %exit
|
||||
exit: ; preds = %default, %two, %five, %four
|
||||
ret void
|
||||
}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user