| @ This test has a partner (ltorg.s) that contains matching |
| @ tests for the .ltorg on linux targets. We need separate files |
| @ because the syntax for switching sections and temporary labels differs |
| @ between darwin and linux. Any tests added here should have a matching |
| @ test added there. |
| |
| @RUN: llvm-mc -triple armv7-apple-darwin %s | FileCheck %s |
| @RUN: llvm-mc -triple thumbv5-apple-darwin %s | FileCheck %s |
| @RUN: llvm-mc -triple thumbv7-apple-darwin %s | FileCheck %s |
| |
| @ check that ltorg dumps the constant pool at the current location |
| .section __TEXT,a,regular,pure_instructions |
| @ CHECK-LABEL: f2: |
| f2: |
| ldr r0, =0x10002 |
| @ CHECK: ldr r0, Ltmp0 |
| adds r0, r0, #1 |
| adds r0, r0, #1 |
| b f3 |
| .ltorg |
| @ constant pool |
| @ CHECK: .data_region |
| @ CHECK: .p2align 2 |
| @ CHECK-LABEL: Ltmp0: |
| @ CHECK: .long 65538 |
| @ CHECK: .end_data_region |
| |
| @ CHECK-LABEL: f3: |
| f3: |
| adds r0, r0, #1 |
| adds r0, r0, #1 |
| |
| @ check that ltorg clears the constant pool after dumping it |
| .section __TEXT,b,regular,pure_instructions |
| @ CHECK-LABEL: f4: |
| f4: |
| ldr r0, =0x10003 |
| @ CHECK: ldr r0, Ltmp1 |
| adds r0, r0, #1 |
| adds r0, r0, #1 |
| b f5 |
| .ltorg |
| @ constant pool |
| @ CHECK: .data_region |
| @ CHECK: .p2align 2 |
| @ CHECK-LABEL: Ltmp1: |
| @ CHECK: .long 65539 |
| @ CHECK: .end_data_region |
| |
| @ CHECK-LABEL: f5: |
| f5: |
| adds r0, r0, #1 |
| adds r0, r0, #1 |
| ldr r0, =0x10004 |
| @ CHECK: ldr r0, Ltmp2 |
| adds r0, r0, #1 |
| b f6 |
| .ltorg |
| @ constant pool |
| @ CHECK: .data_region |
| @ CHECK: .p2align 2 |
| @ CHECK-LABEL: Ltmp2: |
| @ CHECK: .long 65540 |
| @ CHECK: .end_data_region |
| |
| @ CHECK-LABEL: f6: |
| f6: |
| adds r0, r0, #1 |
| adds r0, r0, #1 |
| |
| @ check that ltorg does not issue an error if there is no constant pool |
| .section __TEXT,c,regular,pure_instructions |
| @ CHECK-LABEL: f7: |
| f7: |
| adds r0, r0, #1 |
| b f8 |
| .ltorg |
| f8: |
| adds r0, r0, #1 |
| |
| @ check that ltorg works for labels |
| .section __TEXT,d,regular,pure_instructions |
| @ CHECK-LABEL: f9: |
| f9: |
| adds r0, r0, #1 |
| adds r0, r0, #1 |
| ldr r0, =bar |
| @ CHECK: ldr r0, Ltmp3 |
| adds r0, r0, #1 |
| adds r0, r0, #1 |
| adds r0, r0, #1 |
| b f10 |
| .ltorg |
| @ constant pool |
| @ CHECK: .data_region |
| @ CHECK: .p2align 2 |
| @ CHECK-LABEL: Ltmp3: |
| @ CHECK: .long bar |
| @ CHECK: .end_data_region |
| |
| @ CHECK-LABEL: f10: |
| f10: |
| adds r0, r0, #1 |
| adds r0, r0, #1 |
| |
| @ check that use of ltorg does not prevent dumping non-empty constant pools at end of section |
| .section __TEXT,e,regular,pure_instructions |
| @ CHECK-LABEL: f11: |
| f11: |
| adds r0, r0, #1 |
| adds r0, r0, #1 |
| ldr r0, =0x10005 |
| @ CHECK: ldr r0, Ltmp4 |
| b f12 |
| .ltorg |
| @ constant pool |
| @ CHECK: .data_region |
| @ CHECK: .p2align 2 |
| @ CHECK-LABEL: Ltmp4: |
| @ CHECK: .long 65541 |
| @ CHECK: .end_data_region |
| |
| @ CHECK-LABEL: f12: |
| f12: |
| adds r0, r0, #1 |
| ldr r0, =0x10006 |
| @ CHECK: ldr r0, Ltmp5 |
| |
| .section __TEXT,f,regular,pure_instructions |
| @ CHECK-LABEL: f13 |
| f13: |
| adds r0, r0, #1 |
| adds r0, r0, #1 |
| |
| @ should not have a constant pool at end of section with empty constant pools |
| @ CHECK-NOT: .section __TEXT,a,regular,pure_instructions |
| @ CHECK-NOT: .section __TEXT,b,regular,pure_instructions |
| @ CHECK-NOT: .section __TEXT,c,regular,pure_instructions |
| @ CHECK-NOT: .section __TEXT,d,regular,pure_instructions |
| |
| @ should have a non-empty constant pool at end of this section |
| @ CHECK: .section __TEXT,e,regular,pure_instructions |
| @ constant pool |
| @ CHECK: .data_region |
| @ CHECK: .p2align 2 |
| @ CHECK-LABEL: Ltmp5: |
| @ CHECK: .long 65542 |
| @ CHECK: .end_data_region |
| |
| @ should not have a constant pool at end of section with empty constant pools |
| @ CHECK-NOT: .section __TEXT,f,regular,pure_instructions |