aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2002-10-31 05:38:19 +0000
committerChris Lattner <sabre@nondot.org>2002-10-31 05:38:19 +0000
commitdb94ca13b86c89358b19c91a5b1b79d9b24859ca (patch)
tree26c98454dc00707174022b21c0611dc717e01c91
parentf89e7c90c7846016c4eaf716d700e17fae90ed6e (diff)
New testcases
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4464 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--test/Transforms/DSAnalysis/arraymerge.ll18
-rw-r--r--test/Transforms/DSAnalysis/misctests.ll66
2 files changed, 84 insertions, 0 deletions
diff --git a/test/Transforms/DSAnalysis/arraymerge.ll b/test/Transforms/DSAnalysis/arraymerge.ll
new file mode 100644
index 0000000000..2d0a577bc4
--- /dev/null
+++ b/test/Transforms/DSAnalysis/arraymerge.ll
@@ -0,0 +1,18 @@
+; This testcase is used to make sure that the outer element of arrays are
+; folded completely away if possible. This is a very common case, so it should
+; be efficient.
+;
+implementation
+
+sbyte* %merge1([100 x sbyte] *%A, long %N) {
+ %P = getelementptr [100 x sbyte] *%A, long 0, long %N
+ ret sbyte* %P
+}
+
+sbyte* %merge2([100 x sbyte] *%A, long %N) {
+ ; The graph for this example should end up exactly the same as for merge1
+ %P1 = getelementptr [100 x sbyte] *%A, long 0, long 0
+ %P2 = getelementptr sbyte* %P1, long %N
+ ret sbyte* %P2
+}
+
diff --git a/test/Transforms/DSAnalysis/misctests.ll b/test/Transforms/DSAnalysis/misctests.ll
new file mode 100644
index 0000000000..4c692b41f7
--- /dev/null
+++ b/test/Transforms/DSAnalysis/misctests.ll
@@ -0,0 +1,66 @@
+
+
+int* %test1(int *%A) {
+ %R = getelementptr int* %A, long 1
+ ret int* %R
+}
+
+int* %test2(uint %Num) {
+ %A = malloc sbyte, uint %Num
+ %B = cast sbyte* %A to int*
+ ret int* %B
+}
+
+int* %test3(uint %Num) {
+ %A = malloc sbyte, uint %Num
+ %B = cast sbyte* %A to int*
+ %C = getelementptr int* %B, long 5
+ ret int* %C
+}
+
+int* %test4(bool %C, uint %Num) {
+ br bool %C, label %L1, label %L2
+L1:
+ %A = malloc sbyte, uint %Num
+ %B = cast sbyte* %A to int*
+ br label %L3
+L2:
+ %C = malloc int, uint %Num
+ br label %L3
+L3:
+ %D = phi int* [%B, %L1], [%C, %L2]
+ %E = getelementptr int* %D, long 5
+ ret int* %E
+}
+
+int* %test5(bool %C, uint %Num) {
+ br bool %C, label %L1, label %L2
+L1:
+ %C = malloc int, uint %Num
+ br label %L3
+L2:
+ %A = malloc sbyte, uint %Num
+ %B = cast sbyte* %A to int*
+ br label %L3
+L3:
+ %D = phi int* [%C, %L1], [%B, %L2]
+ %E = getelementptr int* %D, long 5
+ ret int* %E
+}
+
+int %test6({int, int}* %A) {
+ %B = getelementptr {int, int}* %A, long 0, ubyte 0
+ %b = load int* %B
+ %C = getelementptr {int, int}* %A, long 0, ubyte 1
+ %c = load int* %C
+ %d = add int %b, %c
+ ret int %d
+}
+
+sbyte* %test7(uint %Num) {
+ %X = malloc sbyte, uint %Num
+ %Y = getelementptr sbyte* %X, long 1
+ store sbyte 0, sbyte* %Y
+ ret sbyte* %X
+}
+