diff options
Diffstat (limited to 'test/Transforms/DeadStoreElimination')
-rw-r--r-- | test/Transforms/DeadStoreElimination/2004-12-28-PartialStore.ll | 2 | ||||
-rw-r--r-- | test/Transforms/DeadStoreElimination/PartialStore.ll | 11 |
2 files changed, 13 insertions, 0 deletions
diff --git a/test/Transforms/DeadStoreElimination/2004-12-28-PartialStore.ll b/test/Transforms/DeadStoreElimination/2004-12-28-PartialStore.ll index c28e79e554..d9160e5222 100644 --- a/test/Transforms/DeadStoreElimination/2004-12-28-PartialStore.ll +++ b/test/Transforms/DeadStoreElimination/2004-12-28-PartialStore.ll @@ -1,5 +1,7 @@ ; RUN: llvm-as < %s | opt -dse | llvm-dis | grep 'store int 1234567' +; Do not delete stores that are only partially killed. + int %test() { %V = alloca int store int 1234567, int* %V diff --git a/test/Transforms/DeadStoreElimination/PartialStore.ll b/test/Transforms/DeadStoreElimination/PartialStore.ll new file mode 100644 index 0000000000..bc8fd3ab6b --- /dev/null +++ b/test/Transforms/DeadStoreElimination/PartialStore.ll @@ -0,0 +1,11 @@ +; RUN: llvm-as < %s | opt -dse | llvm-dis | not grep 'store sbyte' +; Ensure that the dead store is deleted in this case. It is wholely +; overwritten by the second store. +int %test() { + %V = alloca int + %V2 = cast int* %V to sbyte* + store sbyte 0, sbyte* %V2 + store int 1234567, int* %V + %X = load int* %V + ret int %X +} |