diff options
author | Quentin Colombet <qcolombet@apple.com> | 2013-06-07 18:36:03 +0000 |
---|---|---|
committer | Quentin Colombet <qcolombet@apple.com> | 2013-06-07 18:36:03 +0000 |
commit | fcca6c690cc86123f175582772cb1554cc7e8d81 (patch) | |
tree | 4fe1e6e8d9fb6a7d29ddfc9dd16d8d32f829f5aa /test | |
parent | 576d49a775043931d81bba172b9b11f40d858cb6 (diff) | |
download | external_llvm-fcca6c690cc86123f175582772cb1554cc7e8d81.zip external_llvm-fcca6c690cc86123f175582772cb1554cc7e8d81.tar.gz external_llvm-fcca6c690cc86123f175582772cb1554cc7e8d81.tar.bz2 |
Teach AsmPrinter how to print odd constants.
Fix an assertion when the compiler encounters big constants whose bit width is
not a multiple of 64-bits.
Although clang would never generate something like this, the backend should be
able to handle any legal IR.
<rdar://problem/13363576>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183544 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r-- | test/CodeGen/ARM/emit-big-cst.ll | 18 | ||||
-rw-r--r-- | test/CodeGen/Mips/emit-big-cst.ll | 17 | ||||
-rw-r--r-- | test/CodeGen/X86/emit-big-cst.ll | 17 |
3 files changed, 52 insertions, 0 deletions
diff --git a/test/CodeGen/ARM/emit-big-cst.ll b/test/CodeGen/ARM/emit-big-cst.ll new file mode 100644 index 0000000..9a3367d --- /dev/null +++ b/test/CodeGen/ARM/emit-big-cst.ll @@ -0,0 +1,18 @@ +; RUN: llc -mtriple=thumbv7-unknown-unknown < %s | FileCheck %s +; Check assembly printing of odd constants. + +; CHECK: bigCst: +; CHECK-NEXT: .long 1694510592 +; CHECK-NEXT: .long 2960197 +; CHECK-NEXT: .long 26220 +; CHECK-NEXT: .size bigCst, 12 + +@bigCst = internal constant i82 483673642326615442599424 + +define void @accessBig(i64* %storage) { + %addr = bitcast i64* %storage to i82* + %bigLoadedCst = load volatile i82* @bigCst + %tmp = add i82 %bigLoadedCst, 1 + store i82 %tmp, i82* %addr + ret void +} diff --git a/test/CodeGen/Mips/emit-big-cst.ll b/test/CodeGen/Mips/emit-big-cst.ll new file mode 100644 index 0000000..a168743 --- /dev/null +++ b/test/CodeGen/Mips/emit-big-cst.ll @@ -0,0 +1,17 @@ +; RUN: llc -march=mips < %s | FileCheck %s +; Check assembly printing of odd constants. + +; CHECK: bigCst: +; CHECK-NEXT: .8byte 1845068520838224192 +; CHECK-NEXT: .8byte 11776 +; CHECK-NEXT: .size bigCst, 16 + +@bigCst = internal constant i82 483673642326615442599424 + +define void @accessBig(i64* %storage) { + %addr = bitcast i64* %storage to i82* + %bigLoadedCst = load volatile i82* @bigCst + %tmp = add i82 %bigLoadedCst, 1 + store i82 %tmp, i82* %addr + ret void +} diff --git a/test/CodeGen/X86/emit-big-cst.ll b/test/CodeGen/X86/emit-big-cst.ll new file mode 100644 index 0000000..96c15d4 --- /dev/null +++ b/test/CodeGen/X86/emit-big-cst.ll @@ -0,0 +1,17 @@ +; RUN: llc -mtriple=x86_64-unknown-unknown < %s | FileCheck %s +; Check assembly printing of odd constants. + +; CHECK: bigCst: +; CHECK-NEXT: .quad 12713950999227904 +; CHECK-NEXT: .quad 26220 +; CHECK-NEXT: .size bigCst, 16 + +@bigCst = internal constant i82 483673642326615442599424 + +define void @accessBig(i64* %storage) { + %addr = bitcast i64* %storage to i82* + %bigLoadedCst = load volatile i82* @bigCst + %tmp = add i82 %bigLoadedCst, 1 + store i82 %tmp, i82* %addr + ret void +} |