summaryrefslogtreecommitdiff
path: root/test/CodeGen/X86/emit-big-cst.ll
diff options
context:
space:
mode:
authorQuentin Colombet <qcolombet@apple.com>2013-06-07 18:36:03 +0000
committerQuentin Colombet <qcolombet@apple.com>2013-06-07 18:36:03 +0000
commitfcca6c690cc86123f175582772cb1554cc7e8d81 (patch)
tree4fe1e6e8d9fb6a7d29ddfc9dd16d8d32f829f5aa /test/CodeGen/X86/emit-big-cst.ll
parent576d49a775043931d81bba172b9b11f40d858cb6 (diff)
downloadllvm-fcca6c690cc86123f175582772cb1554cc7e8d81.tar.gz
llvm-fcca6c690cc86123f175582772cb1554cc7e8d81.tar.bz2
llvm-fcca6c690cc86123f175582772cb1554cc7e8d81.tar.xz
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/CodeGen/X86/emit-big-cst.ll')
-rw-r--r--test/CodeGen/X86/emit-big-cst.ll17
1 files changed, 17 insertions, 0 deletions
diff --git a/test/CodeGen/X86/emit-big-cst.ll b/test/CodeGen/X86/emit-big-cst.ll
new file mode 100644
index 0000000000..96c15d4a36
--- /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
+}