1*9880d681SAndroid Build Coastguard Worker@ This test has a partner (ltorg.s) that contains matching 2*9880d681SAndroid Build Coastguard Worker@ tests for the .ltorg on linux 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-apple-darwin %s | FileCheck %s 8*9880d681SAndroid Build Coastguard Worker@RUN: llvm-mc -triple thumbv5-apple-darwin %s | FileCheck %s 9*9880d681SAndroid Build Coastguard Worker@RUN: llvm-mc -triple thumbv7-apple-darwin %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 __TEXT,a,regular,pure_instructions 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, Ltmp0 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: .data_region 23*9880d681SAndroid Build Coastguard Worker@ CHECK: .p2align 2 24*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: Ltmp0: 25*9880d681SAndroid Build Coastguard Worker@ CHECK: .long 65538 26*9880d681SAndroid Build Coastguard Worker@ CHECK: .end_data_region 27*9880d681SAndroid Build Coastguard Worker 28*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: f3: 29*9880d681SAndroid Build Coastguard Workerf3: 30*9880d681SAndroid Build Coastguard Worker adds r0, r0, #1 31*9880d681SAndroid Build Coastguard Worker adds r0, r0, #1 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Worker@ check that ltorg clears the constant pool after dumping it 34*9880d681SAndroid Build Coastguard Worker.section __TEXT,b,regular,pure_instructions 35*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: f4: 36*9880d681SAndroid Build Coastguard Workerf4: 37*9880d681SAndroid Build Coastguard Worker ldr r0, =0x10003 38*9880d681SAndroid Build Coastguard Worker@ CHECK: ldr r0, Ltmp1 39*9880d681SAndroid Build Coastguard Worker adds r0, r0, #1 40*9880d681SAndroid Build Coastguard Worker adds r0, r0, #1 41*9880d681SAndroid Build Coastguard Worker b f5 42*9880d681SAndroid Build Coastguard Worker.ltorg 43*9880d681SAndroid Build Coastguard Worker@ constant pool 44*9880d681SAndroid Build Coastguard Worker@ CHECK: .data_region 45*9880d681SAndroid Build Coastguard Worker@ CHECK: .p2align 2 46*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: Ltmp1: 47*9880d681SAndroid Build Coastguard Worker@ CHECK: .long 65539 48*9880d681SAndroid Build Coastguard Worker@ CHECK: .end_data_region 49*9880d681SAndroid Build Coastguard Worker 50*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: f5: 51*9880d681SAndroid Build Coastguard Workerf5: 52*9880d681SAndroid Build Coastguard Worker adds r0, r0, #1 53*9880d681SAndroid Build Coastguard Worker adds r0, r0, #1 54*9880d681SAndroid Build Coastguard Worker ldr r0, =0x10004 55*9880d681SAndroid Build Coastguard Worker@ CHECK: ldr r0, Ltmp2 56*9880d681SAndroid Build Coastguard Worker adds r0, r0, #1 57*9880d681SAndroid Build Coastguard Worker b f6 58*9880d681SAndroid Build Coastguard Worker.ltorg 59*9880d681SAndroid Build Coastguard Worker@ constant pool 60*9880d681SAndroid Build Coastguard Worker@ CHECK: .data_region 61*9880d681SAndroid Build Coastguard Worker@ CHECK: .p2align 2 62*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: Ltmp2: 63*9880d681SAndroid Build Coastguard Worker@ CHECK: .long 65540 64*9880d681SAndroid Build Coastguard Worker@ CHECK: .end_data_region 65*9880d681SAndroid Build Coastguard Worker 66*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: f6: 67*9880d681SAndroid Build Coastguard Workerf6: 68*9880d681SAndroid Build Coastguard Worker adds r0, r0, #1 69*9880d681SAndroid Build Coastguard Worker adds r0, r0, #1 70*9880d681SAndroid Build Coastguard Worker 71*9880d681SAndroid Build Coastguard Worker@ check that ltorg does not issue an error if there is no constant pool 72*9880d681SAndroid Build Coastguard Worker.section __TEXT,c,regular,pure_instructions 73*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: f7: 74*9880d681SAndroid Build Coastguard Workerf7: 75*9880d681SAndroid Build Coastguard Worker adds r0, r0, #1 76*9880d681SAndroid Build Coastguard Worker b f8 77*9880d681SAndroid Build Coastguard Worker .ltorg 78*9880d681SAndroid Build Coastguard Workerf8: 79*9880d681SAndroid Build Coastguard Worker adds r0, r0, #1 80*9880d681SAndroid Build Coastguard Worker 81*9880d681SAndroid Build Coastguard Worker@ check that ltorg works for labels 82*9880d681SAndroid Build Coastguard Worker.section __TEXT,d,regular,pure_instructions 83*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: f9: 84*9880d681SAndroid Build Coastguard Workerf9: 85*9880d681SAndroid Build Coastguard Worker adds r0, r0, #1 86*9880d681SAndroid Build Coastguard Worker adds r0, r0, #1 87*9880d681SAndroid Build Coastguard Worker ldr r0, =bar 88*9880d681SAndroid Build Coastguard Worker@ CHECK: ldr r0, Ltmp3 89*9880d681SAndroid Build Coastguard Worker adds r0, r0, #1 90*9880d681SAndroid Build Coastguard Worker adds r0, r0, #1 91*9880d681SAndroid Build Coastguard Worker adds r0, r0, #1 92*9880d681SAndroid Build Coastguard Worker b f10 93*9880d681SAndroid Build Coastguard Worker.ltorg 94*9880d681SAndroid Build Coastguard Worker@ constant pool 95*9880d681SAndroid Build Coastguard Worker@ CHECK: .data_region 96*9880d681SAndroid Build Coastguard Worker@ CHECK: .p2align 2 97*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: Ltmp3: 98*9880d681SAndroid Build Coastguard Worker@ CHECK: .long bar 99*9880d681SAndroid Build Coastguard Worker@ CHECK: .end_data_region 100*9880d681SAndroid Build Coastguard Worker 101*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: f10: 102*9880d681SAndroid Build Coastguard Workerf10: 103*9880d681SAndroid Build Coastguard Worker adds r0, r0, #1 104*9880d681SAndroid Build Coastguard Worker adds r0, r0, #1 105*9880d681SAndroid Build Coastguard Worker 106*9880d681SAndroid Build Coastguard Worker@ check that use of ltorg does not prevent dumping non-empty constant pools at end of section 107*9880d681SAndroid Build Coastguard Worker.section __TEXT,e,regular,pure_instructions 108*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: f11: 109*9880d681SAndroid Build Coastguard Workerf11: 110*9880d681SAndroid Build Coastguard Worker adds r0, r0, #1 111*9880d681SAndroid Build Coastguard Worker adds r0, r0, #1 112*9880d681SAndroid Build Coastguard Worker ldr r0, =0x10005 113*9880d681SAndroid Build Coastguard Worker@ CHECK: ldr r0, Ltmp4 114*9880d681SAndroid Build Coastguard Worker b f12 115*9880d681SAndroid Build Coastguard Worker .ltorg 116*9880d681SAndroid Build Coastguard Worker@ constant pool 117*9880d681SAndroid Build Coastguard Worker@ CHECK: .data_region 118*9880d681SAndroid Build Coastguard Worker@ CHECK: .p2align 2 119*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: Ltmp4: 120*9880d681SAndroid Build Coastguard Worker@ CHECK: .long 65541 121*9880d681SAndroid Build Coastguard Worker@ CHECK: .end_data_region 122*9880d681SAndroid Build Coastguard Worker 123*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: f12: 124*9880d681SAndroid Build Coastguard Workerf12: 125*9880d681SAndroid Build Coastguard Worker adds r0, r0, #1 126*9880d681SAndroid Build Coastguard Worker ldr r0, =0x10006 127*9880d681SAndroid Build Coastguard Worker@ CHECK: ldr r0, Ltmp5 128*9880d681SAndroid Build Coastguard Worker 129*9880d681SAndroid Build Coastguard Worker.section __TEXT,f,regular,pure_instructions 130*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: f13 131*9880d681SAndroid Build Coastguard Workerf13: 132*9880d681SAndroid Build Coastguard Worker adds r0, r0, #1 133*9880d681SAndroid Build Coastguard Worker adds r0, r0, #1 134*9880d681SAndroid Build Coastguard Worker 135*9880d681SAndroid Build Coastguard Worker@ should not have a constant pool at end of section with empty constant pools 136*9880d681SAndroid Build Coastguard Worker@ CHECK-NOT: .section __TEXT,a,regular,pure_instructions 137*9880d681SAndroid Build Coastguard Worker@ CHECK-NOT: .section __TEXT,b,regular,pure_instructions 138*9880d681SAndroid Build Coastguard Worker@ CHECK-NOT: .section __TEXT,c,regular,pure_instructions 139*9880d681SAndroid Build Coastguard Worker@ CHECK-NOT: .section __TEXT,d,regular,pure_instructions 140*9880d681SAndroid Build Coastguard Worker 141*9880d681SAndroid Build Coastguard Worker@ should have a non-empty constant pool at end of this section 142*9880d681SAndroid Build Coastguard Worker@ CHECK: .section __TEXT,e,regular,pure_instructions 143*9880d681SAndroid Build Coastguard Worker@ constant pool 144*9880d681SAndroid Build Coastguard Worker@ CHECK: .data_region 145*9880d681SAndroid Build Coastguard Worker@ CHECK: .p2align 2 146*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: Ltmp5: 147*9880d681SAndroid Build Coastguard Worker@ CHECK: .long 65542 148*9880d681SAndroid Build Coastguard Worker@ CHECK: .end_data_region 149*9880d681SAndroid Build Coastguard Worker 150*9880d681SAndroid Build Coastguard Worker@ should not have a constant pool at end of section with empty constant pools 151*9880d681SAndroid Build Coastguard Worker@ CHECK-NOT: .section __TEXT,f,regular,pure_instructions 152