From db94ca13b86c89358b19c91a5b1b79d9b24859ca Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Thu, 31 Oct 2002 05:38:19 +0000 Subject: [PATCH] New testcases git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4464 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/Transforms/DSAnalysis/arraymerge.ll | 18 +++++++ test/Transforms/DSAnalysis/misctests.ll | 66 ++++++++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 test/Transforms/DSAnalysis/arraymerge.ll create mode 100644 test/Transforms/DSAnalysis/misctests.ll diff --git a/test/Transforms/DSAnalysis/arraymerge.ll b/test/Transforms/DSAnalysis/arraymerge.ll new file mode 100644 index 00000000000..2d0a577bc40 --- /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 00000000000..4c692b41f7f --- /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 +} + -- 2.34.1