diff options
| author | David Majnemer <david.majnemer@gmail.com> | 2015-06-24 21:27:36 +0000 |
|---|---|---|
| committer | David Majnemer <david.majnemer@gmail.com> | 2015-06-24 21:27:36 +0000 |
| commit | f6e500a0dca4c16799deca466481b4a1e9cbcdbd (patch) | |
| tree | 92c40becdd5cf20f04f316dcce952247b2bde5d7 /llvm/test/Transforms | |
| parent | 64ea207027a7dee2b7fb1bfb85df8e4ac46f3a67 (diff) | |
| download | bcm5719-llvm-f6e500a0dca4c16799deca466481b4a1e9cbcdbd.tar.gz bcm5719-llvm-f6e500a0dca4c16799deca466481b4a1e9cbcdbd.zip | |
[Reassociate] Don't propogate flags when creating negations
Reassociate mutated existing instructions in order to form negations
which would create additional reassociate opportunities.
This fixes PR23926.
llvm-svn: 240593
Diffstat (limited to 'llvm/test/Transforms')
| -rw-r--r-- | llvm/test/Transforms/Reassociate/basictest.ll | 8 | ||||
| -rw-r--r-- | llvm/test/Transforms/Reassociate/wrap-flags.ll | 11 |
2 files changed, 17 insertions, 2 deletions
diff --git a/llvm/test/Transforms/Reassociate/basictest.ll b/llvm/test/Transforms/Reassociate/basictest.ll index caaf7726514..c557017b4c6 100644 --- a/llvm/test/Transforms/Reassociate/basictest.ll +++ b/llvm/test/Transforms/Reassociate/basictest.ll @@ -169,7 +169,11 @@ define i32 @test11(i32 %W) { ; CHECK-NEXT: ret i32 } +declare void @mumble(i32) + define i32 @test12(i32 %X) { + %X.neg = sub nsw nuw i32 0, %X + call void @mumble(i32 %X.neg) %A = sub i32 1, %X %B = sub i32 2, %X %C = sub i32 3, %X @@ -177,8 +181,8 @@ define i32 @test12(i32 %X) { %Z = add i32 %Y, %C ret i32 %Z ; CHECK-LABEL: @test12 -; CHECK-NEXT: mul i32 %X, -3 -; CHECK-NEXT: add i32{{.*}}, 6 +; CHECK: %[[mul:.*]] = mul i32 %X, -3 +; CHECK-NEXT: add i32 %[[mul]], 6 ; CHECK-NEXT: ret i32 } diff --git a/llvm/test/Transforms/Reassociate/wrap-flags.ll b/llvm/test/Transforms/Reassociate/wrap-flags.ll index e3304b6a7bb..f56719d32c2 100644 --- a/llvm/test/Transforms/Reassociate/wrap-flags.ll +++ b/llvm/test/Transforms/Reassociate/wrap-flags.ll @@ -32,3 +32,14 @@ entry: %mul2 = add i32 %mul, 1 ret i32 %mul2 } + +; CHECK-LABEL: @pr23926( +; CHECK: %[[X1_neg:.*]] = sub i2 0, %X1 +; CHECK-NEXT: %[[sub_one:.*]] = add i2 %[[X1_neg]], -1 +; CHECK-NEXT: %[[add:.*]] = add i2 %[[sub_one]], %X2 +; CHECK-NEXT: ret i2 %[[add]] +define i2 @pr23926(i2 %X1, i2 %X2) { + %add = add nuw i2 %X1, 1 + %sub = sub nuw nsw i2 %X2, %add + ret i2 %sub +} |

