Logan Chien | cc4f512 | 2016-11-13 14:44:41 +0000 | [diff] [blame] | 1 | @ RUN: %cxx %flags %link_flags %s -o %t.exe |
| 2 | @ RUN: %exec %t.exe |
| 3 | |
| 4 | @ PURPOSE: Check that 0x90 is a valid value for ttype encoding. |
| 5 | |
| 6 | @ NOTE: |
| 7 | @ |
| 8 | @ This file is generated from the following C++ source code and then change the |
| 9 | @ `TType Encoding` to 0x90. |
| 10 | @ |
| 11 | @ ``` |
| 12 | @ int main() { |
| 13 | @ try { |
| 14 | @ throw 5; |
| 15 | @ } catch (int i) { |
| 16 | @ if (i != 5) |
| 17 | @ abort(); |
| 18 | @ return 0; |
| 19 | @ } |
| 20 | @ } |
| 21 | @ ``` |
| 22 | |
| 23 | .syntax unified |
| 24 | |
| 25 | .text |
| 26 | .globl main |
| 27 | .p2align 2 |
| 28 | .type main,%function |
| 29 | main: @ @main |
| 30 | .Lfunc_begin0: |
| 31 | .fnstart |
| 32 | @ BB#0: @ %entry |
| 33 | .save {r11, lr} |
| 34 | push {r11, lr} |
| 35 | .setfp r11, sp |
| 36 | mov r11, sp |
| 37 | mov r0, #4 |
| 38 | bl __cxa_allocate_exception |
| 39 | mov r1, #5 |
| 40 | str r1, [r0] |
| 41 | .Ltmp0: |
| 42 | ldr r1, .LCPI0_0 |
| 43 | mov r2, #0 |
| 44 | bl __cxa_throw |
| 45 | .Ltmp1: |
| 46 | |
| 47 | @ BB#2: @ %lpad |
| 48 | .Ltmp2: |
| 49 | bl __cxa_begin_catch |
| 50 | ldr r0, [r0] |
| 51 | cmp r0, #5 |
| 52 | bne .LBB0_4 |
| 53 | @ BB#3: @ %if.end |
| 54 | bl __cxa_end_catch |
| 55 | mov r0, #0 |
| 56 | pop {r11, lr} |
| 57 | bx lr |
| 58 | .LBB0_4: @ %if.then |
| 59 | bl abort |
| 60 | .p2align 2 |
| 61 | @ BB#5: |
| 62 | .LCPI0_0: |
| 63 | .long _ZTIi |
| 64 | .Lfunc_end0: |
| 65 | |
| 66 | .size main, .Lfunc_end0-main |
| 67 | .globl __gxx_personality_v0 |
| 68 | .personality __gxx_personality_v0 |
| 69 | .handlerdata |
| 70 | .p2align 2 |
| 71 | GCC_except_table0: |
| 72 | .Lexception0: |
| 73 | .byte 255 @ @LPStart Encoding = omit |
| 74 | .byte 0x90 @ @TType Encoding = indirect | pcrel |
| 75 | .asciz "\257\200" @ @TType base offset |
| 76 | .byte 3 @ Call site Encoding = udata4 |
| 77 | .byte 39 @ Call site table length |
| 78 | .long .Lfunc_begin0-.Lfunc_begin0 @ >> Call Site 1 << |
| 79 | .long .Ltmp0-.Lfunc_begin0 @ Call between .Lfunc_begin0 and .Ltmp0 |
| 80 | .long 0 @ has no landing pad |
| 81 | .byte 0 @ On action: cleanup |
| 82 | .long .Ltmp0-.Lfunc_begin0 @ >> Call Site 2 << |
| 83 | .long .Ltmp1-.Ltmp0 @ Call between .Ltmp0 and .Ltmp1 |
| 84 | .long .Ltmp2-.Lfunc_begin0 @ jumps to .Ltmp2 |
| 85 | .byte 1 @ On action: 1 |
| 86 | .long .Ltmp1-.Lfunc_begin0 @ >> Call Site 3 << |
| 87 | .long .Lfunc_end0-.Ltmp1 @ Call between .Ltmp1 and .Lfunc_end0 |
| 88 | .long 0 @ has no landing pad |
| 89 | .byte 0 @ On action: cleanup |
| 90 | .byte 1 @ >> Action Record 1 << |
| 91 | @ Catch TypeInfo 1 |
| 92 | .byte 0 @ No further actions |
| 93 | @ >> Catch TypeInfos << |
| 94 | .long _ZTIi(target2) @ TypeInfo 1 |
| 95 | .p2align 2 |
| 96 | .fnend |