diff options
author | Chris Lattner <sabre@nondot.org> | 2010-03-05 07:18:54 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2010-03-05 07:18:54 +0000 |
commit | 893075f46e9d07e3fe94e2b0e0f3ff8ae4061549 (patch) | |
tree | 559032cbece8aab60e2e7f1d1f988769b2acc45d /test | |
parent | 25ec483cfca8d3a3ba8728a4a126e04b92789069 (diff) | |
download | external_llvm-893075f46e9d07e3fe94e2b0e0f3ff8ae4061549.zip external_llvm-893075f46e9d07e3fe94e2b0e0f3ff8ae4061549.tar.gz external_llvm-893075f46e9d07e3fe94e2b0e0f3ff8ae4061549.tar.bz2 |
fix a nice subtle reassociate bug which would only occur
in a very specific use pattern embodied in the carefully
reduced testcase.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97794 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r-- | test/Transforms/Reassociate/crash.ll | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/test/Transforms/Reassociate/crash.ll b/test/Transforms/Reassociate/crash.ll index 060018d..6f21b66 100644 --- a/test/Transforms/Reassociate/crash.ll +++ b/test/Transforms/Reassociate/crash.ll @@ -23,11 +23,22 @@ entry: %3 = add nsw i32 undef, %1 %4 = add nsw i32 %3, %2 %5 = add nsw i32 %4, 4 - %6 = shl i32 %0, 3 ; <i32> [#uses=1] + %6 = shl i32 %0, 3 %7 = add nsw i32 %5, %6 br label %bb4.i9 -bb4.i9: ; preds = %bb3.i7, %bb1.i25.i +bb4.i9: %8 = add nsw i32 undef, %1 ret i32 0 } + + +define i32 @test3(i32 %Arg, i32 %x1, i32 %x2, i32 %x3) { + %A = mul i32 %x1, %Arg + %B = mul i32 %Arg, %x2 ;; Part of add operation being factored, also used by C + %C = mul i32 %x3, %B + + %D = add i32 %A, %B + %E = add i32 %D, %C + ret i32 %E +} |