aboutsummaryrefslogtreecommitdiffstats
path: root/test/Other
diff options
context:
space:
mode:
Diffstat (limited to 'test/Other')
-rw-r--r--test/Other/2002-01-31-CallGraph.ll15
-rw-r--r--test/Other/2002-02-24-InlineBrokePHINodes.ll26
-rw-r--r--test/Other/2002-03-11-ConstPropCrash.ll25
-rw-r--r--test/Other/2003-02-19-LoopInfoNestingBug.ll28
-rw-r--r--test/Other/2004-08-16-LowerPacked.ll20
-rw-r--r--test/Other/2004-08-16-PackedConstantInlineStore.ll11
-rw-r--r--test/Other/2004-08-16-PackedGlobalConstant.ll13
-rw-r--r--test/Other/2004-08-16-PackedSelect.ll15
-rw-r--r--test/Other/2004-08-16-PackedSimple.ll15
-rw-r--r--test/Other/2004-08-20-PackedControlFlow.ll23
-rw-r--r--test/Other/2006-02-05-PassManager.ll5
-rw-r--r--test/Other/2007-04-24-eliminate-mostly-empty-blocks.ll309
-rw-r--r--test/Other/2007-06-05-PassID.ll11
-rw-r--r--test/Other/2007-06-16-Funcname.ll7
-rw-r--r--test/Other/2007-06-28-PassManager.ll7
-rw-r--r--test/Other/dg.exp3
16 files changed, 533 insertions, 0 deletions
diff --git a/test/Other/2002-01-31-CallGraph.ll b/test/Other/2002-01-31-CallGraph.ll
new file mode 100644
index 0000000..61c1277
--- /dev/null
+++ b/test/Other/2002-01-31-CallGraph.ll
@@ -0,0 +1,15 @@
+; Call graph construction crash: Not handling indirect calls right
+;
+; RUN: llvm-upgrade < %s | llvm-as | opt -analyze -callgraph
+;
+
+%FunTy = type int(int)
+
+implementation
+
+void "invoke"(%FunTy *%x)
+begin
+ %foo = call %FunTy* %x(int 123)
+ ret void
+end
+
diff --git a/test/Other/2002-02-24-InlineBrokePHINodes.ll b/test/Other/2002-02-24-InlineBrokePHINodes.ll
new file mode 100644
index 0000000..cb02ea4
--- /dev/null
+++ b/test/Other/2002-02-24-InlineBrokePHINodes.ll
@@ -0,0 +1,26 @@
+; Inlining used to break PHI nodes. This tests that they are correctly updated
+; when a node is split around the call instruction. The verifier caught the error.
+;
+; RUN: llvm-upgrade < %s | llvm-as | opt -inline
+;
+implementation
+
+ulong "test"(ulong %X)
+begin
+ ret ulong %X
+end
+
+ulong "fib"(ulong %n)
+begin
+ %T = setlt ulong %n, 2 ; {bool}:0
+ br bool %T, label %BaseCase, label %RecurseCase
+
+RecurseCase:
+ %result = call ulong %test(ulong %n)
+ br label %BaseCase
+
+BaseCase:
+ %X = phi ulong [1, %0], [2, %RecurseCase]
+ ret ulong %X
+end
+
diff --git a/test/Other/2002-03-11-ConstPropCrash.ll b/test/Other/2002-03-11-ConstPropCrash.ll
new file mode 100644
index 0000000..91bea53
--- /dev/null
+++ b/test/Other/2002-03-11-ConstPropCrash.ll
@@ -0,0 +1,25 @@
+; When constant propogating terminator instructions, the basic block iterator
+; was not updated to refer to the final position of the new terminator. This
+; can be bad, f.e. because constproping a terminator can lead to the
+; destruction of PHI nodes, which invalidates the iterator!
+;
+; Fixed by adding new arguments to ConstantFoldTerminator
+;
+; RUN: llvm-upgrade < %s | llvm-as | opt -constprop
+
+implementation
+
+void "build_tree"(int %ml)
+begin
+ br label %bb2
+
+bb2:
+ %reg137 = phi int [ %reg140, %bb2 ], [ 12, %0 ] ; <int> [#uses=2]
+ %reg138 = phi uint [ %reg139, %bb2 ], [ 0, %0 ] ; <uint> [#uses=3]
+ %reg139 = add uint %reg138, 1 ; <uint> [#uses=1]
+ %reg140 = add int %reg137, -1 ; <int> [#uses=1]
+ br bool false, label %bb2, label %bb3
+
+bb3:
+ ret void
+end
diff --git a/test/Other/2003-02-19-LoopInfoNestingBug.ll b/test/Other/2003-02-19-LoopInfoNestingBug.ll
new file mode 100644
index 0000000..ebad6ba
--- /dev/null
+++ b/test/Other/2003-02-19-LoopInfoNestingBug.ll
@@ -0,0 +1,28 @@
+; LoopInfo is incorrectly calculating loop nesting! In this case it doesn't
+; figure out that loop "Inner" should be nested inside of leep "LoopHeader",
+; and instead nests it just inside loop "Top"
+;
+; RUN: llvm-upgrade < %s | llvm-as | opt -analyze -loops | \
+; RUN: grep { Loop Containing:\[ \]*%Inner}
+;
+
+implementation
+
+void %test() {
+ br label %Top
+Top:
+ br label %LoopHeader
+Next:
+ br bool false, label %Inner, label %Out
+Inner:
+ br bool false, label %Inner, label %LoopHeader
+
+LoopHeader:
+ br label %Next
+
+Out:
+ br bool false, label %Top, label %Done
+
+Done:
+ ret void
+}
diff --git a/test/Other/2004-08-16-LowerPacked.ll b/test/Other/2004-08-16-LowerPacked.ll
new file mode 100644
index 0000000..1d8da1d
--- /dev/null
+++ b/test/Other/2004-08-16-LowerPacked.ll
@@ -0,0 +1,20 @@
+; RUN: llvm-upgrade < %s | llvm-as | opt -lower-packed | llvm-dis
+
+%foo = uninitialized global <2 x int>;
+%bar = uninitialized global <2 x int>;
+
+implementation ; Functions:
+
+void %main()
+{
+ %t0 = load <2 x int>* %foo
+ %t2 = add <2 x int> %t0, %t0
+ %t3 = select bool false, <2 x int> %t0, <2 x int> %t2
+ store <2 x int> %t3, <2 x int>* %bar
+
+ %c0 = add <2 x int> <int 1, int 1>, %t0
+ %c1 = add <2 x int> %t0, <int 0, int 0>
+ %c2 = select bool true, <2 x int> <int 1, int 1>, <2 x int> %t0
+ store <2 x int> <int 4, int 4>, <2 x int>* %foo
+ ret void
+} \ No newline at end of file
diff --git a/test/Other/2004-08-16-PackedConstantInlineStore.ll b/test/Other/2004-08-16-PackedConstantInlineStore.ll
new file mode 100644
index 0000000..6f94d99
--- /dev/null
+++ b/test/Other/2004-08-16-PackedConstantInlineStore.ll
@@ -0,0 +1,11 @@
+; RUN: llvm-upgrade < %s | llvm-as | llvm-dis
+
+%bar = external global <2 x int> ; <<2 x int>*> [#uses=1]
+
+implementation ; Functions:
+
+void %main()
+{
+ store <2 x int> < int 0, int 1 >, <2 x int>* %bar
+ ret void
+}
diff --git a/test/Other/2004-08-16-PackedGlobalConstant.ll b/test/Other/2004-08-16-PackedGlobalConstant.ll
new file mode 100644
index 0000000..01b0d5d
--- /dev/null
+++ b/test/Other/2004-08-16-PackedGlobalConstant.ll
@@ -0,0 +1,13 @@
+; RUN: llvm-upgrade < %s | llvm-as | llvm-dis
+
+%foo = global <2 x int> <int 0, int 1>;
+%bar = uninitialized global <2 x int>;
+
+implementation ; Functions:
+
+void %main()
+{
+ %t0 = load <2 x int>* %foo;
+ store <2 x int> %t0, <2 x int>* %bar
+ ret void
+} \ No newline at end of file
diff --git a/test/Other/2004-08-16-PackedSelect.ll b/test/Other/2004-08-16-PackedSelect.ll
new file mode 100644
index 0000000..5bbf20c
--- /dev/null
+++ b/test/Other/2004-08-16-PackedSelect.ll
@@ -0,0 +1,15 @@
+; RUN: llvm-upgrade < %s | llvm-as | llvm-dis
+
+%foo = uninitialized global <4 x float>;
+%bar = uninitialized global <4 x float>;
+
+implementation ; Functions:
+
+void %main()
+{
+ %t0 = load <4 x float>* %foo
+ %t1 = add <4 x float> %t0, %t0
+ %t2 = select bool true, <4 x float> %t0, <4 x float> %t1
+ store <4 x float> %t2, <4 x float>* %bar
+ ret void
+} \ No newline at end of file
diff --git a/test/Other/2004-08-16-PackedSimple.ll b/test/Other/2004-08-16-PackedSimple.ll
new file mode 100644
index 0000000..9835199
--- /dev/null
+++ b/test/Other/2004-08-16-PackedSimple.ll
@@ -0,0 +1,15 @@
+; RUN: llvm-upgrade < %s | llvm-as | llvm-dis
+
+%foo = uninitialized global <4 x float>;
+%bar = uninitialized global <4 x float>;
+
+implementation ; Functions:
+
+void %main()
+{
+ %t0 = load <4 x float>* %foo
+ %t2 = add <4 x float> %t0, %t0
+ %t3 = select bool false, <4 x float> %t0, <4 x float> %t2
+ store <4 x float> %t3, <4 x float>* %bar
+ ret void
+} \ No newline at end of file
diff --git a/test/Other/2004-08-20-PackedControlFlow.ll b/test/Other/2004-08-20-PackedControlFlow.ll
new file mode 100644
index 0000000..d2566b1
--- /dev/null
+++ b/test/Other/2004-08-20-PackedControlFlow.ll
@@ -0,0 +1,23 @@
+; RUN: llvm-upgrade < %s | llvm-as | llvm-dis | llvm-as > /dev/null
+
+%v4f = type <4 x float>
+
+%foo = uninitialized global %v4f
+%bar = uninitialized global %v4f
+
+implementation ; Functions:
+
+void %main() {
+ br label %A
+C:
+ store %v4f %t2, %v4f* %bar
+ ret void
+
+B:
+ %t2 = add %v4f %t0, %t0
+ br label %C
+
+A:
+ %t0 = load %v4f* %foo
+ br label %B
+}
diff --git a/test/Other/2006-02-05-PassManager.ll b/test/Other/2006-02-05-PassManager.ll
new file mode 100644
index 0000000..5d7b680
--- /dev/null
+++ b/test/Other/2006-02-05-PassManager.ll
@@ -0,0 +1,5 @@
+; RUN: llvm-as < %s | opt -domtree -gcse -domtree -constmerge -disable-output
+
+define i32 @test1() {
+ unreachable
+}
diff --git a/test/Other/2007-04-24-eliminate-mostly-empty-blocks.ll b/test/Other/2007-04-24-eliminate-mostly-empty-blocks.ll
new file mode 100644
index 0000000..1bb8683
--- /dev/null
+++ b/test/Other/2007-04-24-eliminate-mostly-empty-blocks.ll
@@ -0,0 +1,309 @@
+;RUN: llvm-upgrade < %s | llvm-as | opt -codegenprepare -disable-output
+
+void @foo() {
+entry:
+ br i1 false, label %cond_next31, label %cond_true
+
+cond_true: ; preds = %entry
+ br i1 false, label %cond_true19, label %cond_next31
+
+cond_true19: ; preds = %cond_true
+ br i1 false, label %bb510, label %cond_next31
+
+cond_next31: ; preds = %cond_true19, %cond_true, %entry
+ br i1 false, label %cond_true61, label %cond_next78
+
+cond_true61: ; preds = %cond_next31
+ br label %cond_next78
+
+cond_next78: ; preds = %cond_true61, %cond_next31
+ br i1 false, label %cond_true93, label %bb.preheader
+
+cond_true93: ; preds = %cond_next78
+ br label %bb.preheader
+
+bb.preheader: ; preds = %cond_true93, %cond_next78
+ %iftmp.11.0.ph.ph = phi i16 [ 0, %cond_true93 ], [ 0, %cond_next78 ] ; <i16> [#uses=1]
+ br label %bb
+
+bb: ; preds = %cond_next499, %bb.preheader
+ %n.1 = phi i16 [ %iftmp.11.0.ph.ph, %cond_next499 ], [ 0, %bb.preheader ] ; <i16> [#uses=0]
+ br i1 false, label %bb148.preheader, label %bb493
+
+bb148.preheader: ; preds = %bb
+ br label %bb148
+
+bb148: ; preds = %cond_next475, %bb148.preheader
+ br i1 false, label %cond_next175, label %bb184
+
+cond_next175: ; preds = %bb148
+ br i1 false, label %bb184, label %bb185
+
+bb184: ; preds = %cond_next175, %bb148
+ br label %bb185
+
+bb185: ; preds = %bb184, %cond_next175
+ br i1 false, label %bb420.preheader, label %cond_true198
+
+bb420.preheader: ; preds = %bb185
+ br label %bb420
+
+cond_true198: ; preds = %bb185
+ br i1 false, label %bb294, label %cond_next208
+
+cond_next208: ; preds = %cond_true198
+ br i1 false, label %cond_next249, label %cond_true214
+
+cond_true214: ; preds = %cond_next208
+ br i1 false, label %bb294, label %cond_next262
+
+cond_next249: ; preds = %cond_next208
+ br i1 false, label %bb294, label %cond_next262
+
+cond_next262: ; preds = %cond_next249, %cond_true214
+ br label %bb269
+
+bb269: ; preds = %cond_next285, %cond_next262
+ br i1 false, label %cond_next285, label %cond_true279
+
+cond_true279: ; preds = %bb269
+ br label %cond_next285
+
+cond_next285: ; preds = %cond_true279, %bb269
+ br i1 false, label %bb269, label %cond_next446.loopexit
+
+bb294: ; preds = %cond_next249, %cond_true214, %cond_true198
+ br i1 false, label %cond_next336, label %cond_true301
+
+cond_true301: ; preds = %bb294
+ br i1 false, label %cond_false398, label %cond_true344
+
+cond_next336: ; preds = %bb294
+ br i1 false, label %cond_false398, label %cond_true344
+
+cond_true344: ; preds = %cond_next336, %cond_true301
+ br i1 false, label %cond_false381, label %cond_true351
+
+cond_true351: ; preds = %cond_true344
+ br label %cond_next387
+
+cond_false381: ; preds = %cond_true344
+ br label %cond_next387
+
+cond_next387: ; preds = %cond_false381, %cond_true351
+ br label %cond_next401
+
+cond_false398: ; preds = %cond_next336, %cond_true301
+ br label %cond_next401
+
+cond_next401: ; preds = %cond_false398, %cond_next387
+ br i1 false, label %cond_next475, label %cond_true453
+
+bb420: ; preds = %cond_next434, %bb420.preheader
+ br i1 false, label %cond_next434, label %cond_true428
+
+cond_true428: ; preds = %bb420
+ br label %cond_next434
+
+cond_next434: ; preds = %cond_true428, %bb420
+ br i1 false, label %bb420, label %cond_next446.loopexit1
+
+cond_next446.loopexit: ; preds = %cond_next285
+ br label %cond_next446
+
+cond_next446.loopexit1: ; preds = %cond_next434
+ br label %cond_next446
+
+cond_next446: ; preds = %cond_next446.loopexit1, %cond_next446.loopexit
+ br i1 false, label %cond_next475, label %cond_true453
+
+cond_true453: ; preds = %cond_next446, %cond_next401
+ br i1 false, label %cond_true458, label %cond_next475
+
+cond_true458: ; preds = %cond_true453
+ br label %cond_next475
+
+cond_next475: ; preds = %cond_true458, %cond_true453, %cond_next446, %cond_next401
+ br i1 false, label %bb493.loopexit, label %bb148
+
+bb493.loopexit: ; preds = %cond_next475
+ br label %bb493
+
+bb493: ; preds = %bb493.loopexit, %bb
+ br i1 false, label %cond_next499, label %bb510.loopexit
+
+cond_next499: ; preds = %bb493
+ br label %bb
+
+bb510.loopexit: ; preds = %bb493
+ br label %bb510
+
+bb510: ; preds = %bb510.loopexit, %cond_true19
+ br i1 false, label %cond_next524, label %cond_true517
+
+cond_true517: ; preds = %bb510
+ br label %cond_next524
+
+cond_next524: ; preds = %cond_true517, %bb510
+ br i1 false, label %cond_next540, label %cond_true533
+
+cond_true533: ; preds = %cond_next524
+ br label %cond_next540
+
+cond_next540: ; preds = %cond_true533, %cond_next524
+ br i1 false, label %cond_true554, label %cond_next560
+
+cond_true554: ; preds = %cond_next540
+ br label %cond_next560
+
+cond_next560: ; preds = %cond_true554, %cond_next540
+ br i1 false, label %cond_true566, label %cond_next572
+
+cond_true566: ; preds = %cond_next560
+ br label %cond_next572
+
+cond_next572: ; preds = %cond_true566, %cond_next560
+ br i1 false, label %bb608.preheader, label %bb791.preheader
+
+bb608.preheader: ; preds = %cond_next797.us, %cond_next572
+ br label %bb608
+
+bb608: ; preds = %cond_next771, %bb608.preheader
+ br i1 false, label %cond_false627, label %cond_true613
+
+cond_true613: ; preds = %bb608
+ br label %cond_next640
+
+cond_false627: ; preds = %bb608
+ br label %cond_next640
+
+cond_next640: ; preds = %cond_false627, %cond_true613
+ br i1 false, label %cond_true653, label %cond_next671
+
+cond_true653: ; preds = %cond_next640
+ br label %cond_next671
+
+cond_next671: ; preds = %cond_true653, %cond_next640
+ br i1 false, label %cond_true683, label %cond_next724
+
+cond_true683: ; preds = %cond_next671
+ br i1 false, label %cond_next724, label %L1
+
+cond_next724: ; preds = %cond_true683, %cond_next671
+ br i1 false, label %cond_true735, label %L1
+
+cond_true735: ; preds = %cond_next724
+ br label %L1
+
+L1: ; preds = %cond_true735, %cond_next724, %cond_true683
+ br i1 false, label %cond_true745, label %cond_next771
+
+cond_true745: ; preds = %L1
+ br label %cond_next771
+
+cond_next771: ; preds = %cond_true745, %L1
+ br i1 false, label %bb608, label %bb791.preheader.loopexit
+
+bb791.preheader.loopexit: ; preds = %cond_next771
+ br label %bb791.preheader
+
+bb791.preheader: ; preds = %bb791.preheader.loopexit, %cond_next572
+ br i1 false, label %cond_next797.us, label %bb809.split
+
+cond_next797.us: ; preds = %bb791.preheader
+ br label %bb608.preheader
+
+bb809.split: ; preds = %bb791.preheader
+ br i1 false, label %cond_next827, label %cond_true820
+
+cond_true820: ; preds = %bb809.split
+ br label %cond_next827
+
+cond_next827: ; preds = %cond_true820, %bb809.split
+ br i1 false, label %cond_true833, label %cond_next840
+
+cond_true833: ; preds = %cond_next827
+ br label %cond_next840
+
+cond_next840: ; preds = %cond_true833, %cond_next827
+ br i1 false, label %bb866, label %bb1245
+
+bb866: ; preds = %bb1239, %cond_next840
+ br i1 false, label %cond_true875, label %bb911
+
+cond_true875: ; preds = %bb866
+ br label %cond_next1180
+
+bb911: ; preds = %bb866
+ switch i32 0, label %bb1165 [
+ i32 0, label %bb915
+ i32 1, label %bb932
+ i32 2, label %bb941
+ i32 3, label %bb1029
+ i32 4, label %bb1036
+ i32 5, label %bb1069
+ i32 6, label %L3
+ ]
+
+bb915: ; preds = %cond_next1171, %bb911
+ br i1 false, label %cond_next1171, label %cond_next1180
+
+bb932: ; preds = %cond_next1171, %bb911
+ br label %L1970
+
+bb941: ; preds = %cond_next1171, %bb911
+ br label %L1970
+
+L1970: ; preds = %bb941, %bb932
+ br label %bb1165
+
+bb1029: ; preds = %cond_next1171, %bb911
+ br label %L4
+
+bb1036: ; preds = %cond_next1171, %bb911
+ br label %L4
+
+bb1069: ; preds = %cond_next1171, %bb911
+ br i1 false, label %cond_next1121, label %cond_true1108
+
+L3: ; preds = %cond_next1171, %bb911
+ br i1 false, label %cond_next1121, label %cond_true1108
+
+cond_true1108: ; preds = %L3, %bb1069
+ br label %L4
+
+cond_next1121: ; preds = %L3, %bb1069
+ br label %L4
+
+L4: ; preds = %cond_next1121, %cond_true1108, %bb1036, %bb1029
+ br label %bb1165
+
+bb1165: ; preds = %cond_next1171, %L4, %L1970, %bb911
+ br i1 false, label %cond_next1171, label %cond_next1180
+
+cond_next1171: ; preds = %bb1165, %bb915
+ switch i32 0, label %bb1165 [
+ i32 0, label %bb915
+ i32 1, label %bb932
+ i32 2, label %bb941
+ i32 3, label %bb1029
+ i32 4, label %bb1036
+ i32 5, label %bb1069
+ i32 6, label %L3
+ ]
+
+cond_next1180: ; preds = %bb1165, %bb915, %cond_true875
+ br label %bb1239
+
+bb1239: ; preds = %cond_next1251, %cond_next1180
+ br i1 false, label %bb866, label %bb1245
+
+bb1245: ; preds = %bb1239, %cond_next840
+ br i1 false, label %cond_next1251, label %bb1257
+
+cond_next1251: ; preds = %bb1245
+ br label %bb1239
+
+bb1257: ; preds = %bb1245
+ ret void
+}
diff --git a/test/Other/2007-06-05-PassID.ll b/test/Other/2007-06-05-PassID.ll
new file mode 100644
index 0000000..25923a5
--- /dev/null
+++ b/test/Other/2007-06-05-PassID.ll
@@ -0,0 +1,11 @@
+;RUN: llvm-as < %s | opt -analyze -print-cfg-only -disable-output
+;PR 1497
+
+define void @foo() {
+entry:
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
diff --git a/test/Other/2007-06-16-Funcname.ll b/test/Other/2007-06-16-Funcname.ll
new file mode 100644
index 0000000..a2cdd18
--- /dev/null
+++ b/test/Other/2007-06-16-Funcname.ll
@@ -0,0 +1,7 @@
+; RUN: llvm-as < %s | llvm2cpp -funcname=WAKKA | not grep makeLLVMModule
+; PR1515
+
+define void @foo() {
+ ret void
+}
+
diff --git a/test/Other/2007-06-28-PassManager.ll b/test/Other/2007-06-28-PassManager.ll
new file mode 100644
index 0000000..5968d8c
--- /dev/null
+++ b/test/Other/2007-06-28-PassManager.ll
@@ -0,0 +1,7 @@
+; RUN: llvm-as < %s | opt -analyze -inline -disable-output
+; PR 1526
+; RUN: llvm-as < %s | opt -analyze -indvars -disable-output
+; PR 1539
+define i32 @test1() {
+ ret i32 0;
+}
diff --git a/test/Other/dg.exp b/test/Other/dg.exp
new file mode 100644
index 0000000..879685c
--- /dev/null
+++ b/test/Other/dg.exp
@@ -0,0 +1,3 @@
+load_lib llvm.exp
+
+RunLLVMTests [lsort [glob -nocomplain $srcdir/$subdir/*.{ll,llx,c,cpp,tr}]]