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
This commit is contained in:
Quentin Colombet
2013-06-07 18:36:03 +00:00
parent 576d49a775
commit fcca6c690c
4 changed files with 95 additions and 2 deletions

View File

@@ -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
}