94 lines · plain
1@ Integrated test for ARM unwind directive parser and assembler.2 3@ This is a simplified real world test case generated from this C++ code4@ (with and without -fomit-frame-pointer)5@6@ extern void print(int, int, int, int, int);7@ extern void print(double, double, double, double, double);8@9@ void test(int a, int b, int c, int d, int e,10@ double m, double n, double p, double q, double r) {11@ try {12@ print(a, b, c, d, e);13@ } catch (...) {14@ print(m, n, p, q, r);15@ }16@ }17@18@ This test case should check the unwind opcode to adjust the opcode and19@ restore the general-purpose and VFP registers.20 21 22@ RUN: llvm-mc %s -triple=armv7-unknown-linux-gnueabi -filetype=obj -o - \23@ RUN: | llvm-readobj -S --sd - | FileCheck %s24 25 26@-------------------------------------------------------------------------------27@ Assembly without frame pointer elimination28@-------------------------------------------------------------------------------29 .syntax unified30 .section .TEST131 .globl func132 .align 233 .type func1,%function34func1:35 .fnstart36 .save {r4, r11, lr}37 push {r4, r11, lr}38 .setfp r11, sp, #439 add r11, sp, #440 .vsave {d8, d9, d10, d11, d12}41 vpush {d8, d9, d10, d11, d12}42 .pad #2843 sub sp, sp, #2844 sub sp, r11, #4445 vpop {d8, d9, d10, d11, d12}46 pop {r4, r11, pc}47.Ltmp1:48 .size func1, .Ltmp1-func149 .globl __gxx_personality_v050 .personality __gxx_personality_v051 .handlerdata52 .fnend53 54@ CHECK: Section {55@ CHECK: Name: .ARM.extab.TEST156@ CHECK: SectionData (57@ CHECK: 0000: 00000000 C94A9B01 B0818484 |.....J......|58@ CHECK: )59@ CHECK: }60 61 62 63@-------------------------------------------------------------------------------64@ Assembly with frame pointer elimination65@-------------------------------------------------------------------------------66 .section .TEST267 .globl func268 .align 269 .type func2,%function70func2:71 .fnstart72 .save {r4, lr}73 push {r4, lr}74 .vsave {d8, d9, d10, d11, d12}75 vpush {d8, d9, d10, d11, d12}76 .pad #2477 sub sp, sp, #2478 add sp, sp, #2479 vpop {d8, d9, d10, d11, d12}80 pop {r4, pc}81.Ltmp2:82 .size func2, .Ltmp2-func283 .globl __gxx_personality_v084 .personality __gxx_personality_v085 .handlerdata86 .fnend87 88@ CHECK: Section {89@ CHECK: Name: .ARM.extab.TEST290@ CHECK: SectionData (91@ CHECK: 0000: 00000000 84C90501 B0B0B0A8 |............|92@ CHECK: )93@ CHECK: }94