; CHECK: 0: 00 00 9f e5 ldr r0, [pc]
; CHECK: 4: 0e f0 a0 e1 mov pc, lr
; Make sure the constant pool entry comes after the return
-; CHECK: 8: 01 00 00 00
+; CHECK: 8: 78 56 34 12
define i32 @foo() nounwind {
entry:
- %0 = tail call i32 asm sideeffect "ldr $0,=1", "=r"() nounwind
+ %0 = tail call i32 asm sideeffect "ldr $0,=0x12345678", "=r"() nounwind
ret i32 %0
}
.section __TEXT,b,regular,pure_instructions
@ CHECK-LABEL: f3:
f3:
- ldr r0, =0x10001
+ ldr r0, =0x10002
@ CHECK: ldr r0, Ltmp0
@ loading multiple constants
.section __TEXT,c,regular,pure_instructions
@ CHECK-LABEL: f4:
f4:
- ldr r0, =0x10002
+ ldr r0, =0x10003
@ CHECK: ldr r0, Ltmp1
adds r0, r0, #1
adds r0, r0, #1
adds r0, r0, #1
adds r0, r0, #1
- ldr r0, =0x10003
+ ldr r0, =0x10004
@ CHECK: ldr r0, Ltmp2
adds r0, r0, #1
adds r0, r0, #1
.section __TEXT,d,regular,pure_instructions
@ CHECK-LABEL: f5:
f5:
- ldr r0, =0x10004
+ ldr r0, =0x10005
@ CHECK: ldr r0, Ltmp3
adds r0, r0, #1
adds r0, r0, #1
adds r0, r0, #1
adds r0, r0, #1
adds r0, r0, #1
- ldr r0, =0x10004
+ ldr r0, =0x10005
@ CHECK: ldr r0, Ltmp4
adds r0, r0, #1
adds r0, r0, #1
f13:
adds r0, r0, #1
adds r0, r0, #1
- ldr r0, =0x101
+ ldr r0, =0x10008
@ CHECK: ldr r0, Ltmp10
adds r0, r0, #1
adds r0, r0, #1
@ usage in macro
.macro useit_in_a_macro
- ldr r0, =0x10008
+ ldr r0, =0x10009
ldr r0, =baz
.endm
.section __TEXT,k,regular,pure_instructions
.section __TEXT,l,regular,pure_instructions
@ CHECK-LABEL: f15:
f15:
- ldr r0, =0x10001+8
+ ldr r0, =0x10001+9
@ CHECK: ldr r0, Ltmp14
adds r0, r0, #1
ldr r0, =bar+4
@ CHECK: .data_region
@ CHECK: .p2align 2
@ CHECK-LABEL: Ltmp0:
-@ CHECK: .long 65537
+@ CHECK: .long 65538
@ CHECK: .end_data_region
@ CHECK: .section __TEXT,c,regular,pure_instructions
@ CHECK: .data_region
@ CHECK: .p2align 2
@ CHECK-LABEL: Ltmp1:
-@ CHECK: .long 65538
+@ CHECK: .long 65539
@ CHECK: .p2align 2
@ CHECK-LABEL: Ltmp2:
-@ CHECK: .long 65539
+@ CHECK: .long 65540
@ CHECK: .end_data_region
@ CHECK: .section __TEXT,d,regular,pure_instructions
@ CHECK: .data_region
@ CHECK: .p2align 2
@ CHECK-LABEL: Ltmp3:
-@ CHECK: .long 65540
+@ CHECK: .long 65541
@ CHECK: .p2align 2
@ CHECK-LABEL: Ltmp4:
-@ CHECK: .long 65540
+@ CHECK: .long 65541
@ CHECK: .end_data_region
@ CHECK: .section __TEXT,e,regular,pure_instructions
@ CHECK: .data_region
@ CHECK: .p2align 2
@ CHECK-LABEL: Ltmp10:
-@ CHECK: .long 257
+@ CHECK: .long 65544
@ CHECK: .p2align 2
@ CHECK-LABEL: Ltmp11:
@ CHECK: .long bar
@ CHECK: .data_region
@ CHECK: .p2align 2
@ CHECK-LABEL: Ltmp12:
-@ CHECK: .long 65544
+@ CHECK: .long 65545
@ CHECK: .p2align 2
@ CHECK-LABEL: Ltmp13:
@ CHECK: .long baz
@ CHECK: .data_region
@ CHECK: .p2align 2
@ CHECK-LABEL: Ltmp14:
-@ CHECK: .long 65545
+@ CHECK: .long 65546
@ CHECK: .p2align 2
@ CHECK-LABEL: Ltmp15:
@ CHECK: .long bar+4
.text
foo:
- ldr r0, =0x101
+ ldr r0, =0x12345678
.space 8000
@ CHECK: error: out of range pc-relative fixup value
-@ CHECK: ldr r0, =0x101
+@ CHECK: ldr r0, =0x12345678
@ CHECK: ^
.section b,"ax",%progbits
@ CHECK-LABEL: f3:
f3:
- ldr r0, =0x10001
+ ldr r0, =0x10002
@ CHECK: ldr r0, .Ltmp[[TMP0:[0-9]+]]
@ loading multiple constants
.section c,"ax",%progbits
@ CHECK-LABEL: f4:
f4:
- ldr r0, =0x10002
+ ldr r0, =0x10003
@ CHECK: ldr r0, .Ltmp[[TMP1:[0-9]+]]
adds r0, r0, #1
adds r0, r0, #1
adds r0, r0, #1
adds r0, r0, #1
- ldr r0, =0x10003
+ ldr r0, =0x10004
@ CHECK: ldr r0, .Ltmp[[TMP2:[0-9]+]]
adds r0, r0, #1
adds r0, r0, #1
.section d,"ax",%progbits
@ CHECK-LABEL: f5:
f5:
- ldr r0, =0x10004
+ ldr r0, =0x10005
@ CHECK: ldr r0, .Ltmp[[TMP3:[0-9]+]]
adds r0, r0, #1
adds r0, r0, #1
adds r0, r0, #1
adds r0, r0, #1
adds r0, r0, #1
- ldr r0, =0x10004
+ ldr r0, =0x10005
@ CHECK: ldr r0, .Ltmp[[TMP4:[0-9]+]]
adds r0, r0, #1
adds r0, r0, #1
f13:
adds r0, r0, #1
adds r0, r0, #1
- ldr r0, =0x101
+ ldr r0, =0x10008
@ CHECK: ldr r0, .Ltmp[[TMP10:[0-9]+]]
adds r0, r0, #1
adds r0, r0, #1
@ usage in macro
.macro useit_in_a_macro
- ldr r0, =0x10008
+ ldr r0, =0x10009
ldr r0, =baz
.endm
.section k,"ax",%progbits
.section l, "ax", %progbits
@ CHECK-LABEL: f15:
f15:
- ldr r0, =0x10001+8
+ ldr r0, =0x10001+9
@ CHECK: ldr r0, .Ltmp[[TMP14:[0-9]+]]
adds r0, r0, #1
ldr r0, =bar+4
@ CHECK: .section b,"ax",%progbits
@ CHECK: .p2align 2
@ CHECK: .Ltmp[[TMP0]]
-@ CHECK: .long 65537
+@ CHECK: .long 65538
@ CHECK: .section c,"ax",%progbits
@ CHECK: .p2align 2
@ CHECK: .Ltmp[[TMP1]]
-@ CHECK: .long 65538
-@ CHECK: .Ltmp[[TMP2]]
@ CHECK: .long 65539
+@ CHECK: .Ltmp[[TMP2]]
+@ CHECK: .long 65540
@ CHECK: .section d,"ax",%progbits
@ CHECK: .p2align 2
@ CHECK: .Ltmp[[TMP3]]
-@ CHECK: .long 65540
+@ CHECK: .long 65541
@ CHECK: .Ltmp[[TMP4]]
-@ CHECK: .long 65540
+@ CHECK: .long 65541
@ CHECK: .section e,"ax",%progbits
@ CHECK: .p2align 2
@ CHECK: .section j,"ax",%progbits
@ CHECK: .p2align 2
@ CHECK: .Ltmp[[TMP10]]
-@ CHECK: .long 257
+@ CHECK: .long 65544
@ CHECK: .Ltmp[[TMP11]]
@ CHECK: .long bar
@ CHECK: .section k,"ax",%progbits
@ CHECK: .p2align 2
@ CHECK: .Ltmp[[TMP12]]
-@ CHECK: .long 65544
+@ CHECK: .long 65545
@ CHECK: .Ltmp[[TMP13]]
@ CHECK: .long baz
@ CHECK: .section l,"ax",%progbits
@ CHECK: .p2align 2
@ CHECK: .Ltmp[[TMP14]]
-@ CHECK: .long 65545
+@ CHECK: .long 65546
@ CHECK: .Ltmp[[TMP15]]
@ CHECK: .long bar+4
.section __TEXT,a,regular,pure_instructions
@ CHECK-LABEL: f2:
f2:
- ldr r0, =0x10001
+ ldr r0, =0x10002
@ CHECK: ldr r0, Ltmp0
adds r0, r0, #1
adds r0, r0, #1
@ CHECK: .data_region
@ CHECK: .p2align 2
@ CHECK-LABEL: Ltmp0:
-@ CHECK: .long 65537
+@ CHECK: .long 65538
@ CHECK: .end_data_region
@ CHECK-LABEL: f3:
.section __TEXT,b,regular,pure_instructions
@ CHECK-LABEL: f4:
f4:
- ldr r0, =0x10002
+ ldr r0, =0x10003
@ CHECK: ldr r0, Ltmp1
adds r0, r0, #1
adds r0, r0, #1
@ CHECK: .data_region
@ CHECK: .p2align 2
@ CHECK-LABEL: Ltmp1:
-@ CHECK: .long 65538
+@ CHECK: .long 65539
@ CHECK: .end_data_region
@ CHECK-LABEL: f5:
f5:
adds r0, r0, #1
adds r0, r0, #1
- ldr r0, =0x10003
+ ldr r0, =0x10004
@ CHECK: ldr r0, Ltmp2
adds r0, r0, #1
b f6
@ CHECK: .data_region
@ CHECK: .p2align 2
@ CHECK-LABEL: Ltmp2:
-@ CHECK: .long 65539
+@ CHECK: .long 65540
@ CHECK: .end_data_region
@ CHECK-LABEL: f6:
f11:
adds r0, r0, #1
adds r0, r0, #1
- ldr r0, =0x10004
+ ldr r0, =0x10005
@ CHECK: ldr r0, Ltmp4
b f12
.ltorg
@ CHECK: .data_region
@ CHECK: .p2align 2
@ CHECK-LABEL: Ltmp4:
-@ CHECK: .long 65540
+@ CHECK: .long 65541
@ CHECK: .end_data_region
@ CHECK-LABEL: f12:
f12:
adds r0, r0, #1
- ldr r0, =0x10005
+ ldr r0, =0x10006
@ CHECK: ldr r0, Ltmp5
.section __TEXT,f,regular,pure_instructions
@ CHECK: .data_region
@ CHECK: .p2align 2
@ CHECK-LABEL: Ltmp5:
-@ CHECK: .long 65541
+@ CHECK: .long 65542
@ CHECK: .end_data_region
@ should not have a constant pool at end of section with empty constant pools
.section a,"ax",%progbits
@ CHECK-LABEL: f2:
f2:
- ldr r0, =0x10001
+ ldr r0, =0x10002
@ CHECK: ldr r0, .Ltmp[[TMP0:[0-9+]]]
adds r0, r0, #1
adds r0, r0, #1
@ constant pool
@ CHECK: .p2align 2
@ CHECK: .Ltmp[[TMP0]]
-@ CHECK: .long 65537
+@ CHECK: .long 65538
@ CHECK-LABEL: f3:
f3:
.section b,"ax",%progbits
@ CHECK-LABEL: f4:
f4:
- ldr r0, =0x10002
+ ldr r0, =0x10003
@ CHECK: ldr r0, .Ltmp[[TMP1:[0-9+]]]
adds r0, r0, #1
adds r0, r0, #1
@ constant pool
@ CHECK: .p2align 2
@ CHECK: .Ltmp[[TMP1]]
-@ CHECK: .long 65538
+@ CHECK: .long 65539
@ CHECK-LABEL: f5:
f5:
adds r0, r0, #1
adds r0, r0, #1
- ldr r0, =0x10003
+ ldr r0, =0x10004
@ CHECK: ldr r0, .Ltmp[[TMP2:[0-9+]]]
adds r0, r0, #1
b f6
@ constant pool
@ CHECK: .p2align 2
@ CHECK: .Ltmp[[TMP2]]
-@ CHECK: .long 65539
+@ CHECK: .long 65540
@ CHECK-LABEL: f6:
f6:
f11:
adds r0, r0, #1
adds r0, r0, #1
- ldr r0, =0x10004
+ ldr r0, =0x10005
@ CHECK: ldr r0, .Ltmp[[TMP4:[0-9+]]]
b f12
.ltorg
@ constant pool
@ CHECK: .p2align 2
@ CHECK: .Ltmp[[TMP4]]
-@ CHECK: .long 65540
+@ CHECK: .long 65541
@ CHECK-LABEL: f12:
f12:
adds r0, r0, #1
- ldr r0, =0x10005
+ ldr r0, =0x10006
@ CHECK: ldr r0, .Ltmp[[TMP5:[0-9+]]]
.section f,"ax",%progbits
@ constant pool
@ CHECK: .p2align 2
@ CHECK: .Ltmp[[TMP5]]
-@ CHECK: .long 65541
+@ CHECK: .long 65542
@ should not have a constant pool at end of section with empty constant pools
@ CHECK-NOT: .section f,"ax",%progbits