diff options
author | Chris Lattner <sabre@nondot.org> | 2002-05-16 01:03:12 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2002-05-16 01:03:12 +0000 |
commit | 5abaa0c2905ea6c5a15056783f01c9551b49f63b (patch) | |
tree | 22e507ab11666674984c4e6030880ee794008016 /test/Analysis | |
parent | c95057b1b725c21a45eb5e8c1d65523d3c1673e9 (diff) | |
download | external_llvm-5abaa0c2905ea6c5a15056783f01c9551b49f63b.zip external_llvm-5abaa0c2905ea6c5a15056783f01c9551b49f63b.tar.gz external_llvm-5abaa0c2905ea6c5a15056783f01c9551b49f63b.tar.bz2 |
Add tests of redundant load elimination
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2636 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Analysis')
-rw-r--r-- | test/Analysis/LoadVN/RLE-Eliminate.ll | 26 | ||||
-rw-r--r-- | test/Analysis/LoadVN/RLE-Preserve.ll | 27 |
2 files changed, 53 insertions, 0 deletions
diff --git a/test/Analysis/LoadVN/RLE-Eliminate.ll b/test/Analysis/LoadVN/RLE-Eliminate.ll new file mode 100644 index 0000000..a8b1bf9 --- /dev/null +++ b/test/Analysis/LoadVN/RLE-Eliminate.ll @@ -0,0 +1,26 @@ +; This testcase ensures that redundant loads are eliminated when they should +; be. All RL variables (redundant loads) should be eliminated. +; +; RUN: if as < %s | opt -gcse | dis | grep %RL +; RUN: then exit 1 +; RUN: else exit 0 +; RUN: fi +; +int "test1"(int* %P) { + %A = load int* %P + %RL = load int* %P + %C = add int %A, %RL + ret int %C +} + +int "test2"(int* %P) { + %A = load int* %P + br label %BB2 +BB2: + br label %BB3 +BB3: + %RL = load int* %P + %B = add int %A, %RL + ret int %B +} + diff --git a/test/Analysis/LoadVN/RLE-Preserve.ll b/test/Analysis/LoadVN/RLE-Preserve.ll new file mode 100644 index 0000000..50a3256 --- /dev/null +++ b/test/Analysis/LoadVN/RLE-Preserve.ll @@ -0,0 +1,27 @@ +; This testcase ensures that redundant loads are preserved when they are not +; allowed to be eliminated. +; RUN: as < %s | dis > Output/%s.before +; RUN: as < %s | opt -gcse | dis > Output/%s.after +; RUN: diff Output/%s.before Output/%s.after +; +int "test1"(int* %P) { + %A = load int* %P + store int 1, int * %P + %B = load int* %P + %C = add int %A, %B + ret int %C +} + +int "test2"(int* %P) { + %A = load int* %P + br label %BB2 +BB2: + store int 5, int * %P + br label %BB3 +BB3: + %B = load int* %P + %C = add int %A, %B + ret int %C +} + + |