mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 10:42:39 +01:00
2362398441
The code assumed that zero-extending the integer constant to the designated alloc size would be fine even for BE targets, but that's not the case as that pulls in zeros from the MSB side while we actually expect the padding zeros to go after the LSB. I've changed the codepath handling the constant integers to use the store size for both small(er than u64) and big constants and then add zero padding right after that. Differential Revision: https://reviews.llvm.org/D78011
21 lines
569 B
LLVM
21 lines
569 B
LLVM
; RUN: llc -mtriple=thumbv7-unknown-unknown -target-abi apcs < %s | FileCheck %s
|
|
; Check assembly printing of odd constants.
|
|
|
|
; CHECK: bigCst:
|
|
; CHECK-NEXT: .long 1694510592
|
|
; CHECK-NEXT: .long 2960197
|
|
; CHECK-NEXT: .short 26220
|
|
; CHECK-NEXT: .byte 0
|
|
; CHECK-NEXT: .zero 1
|
|
; 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, i82* @bigCst
|
|
%tmp = add i82 %bigLoadedCst, 1
|
|
store i82 %tmp, i82* %addr
|
|
ret void
|
|
}
|