diff options
author | Nadav Rotem <nrotem@apple.com> | 2012-11-14 19:39:15 +0000 |
---|---|---|
committer | Nadav Rotem <nrotem@apple.com> | 2012-11-14 19:39:15 +0000 |
commit | 50b66387e3eda89ba0097fedc237e41eac5d6808 (patch) | |
tree | 1076c6ec6cdab906d811329aa04f9714e007a2b6 /test/CodeGen | |
parent | 714a587115aab2068117223ed4d2315795c8bd28 (diff) | |
download | external_llvm-50b66387e3eda89ba0097fedc237e41eac5d6808.zip external_llvm-50b66387e3eda89ba0097fedc237e41eac5d6808.tar.gz external_llvm-50b66387e3eda89ba0097fedc237e41eac5d6808.tar.bz2 |
The code pattern "imm0_255_neg" is used for checking if an immediate value is a small negative number.
This patch changes the definition of negative from -0..-255 to -1..-255. I am changing this because of
a bug that we had in some of the patterns that assumed that "subs" of zero does not set the carry flag.
rdar://12028498
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167963 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen')
-rw-r--r-- | test/CodeGen/ARM/2012-11-14-subs_carry.ll | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/test/CodeGen/ARM/2012-11-14-subs_carry.ll b/test/CodeGen/ARM/2012-11-14-subs_carry.ll new file mode 100644 index 0000000..38700f3 --- /dev/null +++ b/test/CodeGen/ARM/2012-11-14-subs_carry.ll @@ -0,0 +1,31 @@ +; RUN: llc < %s -mtriple=thumbv7-apple-ios | FileCheck %s + +;CHECK: foo +;CHECK: adds +;CHECK-NEXT: adc +;CHECK-NEXT: bx + +;rdar://12028498 + +define i32 @foo() nounwind ssp { +entry: + %tmp2 = zext i32 3 to i64 + br label %bug_block + +bug_block: + %tmp410 = and i64 1031, 1647010 + %tmp411 = and i64 %tmp2, -211 + %tmp412 = shl i64 %tmp410, %tmp2 + %tmp413 = shl i64 %tmp411, %tmp2 + %tmp415 = and i64 %tmp413, 1 + %tmp420 = xor i64 0, %tmp415 + %tmp421 = and i64 %tmp412, %tmp415 + %tmp422 = shl i64 %tmp421, 1 + br label %finish + +finish: + %tmp423 = lshr i64 %tmp422, 32 + %tmp424 = trunc i64 %tmp423 to i32 + ret i32 %tmp424 +} + |