diff options
Diffstat (limited to 'test/Transforms/ADCE')
24 files changed, 560 insertions, 564 deletions
diff --git a/test/Transforms/ADCE/2002-05-22-PHITest.ll b/test/Transforms/ADCE/2002-05-22-PHITest.ll index cf9872e..04f0051 100644 --- a/test/Transforms/ADCE/2002-05-22-PHITest.ll +++ b/test/Transforms/ADCE/2002-05-22-PHITest.ll @@ -1,13 +1,16 @@ ; It is illegal to remove BB1 because it will mess up the PHI node! ; -; RUN: llvm-upgrade < %s | llvm-as | opt -adce | llvm-dis | grep BB1 +; RUN: llvm-as < %s | opt -adce | llvm-dis | grep BB1 +define i32 @test(i1 %C, i32 %A, i32 %B) { +; <label>:0 + br i1 %C, label %BB1, label %BB2 -int "test"(bool %C, int %A, int %B) { - br bool %C, label %BB1, label %BB2 -BB1: - br label %BB2 -BB2: - %R = phi int [%A, %0], [%B, %BB1] - ret int %R +BB1: ; preds = %0 + br label %BB2 + +BB2: ; preds = %BB1, %0 + %R = phi i32 [ %A, %0 ], [ %B, %BB1 ] ; <i32> [#uses=1] + ret i32 %R } + diff --git a/test/Transforms/ADCE/2002-05-23-ZeroArgPHITest.ll b/test/Transforms/ADCE/2002-05-23-ZeroArgPHITest.ll index 999675b..911f8e6 100644 --- a/test/Transforms/ADCE/2002-05-23-ZeroArgPHITest.ll +++ b/test/Transforms/ADCE/2002-05-23-ZeroArgPHITest.ll @@ -4,30 +4,29 @@ ; removed even though there were uses still around. Now the uses are filled ; in with a dummy value before the PHI is deleted. ; -; RUN: llvm-upgrade < %s | llvm-as | opt -adce +; RUN: llvm-as < %s | opt -adce -%node_t = type { double*, %node_t*, %node_t**, double**, double*, int, int } + %node_t = type { double*, %node_t*, %node_t**, double**, double*, i32, i32 } -implementation ; Functions: +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 -void %localize_local(%node_t* %nodelist) { -bb0: ;[#uses=0] - %nodelist = alloca %node_t* ; <%node_t**> [#uses=2] - store %node_t* %nodelist, %node_t** %nodelist - br label %bb1 +bb1: ; preds = %bb0 + %reg107 = load %node_t** %nodelist.upgrd.1 ; <%node_t*> [#uses=2] + %cond211 = icmp eq %node_t* %reg107, null ; <i1> [#uses=1] + br i1 %cond211, label %bb3, label %bb2 -bb1: ;[#uses=2] - %reg107 = load %node_t** %nodelist ; <%node_t*> [#uses=2] - %cond211 = seteq %node_t* %reg107, null ; <bool> [#uses=1] - br bool %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* %reg109, i64 0, i32 1 ; <%node_t**> [#uses=1] + %reg110 = load %node_t** %reg212 ; <%node_t*> [#uses=2] + %cond213 = icmp ne %node_t* %reg110, null ; <i1> [#uses=1] + br i1 %cond213, label %bb2, label %bb3 -bb2: ;[#uses=3] - %reg109 = phi %node_t* [ %reg110, %bb2 ], [ %reg107, %bb1 ] ; <%node_t*> [#uses=1] - %reg212 = getelementptr %node_t* %reg109, long 0, uint 1 ; <%node_t**> [#uses=1] - %reg110 = load %node_t** %reg212 ; <%node_t*> [#uses=2] - %cond213 = setne %node_t* %reg110, null ; <bool> [#uses=1] - br bool %cond213, label %bb2, label %bb3 - -bb3: ;[#uses=2] - ret void +bb3: ; preds = %bb2, %bb1 + ret void } + diff --git a/test/Transforms/ADCE/2002-05-28-Crash-distilled.ll b/test/Transforms/ADCE/2002-05-28-Crash-distilled.ll index 0d5adf9..5d25ff1 100644 --- a/test/Transforms/ADCE/2002-05-28-Crash-distilled.ll +++ b/test/Transforms/ADCE/2002-05-28-Crash-distilled.ll @@ -1,17 +1,17 @@ ; This testcase is a distilled form of: 2002-05-28-Crash.ll -; RUN: llvm-upgrade < %s | llvm-as | opt -adce +; RUN: llvm-as < %s | opt -adce -float "test"(int %i) { - %F = cast int %i to float ; This BB is not dead - %I = cast int %i to uint ; future dead inst - br label %Loop +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: ; This block is dead - %B = cast uint %I to bool - br bool %B, label %Out, label %Loop +Loop: ; preds = %Loop, %0 + %B = icmp ne i32 %I, 0 ; <i1> [#uses=1] + br i1 %B, label %Out, label %Loop -Out: - ret float %F +Out: ; preds = %Loop + ret float %F } diff --git a/test/Transforms/ADCE/2002-05-28-Crash.ll b/test/Transforms/ADCE/2002-05-28-Crash.ll index b6340d5..27c7205 100644 --- a/test/Transforms/ADCE/2002-05-28-Crash.ll +++ b/test/Transforms/ADCE/2002-05-28-Crash.ll @@ -11,46 +11,44 @@ ; return !s; ;} ; -; RUN: llvm-upgrade < %s | llvm-as | opt -adce +; RUN: llvm-as < %s | opt -adce -implementation ; Functions: +define i32 @rx_bitset_empty(i32 %size, i32* %set) { +bb1: + %reg110 = load 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* %set, i64 %reg114-idxcast-offset.upgrd.1 ; <i32*> [#uses=1] + %reg125 = load i32* %reg124 ; <i32> [#uses=1] + %cond232 = icmp ne i32 %reg125, 0 ; <i1> [#uses=1] + br i1 %cond232, label %bb3, label %bb2 -int %rx_bitset_empty(int %size, uint* %set) { -bb1: ;[#uses=2] - %reg110 = load uint* %set ; <uint> [#uses=2] - store uint 1, uint* %set - %cast112 = cast int %size to ulong ; <ulong> [#uses=1] - %reg113 = add ulong %cast112, 31 ; <ulong> [#uses=1] - %reg114 = shr ulong %reg113, ubyte 5 ; <ulong> [#uses=2] - %cast109 = cast ulong %reg114 to int ; <int> [#uses=1] - %reg129 = add int %cast109, -1 ; <int> [#uses=1] - %reg114-idxcast = cast ulong %reg114 to uint ; <uint> [#uses=1] - %reg114-idxcast-offset = add uint %reg114-idxcast, 1073741823 ; <uint> [#uses=1] - %reg114-idxcast-offset = cast uint %reg114-idxcast-offset to long - %reg124 = getelementptr uint* %set, long %reg114-idxcast-offset ; <uint*> [#uses=1] - %reg125 = load uint* %reg124 ; <uint> [#uses=1] - %cond232 = setne uint %reg125, 0 ; <bool> [#uses=1] - br bool %cond232, label %bb3, label %bb2 - -bb2: ;[#uses=3] - %cann-indvar = phi int [ 0, %bb1 ], [ %add1-indvar, %bb2 ] ; <int> [#uses=2] - %reg130-scale = mul int %cann-indvar, -1 ; <int> [#uses=1] - %reg130 = add int %reg130-scale, %reg129 ; <int> [#uses=1] - %add1-indvar = add int %cann-indvar, 1 ; <int> [#uses=1] - %reg130-idxcast = cast int %reg130 to uint ; <uint> [#uses=1] - %reg130-idxcast-offset = add uint %reg130-idxcast, 1073741823 ; <uint> [#uses=1] - %reg130-idxcast-offset = cast uint %reg130-idxcast-offset to long - %reg118 = getelementptr uint* %set, long %reg130-idxcast-offset ; <uint*> [#uses=1] - %reg119 = load uint* %reg118 ; <uint> [#uses=1] - %cond233 = seteq uint %reg119, 0 ; <bool> [#uses=1] - br bool %cond233, label %bb2, label %bb3 - -bb3: ;[#uses=2] - store uint %reg110, uint* %set - %cast126 = cast uint %reg110 to ulong ; <ulong> [#uses=1] - %reg127 = add ulong %cast126, 18446744073709551615 ; <ulong> [#uses=1] - %reg128 = shr ulong %reg127, ubyte 63 ; <ulong> [#uses=1] - %cast120 = cast ulong %reg128 to int ; <int> [#uses=1] - ret int %cast120 +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* %set, i64 %reg130-idxcast-offset.upgrd.2 ; <i32*> [#uses=1] + %reg119 = load 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 } + diff --git a/test/Transforms/ADCE/2002-07-17-AssertionFailure.ll b/test/Transforms/ADCE/2002-07-17-AssertionFailure.ll index 61b1402..fb4fe4a 100644 --- a/test/Transforms/ADCE/2002-07-17-AssertionFailure.ll +++ b/test/Transforms/ADCE/2002-07-17-AssertionFailure.ll @@ -3,11 +3,11 @@ ; block in this function, it would work fine, but that would be the part we ; have to fix now, wouldn't it.... ; -; RUN: llvm-upgrade < %s | llvm-as | opt -adce +; RUN: llvm-as < %s | opt -adce -void %foo(sbyte* %reg5481) { - %cast611 = cast sbyte* %reg5481 to sbyte** ; <sbyte**> [#uses=1] - %reg162 = load sbyte** %cast611 ; <sbyte*> [#uses=0] - cast sbyte*%reg162 to int - ret void +define void @foo(i8* %reg5481) { + %cast611 = bitcast i8* %reg5481 to i8** ; <i8**> [#uses=1] + %reg162 = load i8** %cast611 ; <i8*> [#uses=1] + ptrtoint i8* %reg162 to i32 ; <i32>:1 [#uses=0] + ret void } diff --git a/test/Transforms/ADCE/2002-07-17-PHIAssertion.ll b/test/Transforms/ADCE/2002-07-17-PHIAssertion.ll index 6d15fae..42a7e4d 100644 --- a/test/Transforms/ADCE/2002-07-17-PHIAssertion.ll +++ b/test/Transforms/ADCE/2002-07-17-PHIAssertion.ll @@ -1,49 +1,48 @@ ; This testcase was extracted from the gzip SPEC benchmark ; -; RUN: llvm-upgrade < %s | llvm-as | opt -adce +; RUN: llvm-as < %s | opt -adce -%bk = external global uint ; <uint*> [#uses=2] -%hufts = external global uint ; <uint*> [#uses=1] +@bk = external global i32 ; <i32*> [#uses=2] +@hufts = external global i32 ; <i32*> [#uses=1] -implementation ; Functions: +define i32 @inflate() { +bb0: + br label %bb2 -int %inflate() { -bb0: ;[#uses=1] - br label %bb2 +bb2: ; preds = %bb6, %bb0 + %reg128 = phi i32 [ %reg130, %bb6 ], [ 0, %bb0 ] ; <i32> [#uses=2] + br i1 true, label %bb4, label %bb3 -bb2: ;[#uses=2] - %reg128 = phi uint [ %reg130, %bb6 ], [ 0, %bb0 ] ; <uint> [#uses=2] - br bool true, label %bb4, label %bb3 +bb3: ; preds = %bb2 + br label %UnifiedExitNode -bb3: ;[#uses=2] - br label %UnifiedExitNode +bb4: ; preds = %bb2 + %reg117 = load i32* @hufts ; <i32> [#uses=2] + %cond241 = icmp ule i32 %reg117, %reg128 ; <i1> [#uses=1] + br i1 %cond241, label %bb6, label %bb5 -bb4: ;[#uses=2] - %reg117 = load uint* %hufts ; <uint> [#uses=2] - %cond241 = setle uint %reg117, %reg128 ; <bool> [#uses=1] - br bool %cond241, label %bb6, label %bb5 +bb5: ; preds = %bb4 + br label %bb6 -bb5: ;[#uses=2] - br label %bb6 +bb6: ; preds = %bb5, %bb4 + %reg130 = phi i32 [ %reg117, %bb5 ], [ %reg128, %bb4 ] ; <i32> [#uses=1] + br i1 false, label %bb2, label %bb7 -bb6: ;[#uses=3] - %reg130 = phi uint [ %reg117, %bb5 ], [ %reg128, %bb4 ] ; <uint> [#uses=1] - br bool false, label %bb2, label %bb7 +bb7: ; preds = %bb6 + %reg126 = load i32* @bk ; <i32> [#uses=1] + %cond247 = icmp ule i32 %reg126, 7 ; <i1> [#uses=1] + br i1 %cond247, label %bb9, label %bb8 -bb7: ;[#uses=1] - %reg126 = load uint* %bk ; <uint> [#uses=1] - %cond247 = setle uint %reg126, 7 ; <bool> [#uses=1] - br bool %cond247, label %bb9, label %bb8 +bb8: ; preds = %bb8, %bb7 + %reg119 = load i32* @bk ; <i32> [#uses=1] + %cond256 = icmp ugt i32 %reg119, 7 ; <i1> [#uses=1] + br i1 %cond256, label %bb8, label %bb9 -bb8: ;[#uses=2] - %reg119 = load uint* %bk ; <uint> [#uses=1] - %cond256 = setgt uint %reg119, 7 ; <bool> [#uses=1] - br bool %cond256, label %bb8, label %bb9 +bb9: ; preds = %bb8, %bb7 + br label %UnifiedExitNode -bb9: ;[#uses=3] - br label %UnifiedExitNode - -UnifiedExitNode: ;[#uses=2] - %UnifiedRetVal = phi int [ 7, %bb3 ], [ 0, %bb9 ] ; <int> [#uses=1] - ret int %UnifiedRetVal +UnifiedExitNode: ; preds = %bb9, %bb3 + %UnifiedRetVal = phi i32 [ 7, %bb3 ], [ 0, %bb9 ] ; <i32> [#uses=1] + ret i32 %UnifiedRetVal } + diff --git a/test/Transforms/ADCE/2002-07-29-Segfault.ll b/test/Transforms/ADCE/2002-07-29-Segfault.ll index 0c0e2af..1c65b3b 100644 --- a/test/Transforms/ADCE/2002-07-29-Segfault.ll +++ b/test/Transforms/ADCE/2002-07-29-Segfault.ll @@ -1,9 +1,9 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -adce +; RUN: llvm-as < %s | opt -adce -void "test"() -begin - br label %BB3 +define void @test() { + br label %BB3 + +BB3: ; preds = %BB3, %0 + br label %BB3 +} -BB3: - br label %BB3 -end diff --git a/test/Transforms/ADCE/2003-01-22-PredecessorProblem.ll b/test/Transforms/ADCE/2003-01-22-PredecessorProblem.ll index d8c6448..4ec9005 100644 --- a/test/Transforms/ADCE/2003-01-22-PredecessorProblem.ll +++ b/test/Transforms/ADCE/2003-01-22-PredecessorProblem.ll @@ -1,25 +1,25 @@ ; Testcase reduced from 197.parser by bugpoint -; RUN: llvm-upgrade < %s | llvm-as | opt -adce -implementation ; Functions: +; RUN: llvm-as < %s | opt -adce -void %conjunction_prune() { -; <label>:0 ; No predecessors! - br label %bb19 +define void @conjunction_prune() { +; <label>:0 + br label %bb19 -bb19: ; preds = %bb22, %bb23, %0 - %reg205 = phi sbyte* [ null, %bb22 ], [ null, %bb23 ], [ null, %0 ] ; <sbyte*> [#uses=1] - br bool false, label %bb21, label %bb22 +bb19: ; preds = %bb23, %bb22, %0 + %reg205 = phi i8* [ null, %bb22 ], [ null, %bb23 ], [ null, %0 ] ; <i8*> [#uses=1] + br i1 false, label %bb21, label %bb22 -bb21: ; preds = %bb19 - %cast455 = cast sbyte* %reg205 to sbyte** ; <sbyte**> [#uses=0] - br label %bb22 +bb21: ; preds = %bb19 + %cast455 = bitcast i8* %reg205 to i8** ; <i8**> [#uses=0] + br label %bb22 -bb22: ; preds = %bb21, %bb19 - br bool false, label %bb19, label %bb23 +bb22: ; preds = %bb21, %bb19 + br i1 false, label %bb19, label %bb23 -bb23: ; preds = %bb22 - br bool false, label %bb19, label %bb28 +bb23: ; preds = %bb22 + br i1 false, label %bb19, label %bb28 -bb28: ; preds = %bb23 - ret void +bb28: ; preds = %bb23 + ret void } + diff --git a/test/Transforms/ADCE/2003-04-25-PHIPostDominateProblem.ll b/test/Transforms/ADCE/2003-04-25-PHIPostDominateProblem.ll index 92d7cad..603b14b 100644 --- a/test/Transforms/ADCE/2003-04-25-PHIPostDominateProblem.ll +++ b/test/Transforms/ADCE/2003-04-25-PHIPostDominateProblem.ll @@ -2,36 +2,34 @@ ; 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: llvm-upgrade < %s | llvm-as | opt -adce +; RUN: llvm-as < %s | opt -adce -target endian = little -target pointersize = 32 +target datalayout = "e-p:32:32" -implementation ; Functions: +define void @dead_test8() { +entry: + br label %loopentry -void %dead_test8() { -entry: ; No predecessors! - 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 -loopentry: ; preds = %entry, %endif - %k.1 = phi int [ %k.0, %endif ], [ 0, %entry ] ; <int> [#uses=1] - br bool false, label %no_exit, label %return +no_exit: ; preds = %loopentry + br i1 false, label %then, label %else -no_exit: ; preds = %loopentry - br bool false, label %then, label %else +then: ; preds = %no_exit + br label %endif -then: ; preds = %no_exit - br label %endif +else: ; preds = %no_exit + %dec = add i32 %k.1, -1 ; <i32> [#uses=1] + br label %endif -else: ; preds = %no_exit - %dec = add int %k.1, -1 ; <int> [#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 -endif: ; preds = %else, %then - %k.0 = phi int [ %dec, %else ], [ 0, %then ] ; <int> [#uses=1] - store int 2, int* null - br label %loopentry - -return: ; preds = %loopentry - ret void +return: ; preds = %loopentry + ret void } + diff --git a/test/Transforms/ADCE/2003-06-11-InvalidCFG.ll b/test/Transforms/ADCE/2003-06-11-InvalidCFG.ll index 590089d..a9657a7 100644 --- a/test/Transforms/ADCE/2003-06-11-InvalidCFG.ll +++ b/test/Transforms/ADCE/2003-06-11-InvalidCFG.ll @@ -1,28 +1,28 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -adce -disable-output -%G = external global int* +; RUN: llvm-as < %s | opt -adce -disable-output -implementation ; Functions: +@G = external global i32* ; <i32**> [#uses=1] -declare void %Fn(int*) +declare void @Fn(i32*) -int %main(int %argc.1, sbyte** %argv.1) { -entry: ; No predecessors! - br label %endif.42 +define i32 @main(i32 %argc.1, i8** %argv.1) { +entry: + br label %endif.42 -endif.42: ; preds = %entry, %shortcirc_done.12, %then.66, %endif.42 - br bool false, label %endif.65, label %endif.42 - -then.66: ; preds = %shortcirc_done.12 - call void %Fn( int* %tmp.2846) - br label %endif.42 +endif.42: ; preds = %shortcirc_done.12, %then.66, %endif.42, %entry + br i1 false, label %endif.65, label %endif.42 -endif.65: ; preds = %endif.42 - %tmp.2846 = load int** %G - br bool false, label %shortcirc_next.12, label %shortcirc_done.12 +then.66: ; preds = %shortcirc_done.12 + call void @Fn( i32* %tmp.2846 ) + br label %endif.42 -shortcirc_next.12: ; preds = %endif.65 - br label %shortcirc_done.12 +endif.65: ; preds = %endif.42 + %tmp.2846 = load i32** @G ; <i32*> [#uses=1] + br i1 false, label %shortcirc_next.12, label %shortcirc_done.12 -shortcirc_done.12: ; preds = %endif.65, %shortcirc_next.12 - br bool false, label %then.66, label %endif.42 +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 } + diff --git a/test/Transforms/ADCE/2003-06-24-BadSuccessor.ll b/test/Transforms/ADCE/2003-06-24-BadSuccessor.ll index 1a73019..e5dd0cc 100644 --- a/test/Transforms/ADCE/2003-06-24-BadSuccessor.ll +++ b/test/Transforms/ADCE/2003-06-24-BadSuccessor.ll @@ -1,94 +1,91 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -adce -disable-output +; RUN: llvm-as < %s | opt -adce -disable-output +target datalayout = "e-p:32:32" + %struct..CppObjTypeDesc = type { i32, i16, i16 } + %struct..TypeToken = type { i32, i16, i16 } -target endian = little -target pointersize = 32 - %struct..CppObjTypeDesc = type { uint, ushort, ushort } - %struct..TypeToken = type { uint, ushort, ushort } - -implementation ; Functions: - -uint %C_ReFaxToDb() { -entry: ; No predecessors! - br bool false, label %endif.0, label %then.0 +define i32 @C_ReFaxToDb() { +entry: + br i1 false, label %endif.0, label %then.0 then.0: ; preds = %entry - ret uint 0 + ret i32 0 endif.0: ; preds = %entry - br bool false, label %then.11, label %then.4 + br i1 false, label %then.11, label %then.4 then.4: ; preds = %endif.0 - ret uint 0 + ret i32 0 then.11: ; preds = %endif.0 - br bool false, label %loopentry.0, label %else.2 + br i1 false, label %loopentry.0, label %else.2 -loopentry.0: ; preds = %then.11, %endif.14, %loopentry.1 - br bool false, label %endif.14, label %loopexit.0 +loopentry.0: ; preds = %loopentry.1, %endif.14, %then.11 + br i1 false, label %endif.14, label %loopexit.0 endif.14: ; preds = %loopentry.0 - br bool false, label %loopentry.1, label %loopentry.0 + br i1 false, label %loopentry.1, label %loopentry.0 -loopentry.1: ; preds = %endif.14, %then.53, %then.53, %then.53, %then.53, %then.53 - %SubArrays.10 = phi uint* [ %SubArrays.8, %then.53 ] , [ null, %endif.14 ] ; <uint*> [#uses=3] - br bool false, label %no_exit.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 - switch uint 0, label %label.17 [ - uint 2, label %label.11 - uint 19, label %label.10 + switch i32 0, label %label.17 [ + i32 2, label %label.11 + i32 19, label %label.10 ] label.10: ; preds = %no_exit.1 - br bool false, label %then.43, label %endif.43 + br i1 false, label %then.43, label %endif.43 then.43: ; preds = %label.10 - br bool false, label %then.44, label %endif.44 + br i1 false, label %then.44, label %endif.44 then.44: ; preds = %then.43 - br bool false, label %shortcirc_next.4, label %endif.45 + br i1 false, label %shortcirc_next.4, label %endif.45 shortcirc_next.4: ; preds = %then.44 - br bool false, label %no_exit.2, label %loopexit.2 + br i1 false, label %no_exit.2, label %loopexit.2 no_exit.2: ; preds = %shortcirc_next.4 - %tmp.897 = getelementptr uint* %SubArrays.10, long 0 ; <uint*> [#uses=1] - %tmp.899 = load uint* %tmp.897 ; <uint> [#uses=1] - store uint %tmp.899, uint* null - ret uint 0 + %tmp.897 = getelementptr i32* %SubArrays.10, i64 0 ; <i32*> [#uses=1] + %tmp.899 = load i32* %tmp.897 ; <i32> [#uses=1] + store i32 %tmp.899, i32* null + ret i32 0 loopexit.2: ; preds = %shortcirc_next.4 - ret uint 0 + ret i32 0 endif.45: ; preds = %then.44 - ret uint 0 + ret i32 0 endif.44: ; preds = %then.43 - ret uint 0 + ret i32 0 endif.43: ; preds = %label.10 - ret uint 0 + ret i32 0 label.11: ; preds = %no_exit.1 - ret uint 0 + ret i32 0 -label.17: ; preds = %no_exit.1, %no_exit.1, %no_exit.1, %no_exit.1, %no_exit.1, %no_exit.1 - br bool false, label %then.53, label %shortcirc_next.7 +label.17: ; preds = %no_exit.1 + br i1 false, label %then.53, label %shortcirc_next.7 shortcirc_next.7: ; preds = %label.17 - br bool false, label %then.53, label %shortcirc_next.8 + br i1 false, label %then.53, label %shortcirc_next.8 shortcirc_next.8: ; preds = %shortcirc_next.7 - ret uint 0 + ret i32 0 then.53: ; preds = %shortcirc_next.7, %label.17 - %SubArrays.8 = phi uint* [ %SubArrays.10, %shortcirc_next.7 ], [ %SubArrays.10, %label.17 ] ; <uint*> [#uses=5] - %tmp.1023 = load uint* null ; <uint> [#uses=1] - switch uint %tmp.1023, label %loopentry.1 [] + %SubArrays.8 = phi i32* [ %SubArrays.10, %shortcirc_next.7 ], [ %SubArrays.10, %label.17 ] ; <i32*> [#uses=1] + %tmp.1023 = load i32* null ; <i32> [#uses=1] + switch i32 %tmp.1023, label %loopentry.1 [ + ] loopexit.0: ; preds = %loopentry.0 - ret uint 0 + ret i32 0 else.2: ; preds = %then.11 - ret uint 0 + ret i32 0 } diff --git a/test/Transforms/ADCE/2003-06-24-BasicFunctionality.ll b/test/Transforms/ADCE/2003-06-24-BasicFunctionality.ll index ac62699..9c6764d 100644 --- a/test/Transforms/ADCE/2003-06-24-BasicFunctionality.ll +++ b/test/Transforms/ADCE/2003-06-24-BasicFunctionality.ll @@ -1,40 +1,41 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -adce -simplifycfg | llvm-dis | not grep then: - -void %dead_test8(int* %data.1, int %idx.1) { -entry: ; No predecessors! - %tmp.1 = load int* %data.1 ; <int> [#uses=2] - %tmp.41 = setgt int %tmp.1, 0 ; <bool> [#uses=1] - br bool %tmp.41, label %no_exit.preheader, label %return - -no_exit.preheader: ; preds = %entry - %tmp.11 = getelementptr int* %data.1, long 1 ; <int*> [#uses=1] - %tmp.22-idxcast = cast int %idx.1 to long ; <long> [#uses=1] - %tmp.28 = getelementptr int* %data.1, long %tmp.22-idxcast ; <int*> [#uses=1] - br label %no_exit - -no_exit: ; preds = %no_exit.preheader, %endif - %k.1 = phi int [ %k.0, %endif ], [ 0, %no_exit.preheader ] ; <int> [#uses=3] - %i.0 = phi int [ %inc.1, %endif ], [ 0, %no_exit.preheader ] ; <int> [#uses=1] - %tmp.12 = load int* %tmp.11 ; <int> [#uses=1] - %tmp.14 = sub int 0, %tmp.12 ; <int> [#uses=1] - %tmp.161 = setne int %k.1, %tmp.14 ; <bool> [#uses=1] - br bool %tmp.161, label %then, label %else - -then: ; preds = %no_exit - %inc.0 = add int %k.1, 1 ; <int> [#uses=1] - br label %endif - -else: ; preds = %no_exit - %dec = add int %k.1, -1 ; <int> [#uses=1] - br label %endif - -endif: ; preds = %else, %then - %k.0 = phi int [ %dec, %else ], [ %inc.0, %then ] ; <int> [#uses=1] - store int 2, int* %tmp.28 - %inc.1 = add int %i.0, 1 ; <int> [#uses=2] - %tmp.4 = setlt int %inc.1, %tmp.1 ; <bool> [#uses=1] - br bool %tmp.4, label %no_exit, label %return - -return: ; preds = %entry, %endif - ret void +; RUN: llvm-as < %s | opt -adce -simplifycfg | llvm-dis | not grep then: + +define void @dead_test8(i32* %data.1, i32 %idx.1) { +entry: + %tmp.1 = load 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* %data.1, i64 1 ; <i32*> [#uses=1] + %tmp.22-idxcast = sext i32 %idx.1 to i64 ; <i64> [#uses=1] + %tmp.28 = getelementptr 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* %tmp.11 ; <i32> [#uses=1] + %tmp.14 = sub i32 0, %tmp.12 ; <i32> [#uses=1] + %tmp.161 = icmp ne i32 %k.1, %tmp.14 ; <i1> [#uses=1] + 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 } + diff --git a/test/Transforms/ADCE/2003-09-10-UnwindInstFail.ll b/test/Transforms/ADCE/2003-09-10-UnwindInstFail.ll index a88e041..e6345c1 100644 --- a/test/Transforms/ADCE/2003-09-10-UnwindInstFail.ll +++ b/test/Transforms/ADCE/2003-09-10-UnwindInstFail.ll @@ -1,20 +1,19 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -adce -disable-output +; RUN: llvm-as < %s | opt -adce -disable-output -implementation ; Functions: +define void @test() { + br i1 false, label %then, label %endif -void %test() { - br bool false, label %then, label %endif +then: ; preds = %0 + invoke void null( i8* null ) + to label %invoke_cont unwind label %invoke_catch -then: - invoke void null( sbyte* null ) - to label %invoke_cont except label %invoke_catch +invoke_catch: ; preds = %then + unwind -invoke_catch: - unwind +invoke_cont: ; preds = %then + ret void -invoke_cont: - ret void - -endif: - ret void +endif: ; preds = %0 + ret void } + diff --git a/test/Transforms/ADCE/2003-09-15-InfLoopCrash.ll b/test/Transforms/ADCE/2003-09-15-InfLoopCrash.ll index c61bd6d..37e077f 100644 --- a/test/Transforms/ADCE/2003-09-15-InfLoopCrash.ll +++ b/test/Transforms/ADCE/2003-09-15-InfLoopCrash.ll @@ -1,8 +1,9 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -adce -disable-output +; RUN: llvm-as < %s | opt -adce -disable-output -int %main() { - br label %loop +define i32 @main() { + br label %loop -loop: - br label %loop +loop: ; preds = %loop, %0 + br label %loop } + diff --git a/test/Transforms/ADCE/2003-11-16-MissingPostDominanceInfo.ll b/test/Transforms/ADCE/2003-11-16-MissingPostDominanceInfo.ll index cf7b088..6e9b17e 100644 --- a/test/Transforms/ADCE/2003-11-16-MissingPostDominanceInfo.ll +++ b/test/Transforms/ADCE/2003-11-16-MissingPostDominanceInfo.ll @@ -1,17 +1,18 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -adce -simplifycfg | llvm-dis | grep call -declare void %exit(int) +; RUN: llvm-as < %s | opt -adce -simplifycfg | llvm-dis | grep call +declare void @exit(i32) -int %main(int %argc) { - %C = seteq int %argc, 1 - br bool %C, label %Cond, label %Done +define i32 @main(i32 %argc) { + %C = icmp eq i32 %argc, 1 ; <i1> [#uses=2] + br i1 %C, label %Cond, label %Done -Cond: - br bool %C, label %Loop, label %Done +Cond: ; preds = %0 + br i1 %C, label %Loop, label %Done -Loop: - call void %exit(int 0) - br label %Loop +Loop: ; preds = %Loop, %Cond + call void @exit( i32 0 ) + br label %Loop -Done: - ret int 1 +Done: ; preds = %Cond, %0 + ret i32 1 } + diff --git a/test/Transforms/ADCE/2003-12-19-MergeReturn.llx b/test/Transforms/ADCE/2003-12-19-MergeReturn.llx index 6b8b547..b2c294b 100644 --- a/test/Transforms/ADCE/2003-12-19-MergeReturn.llx +++ b/test/Transforms/ADCE/2003-12-19-MergeReturn.llx @@ -1,28 +1,27 @@ ; This testcase was failing because without merging the return blocks, ADCE ; didn't know that it could get rid of the then.0 block. -; RUN: llvm-upgrade < %s | llvm-as | opt -adce | llvm-dis | not grep load +; RUN: llvm-as < %s | opt -adce | llvm-dis | not grep load -implementation ; Functions: - -void %main(uint %argc, sbyte** %argv) { +define void @main(i32 %argc, i8** %argv) { entry: - call void %__main( ) - %tmp.1 = setle uint %argc, 5 ; <bool> [#uses=1] - br bool %tmp.1, label %then.0, label %return + call void @__main( ) + %tmp.1 = icmp ule i32 %argc, 5 ; <i1> [#uses=1] + br i1 %tmp.1, label %then.0, label %return -then.0: ; preds = %entry - %tmp.8 = load sbyte** %argv ; <sbyte*> [#uses=1] - %tmp.10 = load sbyte* %tmp.8 ; <sbyte> [#uses=1] - %tmp.11 = seteq sbyte %tmp.10, 98 ; <bool> [#uses=1] - br bool %tmp.11, label %then.1, label %return +then.0: ; preds = %entry + %tmp.8 = load i8** %argv ; <i8*> [#uses=1] + %tmp.10 = load i8* %tmp.8 ; <i8> [#uses=1] + %tmp.11 = icmp eq i8 %tmp.10, 98 ; <i1> [#uses=1] + br i1 %tmp.11, label %then.1, label %return -then.1: ; preds = %then.0 - ret void +then.1: ; preds = %then.0 + ret void -return: ; preds = %entry, %then.0 - ret void +return: ; preds = %then.0, %entry + ret void } -declare void %__main() +declare void @__main() + diff --git a/test/Transforms/ADCE/2004-05-04-UnreachableBlock.llx b/test/Transforms/ADCE/2004-05-04-UnreachableBlock.llx index 56f2b2b..87a1550 100644 --- a/test/Transforms/ADCE/2004-05-04-UnreachableBlock.llx +++ b/test/Transforms/ADCE/2004-05-04-UnreachableBlock.llx @@ -1,16 +1,16 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -adce -disable-output +; RUN: llvm-as < %s | opt -adce -disable-output -void %test() { +define void @test() { entry: - br label %UnifiedReturnBlock + br label %UnifiedReturnBlock -UnifiedReturnBlock: - ret void +UnifiedReturnBlock: ; preds = %invoke_catch.0, %entry + ret void -invoke_catch.0: ; No predecessors! - br bool false, label %UnifiedUnwindBlock, label %UnifiedReturnBlock - -UnifiedUnwindBlock: ; preds = %invoke_catch.0 - unwind +invoke_catch.0: ; No predecessors! + br i1 false, label %UnifiedUnwindBlock, label %UnifiedReturnBlock +UnifiedUnwindBlock: ; preds = %invoke_catch.0 + unwind } + diff --git a/test/Transforms/ADCE/2005-02-17-PHI-Invoke-Crash.ll b/test/Transforms/ADCE/2005-02-17-PHI-Invoke-Crash.ll index b7965f0..8ddbbbe 100644 --- a/test/Transforms/ADCE/2005-02-17-PHI-Invoke-Crash.ll +++ b/test/Transforms/ADCE/2005-02-17-PHI-Invoke-Crash.ll @@ -1,44 +1,45 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -adce -disable-output +; RUN: llvm-as < %s | opt -adce -disable-output -implementation ; Functions: +declare void @strlen() -declare void %strlen() -declare void %_ZN10QByteArray6resizeEi() -declare void %q_atomic_decrement() +declare void @_ZN10QByteArray6resizeEi() -void %_ZNK10QByteArray13leftJustifiedEicb() { +declare void @q_atomic_decrement() + +define void @_ZNK10QByteArray13leftJustifiedEicb() { entry: - invoke void %strlen( ) - to label %tmp.3.i.noexc unwind label %invoke_catch.0 + invoke void @strlen( ) + to label %tmp.3.i.noexc unwind label %invoke_catch.0 -tmp.3.i.noexc: ; preds = %entry - br bool false, label %then.0, label %else.0 +tmp.3.i.noexc: ; preds = %entry + br i1 false, label %then.0, label %else.0 -invoke_catch.0: ; preds = %entry - invoke void %q_atomic_decrement( ) - to label %tmp.1.i.i183.noexc unwind label %terminate +invoke_catch.0: ; preds = %entry + invoke void @q_atomic_decrement( ) + to label %tmp.1.i.i183.noexc unwind label %terminate -tmp.1.i.i183.noexc: ; preds = %invoke_catch.0 - unwind +tmp.1.i.i183.noexc: ; preds = %invoke_catch.0 + unwind -then.0: ; preds = %tmp.3.i.noexc - invoke void %_ZN10QByteArray6resizeEi( ) - to label %invoke_cont.1 unwind label %invoke_catch.1 +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 - invoke void %q_atomic_decrement( ) - to label %tmp.1.i.i162.noexc unwind label %terminate +invoke_catch.1: ; preds = %then.0 + 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 +tmp.1.i.i162.noexc: ; preds = %invoke_catch.1 + ret void -invoke_cont.1: ; preds = %then.0 - ret void +invoke_cont.1: ; preds = %then.0 + ret void -else.0: ; preds = %tmp.3.i.noexc - 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=1] - unreachable +terminate: ; preds = %invoke_catch.1, %invoke_catch.0 + %dbg.0.1 = phi { }* [ null, %invoke_catch.1 ], [ null, %invoke_catch.0 ] ; <{ }*> [#uses=0] + unreachable } + diff --git a/test/Transforms/ADCE/adcetest.ll b/test/Transforms/ADCE/adcetest.ll index f0d7843..cb14eea 100644 --- a/test/Transforms/ADCE/adcetest.ll +++ b/test/Transforms/ADCE/adcetest.ll @@ -1,34 +1,36 @@ ; This is the test case taken from Appel's book that illustrates a hard case ; that SCCP gets right, and when followed by ADCE, is completely eliminated ; -; RUN: llvm-upgrade < %s | llvm-as | opt -sccp -adce -simplifycfg | llvm-dis | not grep br +; RUN: llvm-as < %s | opt -sccp -adce -simplifycfg | llvm-dis | not grep br -int "test function"(int %i0, int %j0) { +define i32 @"test function"(i32 %i0, i32 %j0) { BB1: - br label %BB2 -BB2: - %j2 = phi int [%j4, %BB7], [1, %BB1] - %k2 = phi int [%k4, %BB7], [0, %BB1] - %kcond = setlt int %k2, 100 - br bool %kcond, label %BB3, label %BB4 - -BB3: - %jcond = setlt int %j2, 20 - br bool %jcond, label %BB5, label %BB6 - -BB4: - ret int %j2 - -BB5: - %k3 = add int %k2, 1 - br label %BB7 - -BB6: - %k5 = add int %k2, 1 - br label %BB7 - -BB7: - %j4 = phi int [1, %BB5], [%k2, %BB6] - %k4 = phi int [%k3, %BB5], [%k5, %BB6] - br label %BB2 + br label %BB2 + +BB2: ; preds = %BB7, %BB1 + %j2 = phi i32 [ %j4, %BB7 ], [ 1, %BB1 ] ; <i32> [#uses=2] + %k2 = phi i32 [ %k4, %BB7 ], [ 0, %BB1 ] ; <i32> [#uses=4] + %kcond = icmp slt i32 %k2, 100 ; <i1> [#uses=1] + br i1 %kcond, label %BB3, label %BB4 + +BB3: ; preds = %BB2 + %jcond = icmp slt i32 %j2, 20 ; <i1> [#uses=1] + br i1 %jcond, label %BB5, label %BB6 + +BB4: ; preds = %BB2 + ret i32 %j2 + +BB5: ; preds = %BB3 + %k3 = add i32 %k2, 1 ; <i32> [#uses=1] + br label %BB7 + +BB6: ; preds = %BB3 + %k5 = add i32 %k2, 1 ; <i32> [#uses=1] + br label %BB7 + +BB7: ; preds = %BB6, %BB5 + %j4 = phi i32 [ 1, %BB5 ], [ %k2, %BB6 ] ; <i32> [#uses=1] + %k4 = phi i32 [ %k3, %BB5 ], [ %k5, %BB6 ] ; <i32> [#uses=1] + br label %BB2 } + diff --git a/test/Transforms/ADCE/basictest.ll b/test/Transforms/ADCE/basictest.ll index 6be744e..22ff0f7 100644 --- a/test/Transforms/ADCE/basictest.ll +++ b/test/Transforms/ADCE/basictest.ll @@ -1,14 +1,19 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -adce -simplifycfg | llvm-dis +; RUN: llvm-as < %s | opt -adce -simplifycfg | llvm-dis -int "Test"(int %A, int %B) { +define i32 @Test(i32 %A, i32 %B) { BB1: - br label %BB4 -BB2: - br label %BB3 -BB3: - %ret = phi int [%X, %BB4], [%B, %BB2] - ret int %ret -BB4: - %X = phi int [%A, %BB1] - br label %BB3 + br label %BB4 + +BB2: ; No predecessors! + br label %BB3 + +BB3: ; preds = %BB4, %BB2 + %ret = phi i32 [ %X, %BB4 ], [ %B, %BB2 ] ; <i32> [#uses=1] + ret i32 %ret + +BB4: ; preds = %BB1 + %X = phi i32 [ %A, %BB1 ] ; <i32> [#uses=1] + br label %BB3 } + + diff --git a/test/Transforms/ADCE/basictest1.ll b/test/Transforms/ADCE/basictest1.ll index 7d511e8..29f40de 100644 --- a/test/Transforms/ADCE/basictest1.ll +++ b/test/Transforms/ADCE/basictest1.ll @@ -1,101 +1,97 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -adce -simplifycfg | llvm-dis - -%FILE = type { int, ubyte*, ubyte*, ubyte, ubyte, uint, uint, uint } - %spec_fd_t = type { int, int, int, ubyte* } -%__iob = uninitialized global [20 x %FILE] ; <[20 x %FILE]*> [#uses=1] -%dbglvl = global int 4 ; <int*> [#uses=3] -%spec_fd = uninitialized global [3 x %spec_fd_t] ; <[3 x %spec_fd_t]*> [#uses=4] -%.LC9 = internal global [34 x sbyte] c"spec_read: fd=%d, > MAX_SPEC_FD!\0A\00" ; <[34 x sbyte]*> [#uses=1] -%.LC10 = internal global [4 x sbyte] c"EOF\00" ; <[4 x sbyte]*> [#uses=1] -%.LC11 = internal global [4 x sbyte] c"%d\0A\00" ; <[4 x sbyte]*> [#uses=1] -%.LC12 = internal global [17 x sbyte] c"spec_getc: %d = \00" ; <[17 x sbyte]*> [#uses=1] +; RUN: llvm-as < %s | opt -adce -simplifycfg | llvm-dis +%FILE = type { i32, i8*, i8*, i8, i8, i32, i32, i32 } + %spec_fd_t = type { i32, i32, i32, i8* } +@__iob = external global [20 x %FILE] ; <[20 x %FILE]*> [#uses=1] +@dbglvl = global i32 4 ; <i32*> [#uses=3] +@spec_fd = external global [3 x %spec_fd_t] ; <[3 x %spec_fd_t]*> [#uses=4] +@.LC9 = internal global [34 x i8] c"spec_read: fd=%d, > MAX_SPEC_FD!\0A\00" ; <[34 x i8]*> [#uses=1] +@.LC10 = internal global [4 x i8] c"EOF\00" ; <[4 x i8]*> [#uses=1] +@.LC11 = internal global [4 x i8] c"%d\0A\00" ; <[4 x i8]*> [#uses=1] +@.LC12 = internal global [17 x i8] c"spec_getc: %d = \00" ; <[17 x i8]*> [#uses=1] -implementation ; Functions: +declare i32 @fprintf(%FILE*, i8*, ...) -declare int "fprintf"(%FILE*, sbyte*, ...) +declare void @exit(i32) -declare void "exit"(int) +declare i32 @remove(i8*) -declare int "remove"(sbyte*) +declare i32 @fputc(i32, %FILE*) -declare int "fputc"(int, %FILE*) +declare i32 @fwrite(i8*, i32, i32, %FILE*) -declare uint "fwrite"(sbyte*, uint, uint, %FILE*) +declare void @perror(i8*) -declare void "perror"(sbyte*) +define i32 @spec_getc(i32 %fd) { + %reg109 = load i32* @dbglvl ; <i32> [#uses=1] + %cond266 = icmp sle i32 %reg109, 4 ; <i1> [#uses=1] + br i1 %cond266, label %bb3, label %bb2 -int "spec_getc"(int %fd) { -; <label>:0 ;[#uses=0] - %reg109 = load int* %dbglvl ; <int> [#uses=1] - %cond266 = setle int %reg109, 4 ; <bool> [#uses=1] - br bool %cond266, label %bb3, label %bb2 - -bb2: ;[#uses=1] - %cast273 = getelementptr [17 x sbyte]* %.LC12, long 0, long 0 ; <sbyte*> [#uses=0] +bb2: ; preds = %0 + %cast273 = getelementptr [17 x i8]* @.LC12, i64 0, i64 0 ; <i8*> [#uses=0] br label %bb3 -bb3: ;[#uses=2] - %cond267 = setle int %fd, 3 ; <bool> [#uses=1] - br bool %cond267, label %bb5, label %bb4 +bb3: ; preds = %bb2, %0 + %cond267 = icmp sle i32 %fd, 3 ; <i1> [#uses=1] + br i1 %cond267, label %bb5, label %bb4 -bb4: ;[#uses=2] - %reg111 = getelementptr [20 x %FILE]* %__iob, long 0, long 1, uint 3 ; <ubyte*> [#uses=1] - %cast274 = getelementptr [34 x sbyte]* %.LC9, long 0, long 0 ; <sbyte*> [#uses=0] - %cast282 = cast ubyte* %reg111 to %FILE* ; <%FILE*> [#uses=0] - call void %exit( int 1 ) +bb4: ; preds = %bb3 + %reg111 = getelementptr [20 x %FILE]* @__iob, i64 0, i64 1, i32 3 ; <i8*> [#uses=1] + %cast274 = getelementptr [34 x i8]* @.LC9, i64 0, i64 0 ; <i8*> [#uses=0] + %cast282 = bitcast i8* %reg111 to %FILE* ; <%FILE*> [#uses=0] + call void @exit( i32 1 ) br label %UnifiedExitNode -bb5: ;[#uses=1] - %reg107-idxcast1 = cast int %fd to long ; <long> [#uses=2] - %reg107-idxcast2 = cast int %fd to long ; <long> [#uses=1] - %reg1311 = getelementptr [3 x %spec_fd_t]* %spec_fd, long 0, long %reg107-idxcast2 ; <%spec_fd_t*> [#uses=1] - %idx1 = getelementptr [3 x %spec_fd_t]* %spec_fd, long 0, long %reg107-idxcast1, uint 2 ; <int> [#uses=3] - %reg1321 = load int* %idx1 - %idx2 = getelementptr %spec_fd_t* %reg1311, long 0, uint 1 ; <int> [#uses=1] - %reg1331 = load int* %idx2 - %cond270 = setlt int %reg1321, %reg1331 ; <bool> [#uses=1] - br bool %cond270, label %bb9, label %bb6 - -bb6: ;[#uses=1] - %reg134 = load int* %dbglvl ; <int> [#uses=1] - %cond271 = setle int %reg134, 4 ; <bool> [#uses=1] - br bool %cond271, label %bb8, label %bb7 - -bb7: ;[#uses=1] - %cast277 = getelementptr [4 x sbyte]* %.LC10, long 0, long 0 ; <sbyte*> [#uses=0] +bb5: ; preds = %bb3 + %reg107-idxcast1 = sext i32 %fd to i64 ; <i64> [#uses=2] + %reg107-idxcast2 = sext i32 %fd to i64 ; <i64> [#uses=1] + %reg1311 = getelementptr [3 x %spec_fd_t]* @spec_fd, i64 0, i64 %reg107-idxcast2 ; <%spec_fd_t*> [#uses=1] + %idx1 = getelementptr [3 x %spec_fd_t]* @spec_fd, i64 0, i64 %reg107-idxcast1, i32 2 ; <i32*> [#uses=1] + %reg1321 = load i32* %idx1 ; <i32> [#uses=3] + %idx2 = getelementptr %spec_fd_t* %reg1311, i64 0, i32 1 ; <i32*> [#uses=1] + %reg1331 = load i32* %idx2 ; <i32> [#uses=1] + %cond270 = icmp slt i32 %reg1321, %reg1331 ; <i1> [#uses=1] + br i1 %cond270, label %bb9, label %bb6 + +bb6: ; preds = %bb5 + %reg134 = load i32* @dbglvl ; <i32> [#uses=1] + %cond271 = icmp sle i32 %reg134, 4 ; <i1> [#uses=1] + br i1 %cond271, label %bb8, label %bb7 + +bb7: ; preds = %bb6 + %cast277 = getelementptr [4 x i8]* @.LC10, i64 0, i64 0 ; <i8*> [#uses=0] br label %bb8 -bb8: ;[#uses=3] +bb8: ; preds = %bb7, %bb6 br label %UnifiedExitNode -bb9: ;[#uses=1] - %reg107-idxcast3 = cast int %fd to long ; <long> [#uses=1] - %idx3 = getelementptr [3 x %spec_fd_t]* %spec_fd, long 0, long %reg107-idxcast3, uint 3 ; <ubyte*> [#uses=1] - %reg1601 = load ubyte** %idx3 - %reg132-idxcast1 = cast int %reg1321 to long ; <long> [#uses=1] - %idx4 = getelementptr ubyte* %reg1601, long %reg132-idxcast1 ; <ubyte> [#uses=2] - %reg1621 = load ubyte* %idx4 - %cast108 = cast ubyte %reg1621 to long ; <long> [#uses=0] - %reg157 = add int %reg1321, 1 ; <int> [#uses=1] - %idx5 = getelementptr [3 x %spec_fd_t]* %spec_fd, long 0, long %reg107-idxcast1, uint 2 - store int %reg157, int* %idx5 - %reg163 = load int* %dbglvl ; <int> [#uses=1] - %cond272 = setle int %reg163, 4 ; <bool> [#uses=1] - br bool %cond272, label %bb11, label %bb10 - -bb10: ;[#uses=1] - %cast279 = getelementptr [4 x sbyte]* %.LC11, long 0, long 0 ; <sbyte*> [#uses=0] +bb9: ; preds = %bb5 + %reg107-idxcast3 = sext i32 %fd to i64 ; <i64> [#uses=1] + %idx3 = getelementptr [3 x %spec_fd_t]* @spec_fd, i64 0, i64 %reg107-idxcast3, i32 3 ; <i8**> [#uses=1] + %reg1601 = load i8** %idx3 ; <i8*> [#uses=1] + %reg132-idxcast1 = sext i32 %reg1321 to i64 ; <i64> [#uses=1] + %idx4 = getelementptr i8* %reg1601, i64 %reg132-idxcast1 ; <i8*> [#uses=1] + %reg1621 = load i8* %idx4 ; <i8> [#uses=2] + %cast108 = zext i8 %reg1621 to i64 ; <i64> [#uses=0] + %reg157 = add i32 %reg1321, 1 ; <i32> [#uses=1] + %idx5 = getelementptr [3 x %spec_fd_t]* @spec_fd, i64 0, i64 %reg107-idxcast1, i32 2 ; <i32*> [#uses=1] + store i32 %reg157, i32* %idx5 + %reg163 = load i32* @dbglvl ; <i32> [#uses=1] + %cond272 = icmp sle i32 %reg163, 4 ; <i1> [#uses=1] + br i1 %cond272, label %bb11, label %bb10 + +bb10: ; preds = %bb9 + %cast279 = getelementptr [4 x i8]* @.LC11, i64 0, i64 0 ; <i8*> [#uses=0] br label %bb11 -bb11: ;[#uses=3] - %cast291 = cast ubyte %reg1621 to int ; <int> [#uses=1] +bb11: ; preds = %bb10, %bb9 + %cast291 = zext i8 %reg1621 to i32 ; <i32> [#uses=1] br label %UnifiedExitNode -UnifiedExitNode: ;[#uses=3] - %UnifiedRetVal = phi int [ 42, %bb4 ], [ -1, %bb8 ], [ %cast291, %bb11 ] ; <int> [#uses=1] - ret int %UnifiedRetVal +UnifiedExitNode: ; preds = %bb11, %bb8, %bb4 + %UnifiedRetVal = phi i32 [ 42, %bb4 ], [ -1, %bb8 ], [ %cast291, %bb11 ] ; <i32> [#uses=1] + ret i32 %UnifiedRetVal } -declare int "puts"(sbyte*) +declare i32 @puts(i8*) -declare int "printf"(sbyte*, ...) +declare i32 @printf(i8*, ...) diff --git a/test/Transforms/ADCE/basictest2.ll b/test/Transforms/ADCE/basictest2.ll index 75b1d95..120e233 100644 --- a/test/Transforms/ADCE/basictest2.ll +++ b/test/Transforms/ADCE/basictest2.ll @@ -1,102 +1,97 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -adce -simplifycfg | llvm-dis +; RUN: llvm-as < %s | opt -adce -simplifycfg | llvm-dis + %FILE = type { i32, i8*, i8*, i8, i8, i32, i32, i32 } + %spec_fd_t = type { i32, i32, i32, i8* } +@__iob = external global [20 x %FILE] ; <[20 x %FILE]*> [#uses=1] +@dbglvl = global i32 4 ; <i32*> [#uses=3] +@spec_fd = external global [3 x %spec_fd_t] ; <[3 x %spec_fd_t]*> [#uses=4] +@.LC9 = internal global [34 x i8] c"spec_read: fd=%d, > MAX_SPEC_FD!\0A\00" ; <[34 x i8]*> [#uses=1] +@.LC10 = internal global [4 x i8] c"EOF\00" ; <[4 x i8]*> [#uses=1] +@.LC11 = internal global [4 x i8] c"%d\0A\00" ; <[4 x i8]*> [#uses=1] +@.LC12 = internal global [17 x i8] c"spec_getc: %d = \00" ; <[17 x i8]*> [#uses=1] -%FILE = type { int, ubyte*, ubyte*, ubyte, ubyte, uint, uint, uint } - %spec_fd_t = type { int, int, int, ubyte* } -%__iob = uninitialized global [20 x %FILE] ; <[20 x %FILE]*> [#uses=1] -%dbglvl = global int 4 ; <int*> [#uses=3] -%spec_fd = uninitialized global [3 x %spec_fd_t] ; <[3 x %spec_fd_t]*> [#uses=4] -%.LC9 = internal global [34 x sbyte] c"spec_read: fd=%d, > MAX_SPEC_FD!\0A\00" ; <[34 x sbyte]*> [#uses=1] -%.LC10 = internal global [4 x sbyte] c"EOF\00" ; <[4 x sbyte]*> [#uses=1] -%.LC11 = internal global [4 x sbyte] c"%d\0A\00" ; <[4 x sbyte]*> [#uses=1] -%.LC12 = internal global [17 x sbyte] c"spec_getc: %d = \00" ; <[17 x sbyte]*> [#uses=1] +declare i32 @fprintf(%FILE*, i8*, ...) -implementation ; Functions: +declare void @exit(i32) -declare int "fprintf"(%FILE*, sbyte*, ...) +declare i32 @remove(i8*) -declare void "exit"(int) +declare i32 @fputc(i32, %FILE*) -declare int "remove"(sbyte*) +declare i32 @fwrite(i8*, i32, i32, %FILE*) -declare int "fputc"(int, %FILE*) +declare void @perror(i8*) -declare uint "fwrite"(sbyte*, uint, uint, %FILE*) +define i32 @spec_getc(i32 %fd) { + %reg109 = load i32* @dbglvl ; <i32> [#uses=1] + %cond266 = icmp sle i32 %reg109, 4 ; <i1> [#uses=1] + br i1 %cond266, label %bb3, label %bb2 -declare void "perror"(sbyte*) - -int "spec_getc"(int %fd) { -; <label>:0 ;[#uses=0] - %reg109 = load int* %dbglvl ; <int> [#uses=1] - %cond266 = setle int %reg109, 4 ; <bool> [#uses=1] - br bool %cond266, label %bb3, label %bb2 - -bb2: ;[#uses=1] - %cast273 = getelementptr [17 x sbyte]* %.LC12, long 0, long 0 ; <sbyte*> [#uses=0] +bb2: ; preds = %0 + %cast273 = getelementptr [17 x i8]* @.LC12, i64 0, i64 0 ; <i8*> [#uses=0] br label %bb3 -bb3: ;[#uses=2] - %cond267 = setle int %fd, 3 ; <bool> [#uses=1] -; br bool %cond267, label %bb5, label %bb4 +bb3: ; preds = %bb2, %0 + %cond267 = icmp sle i32 %fd, 3 ; <i1> [#uses=0] br label %bb5 -bb4: ;[#uses=2] - %reg111 = getelementptr [20 x %FILE]* %__iob, long 0, long 1, uint 3 ; <ubyte*> [#uses=1] - %cast274 = getelementptr [34 x sbyte]* %.LC9, long 0, long 0 ; <sbyte*> [#uses=0] - %cast282 = cast ubyte* %reg111 to %FILE* ; <%FILE*> [#uses=0] - call void %exit( int 1 ) +bb4: ; No predecessors! + %reg111 = getelementptr [20 x %FILE]* @__iob, i64 0, i64 1, i32 3 ; <i8*> [#uses=1] + %cast274 = getelementptr [34 x i8]* @.LC9, i64 0, i64 0 ; <i8*> [#uses=0] + %cast282 = bitcast i8* %reg111 to %FILE* ; <%FILE*> [#uses=0] + call void @exit( i32 1 ) br label %UnifiedExitNode -bb5: ;[#uses=1] - %reg107-idxcast1 = cast int %fd to long ; <long> [#uses=2] - %reg107-idxcast2 = cast int %fd to long ; <long> [#uses=1] - %reg1311 = getelementptr [3 x %spec_fd_t]* %spec_fd, long 0, long %reg107-idxcast2 ; <%spec_fd_t*> [#uses=1] - %idx1 = getelementptr [3 x %spec_fd_t]* %spec_fd, long 0, long %reg107-idxcast1, uint 2 ; <int> [#uses=3] - %reg1321 = load int* %idx1 - %idx2 = getelementptr %spec_fd_t* %reg1311, long 0, uint 1 ; <int> [#uses=1] - %reg1331 = load int* %idx2 - %cond270 = setlt int %reg1321, %reg1331 ; <bool> [#uses=1] - br bool %cond270, label %bb9, label %bb6 - -bb6: ;[#uses=1] - %reg134 = load int* %dbglvl ; <int> [#uses=1] - %cond271 = setle int %reg134, 4 ; <bool> [#uses=1] - br bool %cond271, label %bb8, label %bb7 - -bb7: ;[#uses=1] - %cast277 = getelementptr [4 x sbyte]* %.LC10, long 0, long 0 ; <sbyte*> [#uses=0] +bb5: ; preds = %bb3 + %reg107-idxcast1 = sext i32 %fd to i64 ; <i64> [#uses=2] + %reg107-idxcast2 = sext i32 %fd to i64 ; <i64> [#uses=1] + %reg1311 = getelementptr [3 x %spec_fd_t]* @spec_fd, i64 0, i64 %reg107-idxcast2 ; <%spec_fd_t*> [#uses=1] + %idx1 = getelementptr [3 x %spec_fd_t]* @spec_fd, i64 0, i64 %reg107-idxcast1, i32 2 ; <i32*> [#uses=1] + %reg1321 = load i32* %idx1 ; <i32> [#uses=3] + %idx2 = getelementptr %spec_fd_t* %reg1311, i64 0, i32 1 ; <i32*> [#uses=1] + %reg1331 = load i32* %idx2 ; <i32> [#uses=1] + %cond270 = icmp slt i32 %reg1321, %reg1331 ; <i1> [#uses=1] + br i1 %cond270, label %bb9, label %bb6 + +bb6: ; preds = %bb5 + %reg134 = load i32* @dbglvl ; <i32> [#uses=1] + %cond271 = icmp sle i32 %reg134, 4 ; <i1> [#uses=1] + br i1 %cond271, label %bb8, label %bb7 + +bb7: ; preds = %bb6 + %cast277 = getelementptr [4 x i8]* @.LC10, i64 0, i64 0 ; <i8*> [#uses=0] br label %bb8 -bb8: ;[#uses=3] +bb8: ; preds = %bb7, %bb6 br label %UnifiedExitNode -bb9: ;[#uses=1] - %reg107-idxcast3 = cast int %fd to long ; <uint> [#uses=1] - %idx3 = getelementptr [3 x %spec_fd_t]* %spec_fd, long 0, long %reg107-idxcast3, uint 3 ; <ubyte*> [#uses=1] - %reg1601 = load ubyte** %idx3 - %reg132-idxcast1 = cast int %reg1321 to long ; <long> [#uses=1] - %idx4 = getelementptr ubyte* %reg1601, long %reg132-idxcast1 ; <ubyte> [#uses=2] - %reg1621 = load ubyte* %idx4 - %cast108 = cast ubyte %reg1621 to long ; <long> [#uses=0] - %reg157 = add int %reg1321, 1 ; <int> [#uses=1] - %idx5 = getelementptr [3 x %spec_fd_t]* %spec_fd, long 0, long %reg107-idxcast1, uint 2 - store int %reg157, int* %idx5 - %reg163 = load int* %dbglvl ; <int> [#uses=1] - %cond272 = setle int %reg163, 4 ; <bool> [#uses=1] - br bool %cond272, label %bb11, label %bb10 - -bb10: ;[#uses=1] - %cast279 = getelementptr [4 x sbyte]* %.LC11, long 0, long 0 ; <sbyte*> [#uses=0] +bb9: ; preds = %bb5 + %reg107-idxcast3 = sext i32 %fd to i64 ; <i64> [#uses=1] + %idx3 = getelementptr [3 x %spec_fd_t]* @spec_fd, i64 0, i64 %reg107-idxcast3, i32 3 ; <i8**> [#uses=1] + %reg1601 = load i8** %idx3 ; <i8*> [#uses=1] + %reg132-idxcast1 = sext i32 %reg1321 to i64 ; <i64> [#uses=1] + %idx4 = getelementptr i8* %reg1601, i64 %reg132-idxcast1 ; <i8*> [#uses=1] + %reg1621 = load i8* %idx4 ; <i8> [#uses=2] + %cast108 = zext i8 %reg1621 to i64 ; <i64> [#uses=0] + %reg157 = add i32 %reg1321, 1 ; <i32> [#uses=1] + %idx5 = getelementptr [3 x %spec_fd_t]* @spec_fd, i64 0, i64 %reg107-idxcast1, i32 2 ; <i32*> [#uses=1] + store i32 %reg157, i32* %idx5 + %reg163 = load i32* @dbglvl ; <i32> [#uses=1] + %cond272 = icmp sle i32 %reg163, 4 ; <i1> [#uses=1] + br i1 %cond272, label %bb11, label %bb10 + +bb10: ; preds = %bb9 + %cast279 = getelementptr [4 x i8]* @.LC11, i64 0, i64 0 ; <i8*> [#uses=0] br label %bb11 -bb11: ;[#uses=3] - %cast291 = cast ubyte %reg1621 to int ; <int> [#uses=1] +bb11: ; preds = %bb10, %bb9 + %cast291 = zext i8 %reg1621 to i32 ; <i32> [#uses=1] br label %UnifiedExitNode -UnifiedExitNode: ;[#uses=3] - %UnifiedRetVal = phi int [ 42, %bb4 ], [ -1, %bb8 ], [ %cast291, %bb11 ] ; <int> [#uses=1] - ret int %UnifiedRetVal +UnifiedExitNode: ; preds = %bb11, %bb8, %bb4 + %UnifiedRetVal = phi i32 [ 42, %bb4 ], [ -1, %bb8 ], [ %cast291, %bb11 ] ; <i32> [#uses=1] + ret i32 %UnifiedRetVal } -declare int "puts"(sbyte*) +declare i32 @puts(i8*) -declare int "printf"(sbyte*, ...) +declare i32 @printf(i8*, ...) diff --git a/test/Transforms/ADCE/dead-phi-edge.ll b/test/Transforms/ADCE/dead-phi-edge.ll index a0c0705..8445601 100644 --- a/test/Transforms/ADCE/dead-phi-edge.ll +++ b/test/Transforms/ADCE/dead-phi-edge.ll @@ -1,15 +1,17 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -adce | llvm-dis | not grep call +; RUN: llvm-as < %s | opt -adce | llvm-dis | not grep call ; The call is not live just because the PHI uses the call retval! -int %test(int %X) { - br label %Done +define i32 @test(i32 %X) { +; <label>:0 + br label %Done -DeadBlock: - %Y = call int %test(int 0) - br label %Done +DeadBlock: ; No predecessors! + %Y = call i32 @test( i32 0 ) ; <i32> [#uses=1] + br label %Done -Done: - %Z = phi int [%X, %0], [%Y, %DeadBlock] - ret int %Z +Done: ; preds = %DeadBlock, %0 + %Z = phi i32 [ %X, %0 ], [ %Y, %DeadBlock ] ; <i32> [#uses=1] + ret i32 %Z } + diff --git a/test/Transforms/ADCE/unreachable-function.ll b/test/Transforms/ADCE/unreachable-function.ll index 0c10253..86c55f5 100644 --- a/test/Transforms/ADCE/unreachable-function.ll +++ b/test/Transforms/ADCE/unreachable-function.ll @@ -1,5 +1,5 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -adce -disable-output +; RUN: llvm-as < %s | opt -adce -disable-output -void %test() { +define void @test() { unreachable } |