1*9880d681SAndroid Build Coastguard Worker@ This test has a partner (ltorg-darwin.s) that contains matching 2*9880d681SAndroid Build Coastguard Worker@ tests for the .ltorg on darwin targets. We need separate files 3*9880d681SAndroid Build Coastguard Worker@ because the syntax for switching sections and temporary labels differs 4*9880d681SAndroid Build Coastguard Worker@ between darwin and linux. Any tests added here should have a matching 5*9880d681SAndroid Build Coastguard Worker@ test added there. 6*9880d681SAndroid Build Coastguard Worker 7*9880d681SAndroid Build Coastguard Worker@RUN: llvm-mc -triple armv7-unknown-linux-gnueabi %s | FileCheck %s 8*9880d681SAndroid Build Coastguard Worker@RUN: llvm-mc -triple thumbv5-unknown-linux-gnueabi %s | FileCheck %s 9*9880d681SAndroid Build Coastguard Worker@RUN: llvm-mc -triple thumbv7-unknown-linux-gnueabi %s | FileCheck %s 10*9880d681SAndroid Build Coastguard Worker 11*9880d681SAndroid Build Coastguard Worker@ check that ltorg dumps the constant pool at the current location 12*9880d681SAndroid Build Coastguard Worker.section a,"ax",%progbits 13*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: f2: 14*9880d681SAndroid Build Coastguard Workerf2: 15*9880d681SAndroid Build Coastguard Worker ldr r0, =0x10002 16*9880d681SAndroid Build Coastguard Worker@ CHECK: ldr r0, .Ltmp[[TMP0:[0-9+]]] 17*9880d681SAndroid Build Coastguard Worker adds r0, r0, #1 18*9880d681SAndroid Build Coastguard Worker adds r0, r0, #1 19*9880d681SAndroid Build Coastguard Worker b f3 20*9880d681SAndroid Build Coastguard Worker.ltorg 21*9880d681SAndroid Build Coastguard Worker@ constant pool 22*9880d681SAndroid Build Coastguard Worker@ CHECK: .p2align 2 23*9880d681SAndroid Build Coastguard Worker@ CHECK: .Ltmp[[TMP0]] 24*9880d681SAndroid Build Coastguard Worker@ CHECK: .long 65538 25*9880d681SAndroid Build Coastguard Worker 26*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: f3: 27*9880d681SAndroid Build Coastguard Workerf3: 28*9880d681SAndroid Build Coastguard Worker adds r0, r0, #1 29*9880d681SAndroid Build Coastguard Worker adds r0, r0, #1 30*9880d681SAndroid Build Coastguard Worker 31*9880d681SAndroid Build Coastguard Worker@ check that ltorg clears the constant pool after dumping it 32*9880d681SAndroid Build Coastguard Worker.section b,"ax",%progbits 33*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: f4: 34*9880d681SAndroid Build Coastguard Workerf4: 35*9880d681SAndroid Build Coastguard Worker ldr r0, =0x10003 36*9880d681SAndroid Build Coastguard Worker@ CHECK: ldr r0, .Ltmp[[TMP1:[0-9+]]] 37*9880d681SAndroid Build Coastguard Worker adds r0, r0, #1 38*9880d681SAndroid Build Coastguard Worker adds r0, r0, #1 39*9880d681SAndroid Build Coastguard Worker b f5 40*9880d681SAndroid Build Coastguard Worker.ltorg 41*9880d681SAndroid Build Coastguard Worker@ constant pool 42*9880d681SAndroid Build Coastguard Worker@ CHECK: .p2align 2 43*9880d681SAndroid Build Coastguard Worker@ CHECK: .Ltmp[[TMP1]] 44*9880d681SAndroid Build Coastguard Worker@ CHECK: .long 65539 45*9880d681SAndroid Build Coastguard Worker 46*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: f5: 47*9880d681SAndroid Build Coastguard Workerf5: 48*9880d681SAndroid Build Coastguard Worker adds r0, r0, #1 49*9880d681SAndroid Build Coastguard Worker adds r0, r0, #1 50*9880d681SAndroid Build Coastguard Worker ldr r0, =0x10004 51*9880d681SAndroid Build Coastguard Worker@ CHECK: ldr r0, .Ltmp[[TMP2:[0-9+]]] 52*9880d681SAndroid Build Coastguard Worker adds r0, r0, #1 53*9880d681SAndroid Build Coastguard Worker b f6 54*9880d681SAndroid Build Coastguard Worker.ltorg 55*9880d681SAndroid Build Coastguard Worker@ constant pool 56*9880d681SAndroid Build Coastguard Worker@ CHECK: .p2align 2 57*9880d681SAndroid Build Coastguard Worker@ CHECK: .Ltmp[[TMP2]] 58*9880d681SAndroid Build Coastguard Worker@ CHECK: .long 65540 59*9880d681SAndroid Build Coastguard Worker 60*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: f6: 61*9880d681SAndroid Build Coastguard Workerf6: 62*9880d681SAndroid Build Coastguard Worker adds r0, r0, #1 63*9880d681SAndroid Build Coastguard Worker adds r0, r0, #1 64*9880d681SAndroid Build Coastguard Worker 65*9880d681SAndroid Build Coastguard Worker@ check that ltorg does not issue an error if there is no constant pool 66*9880d681SAndroid Build Coastguard Worker.section c,"ax",%progbits 67*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: f7: 68*9880d681SAndroid Build Coastguard Workerf7: 69*9880d681SAndroid Build Coastguard Worker adds r0, r0, #1 70*9880d681SAndroid Build Coastguard Worker b f8 71*9880d681SAndroid Build Coastguard Worker .ltorg 72*9880d681SAndroid Build Coastguard Workerf8: 73*9880d681SAndroid Build Coastguard Worker adds r0, r0, #1 74*9880d681SAndroid Build Coastguard Worker 75*9880d681SAndroid Build Coastguard Worker@ check that ltorg works for labels 76*9880d681SAndroid Build Coastguard Worker.section d,"ax",%progbits 77*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: f9: 78*9880d681SAndroid Build Coastguard Workerf9: 79*9880d681SAndroid Build Coastguard Worker adds r0, r0, #1 80*9880d681SAndroid Build Coastguard Worker adds r0, r0, #1 81*9880d681SAndroid Build Coastguard Worker ldr r0, =bar 82*9880d681SAndroid Build Coastguard Worker@ CHECK: ldr r0, .Ltmp[[TMP3:[0-9+]]] 83*9880d681SAndroid Build Coastguard Worker adds r0, r0, #1 84*9880d681SAndroid Build Coastguard Worker adds r0, r0, #1 85*9880d681SAndroid Build Coastguard Worker adds r0, r0, #1 86*9880d681SAndroid Build Coastguard Worker b f10 87*9880d681SAndroid Build Coastguard Worker.ltorg 88*9880d681SAndroid Build Coastguard Worker@ constant pool 89*9880d681SAndroid Build Coastguard Worker@ CHECK: .p2align 2 90*9880d681SAndroid Build Coastguard Worker@ CHECK: .Ltmp[[TMP3]] 91*9880d681SAndroid Build Coastguard Worker@ CHECK: .long bar 92*9880d681SAndroid Build Coastguard Worker 93*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: f10: 94*9880d681SAndroid Build Coastguard Workerf10: 95*9880d681SAndroid Build Coastguard Worker adds r0, r0, #1 96*9880d681SAndroid Build Coastguard Worker adds r0, r0, #1 97*9880d681SAndroid Build Coastguard Worker 98*9880d681SAndroid Build Coastguard Worker@ check that use of ltorg does not prevent dumping non-empty constant pools at end of section 99*9880d681SAndroid Build Coastguard Worker.section e,"ax",%progbits 100*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: f11: 101*9880d681SAndroid Build Coastguard Workerf11: 102*9880d681SAndroid Build Coastguard Worker adds r0, r0, #1 103*9880d681SAndroid Build Coastguard Worker adds r0, r0, #1 104*9880d681SAndroid Build Coastguard Worker ldr r0, =0x10005 105*9880d681SAndroid Build Coastguard Worker@ CHECK: ldr r0, .Ltmp[[TMP4:[0-9+]]] 106*9880d681SAndroid Build Coastguard Worker b f12 107*9880d681SAndroid Build Coastguard Worker .ltorg 108*9880d681SAndroid Build Coastguard Worker@ constant pool 109*9880d681SAndroid Build Coastguard Worker@ CHECK: .p2align 2 110*9880d681SAndroid Build Coastguard Worker@ CHECK: .Ltmp[[TMP4]] 111*9880d681SAndroid Build Coastguard Worker@ CHECK: .long 65541 112*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: f12: 113*9880d681SAndroid Build Coastguard Workerf12: 114*9880d681SAndroid Build Coastguard Worker adds r0, r0, #1 115*9880d681SAndroid Build Coastguard Worker ldr r0, =0x10006 116*9880d681SAndroid Build Coastguard Worker@ CHECK: ldr r0, .Ltmp[[TMP5:[0-9+]]] 117*9880d681SAndroid Build Coastguard Worker 118*9880d681SAndroid Build Coastguard Worker.section f,"ax",%progbits 119*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: f13 120*9880d681SAndroid Build Coastguard Workerf13: 121*9880d681SAndroid Build Coastguard Worker adds r0, r0, #1 122*9880d681SAndroid Build Coastguard Worker adds r0, r0, #1 123*9880d681SAndroid Build Coastguard Worker 124*9880d681SAndroid Build Coastguard Worker@ should not have a constant pool at end of section with empty constant pools 125*9880d681SAndroid Build Coastguard Worker@ CHECK-NOT: .section a,"ax",%progbits 126*9880d681SAndroid Build Coastguard Worker@ CHECK-NOT: .section b,"ax",%progbits 127*9880d681SAndroid Build Coastguard Worker@ CHECK-NOT: .section c,"ax",%progbits 128*9880d681SAndroid Build Coastguard Worker@ CHECK-NOT: .section d,"ax",%progbits 129*9880d681SAndroid Build Coastguard Worker 130*9880d681SAndroid Build Coastguard Worker@ should have a non-empty constant pool at end of this section 131*9880d681SAndroid Build Coastguard Worker@ CHECK: .section e,"ax",%progbits 132*9880d681SAndroid Build Coastguard Worker@ constant pool 133*9880d681SAndroid Build Coastguard Worker@ CHECK: .p2align 2 134*9880d681SAndroid Build Coastguard Worker@ CHECK: .Ltmp[[TMP5]] 135*9880d681SAndroid Build Coastguard Worker@ CHECK: .long 65542 136*9880d681SAndroid Build Coastguard Worker 137*9880d681SAndroid Build Coastguard Worker@ should not have a constant pool at end of section with empty constant pools 138*9880d681SAndroid Build Coastguard Worker@ CHECK-NOT: .section f,"ax",%progbits 139