| // Generated from g++ exception4.cpp -fomit-frame-pointer -S -O3 |
| // Manually modified to trigger shrink-wrapping in function main |
| .text |
| .p2align 4,,15 |
| .globl _Z3fooi |
| .type _Z3fooi, @function |
| _Z3fooi: |
| .LFB12: |
| .cfi_startproc |
| subq $8, %rsp |
| .cfi_def_cfa_offset 16 |
| cmpl $1, %edi |
| movl $1, %edi |
| jle .L2 |
| call __cxa_allocate_exception |
| xorl %edx, %edx |
| movl $_ZTI4ExcG, %esi |
| movq %rax, %rdi |
| call __cxa_throw |
| .L2: |
| call __cxa_allocate_exception |
| xorl %edx, %edx |
| movl $_ZTI4ExcC, %esi |
| movq %rax, %rdi |
| call __cxa_throw |
| .cfi_endproc |
| .LFE12: |
| .size _Z3fooi, .-_Z3fooi |
| .p2align 4,,15 |
| .globl _Z11filter_onlyi |
| .type _Z11filter_onlyi, @function |
| _Z11filter_onlyi: |
| .LFB13: |
| .cfi_startproc |
| .cfi_personality 0x3,__gxx_personality_v0 |
| .cfi_lsda 0x3,.LLSDA13 |
| subq $8, %rsp |
| .cfi_def_cfa_offset 16 |
| .LEHB0: |
| call _Z3fooi |
| .LEHE0: |
| .L8: |
| addq $1, %rdx |
| movq %rax, %rdi |
| je .L7 |
| .LEHB1: |
| call _Unwind_Resume |
| .L7: |
| call __cxa_call_unexpected |
| .LEHE1: |
| .cfi_endproc |
| .LFE13: |
| .globl __gxx_personality_v0 |
| .section .gcc_except_table,"a",@progbits |
| .align 4 |
| .LLSDA13: |
| .byte 0xff |
| .byte 0x3 |
| .uleb128 .LLSDATT13-.LLSDATTD13 |
| .LLSDATTD13: |
| .byte 0x1 |
| .uleb128 .LLSDACSE13-.LLSDACSB13 |
| .LLSDACSB13: |
| .uleb128 .LEHB0-.LFB13 |
| .uleb128 .LEHE0-.LEHB0 |
| .uleb128 .L8-.LFB13 |
| .uleb128 0x1 |
| .uleb128 .LEHB1-.LFB13 |
| .uleb128 .LEHE1-.LEHB1 |
| .uleb128 0 |
| .uleb128 0 |
| .LLSDACSE13: |
| .byte 0x7f |
| .byte 0 |
| .align 4 |
| .long _ZTI4ExcA |
| .long _ZTI4ExcB |
| .long _ZTI4ExcC |
| .long _ZTI4ExcD |
| .long _ZTI4ExcE |
| .long _ZTI4ExcF |
| .LLSDATT13: |
| .byte 0x1 |
| .byte 0x2 |
| .byte 0x3 |
| .byte 0x4 |
| .byte 0x5 |
| .byte 0x6 |
| .byte 0 |
| .text |
| .size _Z11filter_onlyi, .-_Z11filter_onlyi |
| .section .rodata.str1.8,"aMS",@progbits,1 |
| .align 8 |
| .LC0: |
| .string "this statement is cold and should be outlined" |
| .text |
| .p2align 4,,15 |
| .globl _Z12never_throwsv |
| .type _Z12never_throwsv, @function |
| _Z12never_throwsv: |
| .LFB14: |
| .cfi_startproc |
| .cfi_personality 0x3,__gxx_personality_v0 |
| .cfi_lsda 0x3,.LLSDA14 |
| subq $8, %rsp |
| .cfi_def_cfa_offset 16 |
| movl $.LC0, %edi |
| .LEHB2: |
| call puts |
| .LEHE2: |
| addq $8, %rsp |
| .cfi_remember_state |
| .cfi_def_cfa_offset 8 |
| ret |
| .L13: |
| .cfi_restore_state |
| addq $1, %rdx |
| movq %rax, %rdi |
| je .L12 |
| .LEHB3: |
| call _Unwind_Resume |
| .L12: |
| call __cxa_call_unexpected |
| .LEHE3: |
| .cfi_endproc |
| .LFE14: |
| .section .gcc_except_table,"a",@progbits |
| .align 4 |
| .LLSDA14: |
| .byte 0xff |
| .byte 0x3 |
| .uleb128 .LLSDATT14-.LLSDATTD14 |
| .LLSDATTD14: |
| .byte 0x1 |
| .uleb128 .LLSDACSE14-.LLSDACSB14 |
| .LLSDACSB14: |
| .uleb128 .LEHB2-.LFB14 |
| .uleb128 .LEHE2-.LEHB2 |
| .uleb128 .L13-.LFB14 |
| .uleb128 0x1 |
| .uleb128 .LEHB3-.LFB14 |
| .uleb128 .LEHE3-.LEHB3 |
| .uleb128 0 |
| .uleb128 0 |
| .LLSDACSE14: |
| .byte 0x7f |
| .byte 0 |
| .align 4 |
| .LLSDATT14: |
| .byte 0 |
| .text |
| .size _Z12never_throwsv, .-_Z12never_throwsv |
| .section .rodata.str1.1,"aMS",@progbits,1 |
| .LC1: |
| .string "catch 2" |
| .LC2: |
| .string "catch 1" |
| .LC3: |
| .string "caught ExcC" |
| .LC4: |
| .string "caught ExcG" |
| .section .text.startup,"ax",@progbits |
| .p2align 4,,15 |
| .globl main |
| .type main, @function |
| main: |
| .LFB15: |
| .cfi_startproc |
| .cfi_personality 0x3,__gxx_personality_v0 |
| .cfi_lsda 0x3,.LLSDA15 |
| pushq %r13 |
| .cfi_def_cfa_offset 16 |
| .cfi_offset 13, -16 |
| pushq %r12 |
| .cfi_def_cfa_offset 24 |
| .cfi_offset 12, -24 |
| pushq %rbp |
| .cfi_def_cfa_offset 32 |
| .cfi_offset 6, -32 |
| movl $10, %ebp |
| pushq %rbx |
| .cfi_def_cfa_offset 40 |
| .cfi_offset 3, -40 |
| movl %edi, %ebx |
| subq $8, %rsp |
| .cfi_def_cfa_offset 48 |
| .Lcheck: |
| cmpl $2, %ebx |
| je .Lmyexit |
| .Lloop_pre_header: |
| movl $10, %ebp |
| jmp .L18 |
| .L18: |
| cmpl $2, %ebx |
| je .Lmyexit |
| .L17: |
| movl $1, %edi |
| call __cxa_allocate_exception |
| xorl %edx, %edx |
| movl $_ZTI4ExcA, %esi |
| movq %rax, %rdi |
| .LEHB4: |
| call __cxa_throw |
| .LEHE4: |
| .L47: |
| call _Z12never_throwsv |
| call _Z12never_throwsv |
| .p2align 4,,5 |
| jmp .L17 |
| .L37: |
| cmpq $2, %rdx |
| movq %rax, %rdi |
| jne .L22 |
| call __cxa_begin_catch |
| movl $.LC1, %edi |
| .LEHB5: |
| call puts |
| .LEHE5: |
| movl $8, %edi |
| call __cxa_allocate_exception |
| movl $4, %edi |
| movq %rax, %r12 |
| .LEHB6: |
| call _Znwm |
| .LEHE6: |
| movl $0, (%rax) |
| xorl %edx, %edx |
| movq %rax, (%r12) |
| movl $_ZTIPi, %esi |
| movq %r12, %rdi |
| .LEHB7: |
| call __cxa_throw |
| .LEHE7: |
| .L39: |
| movq %rax, %r13 |
| movq %r12, %rdi |
| movq %r13, %r12 |
| call __cxa_free_exception |
| .L24: |
| call __cxa_end_catch |
| movq %r12, %rdi |
| .L22: |
| call __cxa_begin_catch |
| movl $.LC2, %edi |
| .LEHB8: |
| call puts |
| .LEHE8: |
| .LEHB9: |
| call __cxa_end_catch |
| .LEHE9: |
| movl %ebx, %edi |
| .LEHB10: |
| call _Z11filter_onlyi |
| .LEHE10: |
| .L38: |
| movq %rax, %r12 |
| jmp .L24 |
| .L41: |
| cmpq $4, %rdx |
| movq %rax, %rdi |
| movq %rdx, %rax |
| jne .L29 |
| call __cxa_begin_catch |
| movl $.LC3, %edi |
| .LEHB11: |
| call puts |
| .LEHE11: |
| .L35: |
| call __cxa_end_catch |
| subl $1, %ebp |
| jne .L18 |
| .Lmyexit: |
| popq %rdx |
| .cfi_remember_state |
| .cfi_def_cfa_offset 40 |
| popq %rbx |
| .cfi_def_cfa_offset 32 |
| popq %rbp |
| .cfi_def_cfa_offset 24 |
| popq %r12 |
| .cfi_def_cfa_offset 16 |
| xorl %eax, %eax |
| popq %r13 |
| .cfi_def_cfa_offset 8 |
| ret |
| .L40: |
| .cfi_restore_state |
| movq %rax, %rbx |
| call __cxa_end_catch |
| movq %rbx, %rdi |
| .LEHB12: |
| call _Unwind_Resume |
| .LEHE12: |
| .L42: |
| movq %rax, %r13 |
| movq %rdx, %r12 |
| call __cxa_end_catch |
| movq %r13, %rdi |
| movq %r12, %rax |
| .L29: |
| cmpq $3, %rax |
| jne .L46 |
| call __cxa_begin_catch |
| movl $.LC4, %edi |
| .LEHB13: |
| call puts |
| .LEHE13: |
| jmp .L35 |
| .L43: |
| movq %rax, %rbx |
| call __cxa_end_catch |
| movq %rbx, %rdi |
| .L46: |
| .LEHB14: |
| call _Unwind_Resume |
| jmp .L43 |
| .LEHE14: |
| .cfi_endproc |
| .LFE15: |
| .section .gcc_except_table,"a",@progbits |
| .align 4 |
| .LLSDA15: |
| .byte 0xff |
| .byte 0x3 |
| .uleb128 .LLSDATT15-.LLSDATTD15 |
| .LLSDATTD15: |
| .byte 0x1 |
| .uleb128 .LLSDACSE15-.LLSDACSB15 |
| .LLSDACSB15: |
| .uleb128 .LEHB4-.LFB15 |
| .uleb128 .LEHE4-.LEHB4 |
| .uleb128 .L37-.LFB15 |
| .uleb128 0x3 |
| .uleb128 .LEHB5-.LFB15 |
| .uleb128 .LEHE5-.LEHB5 |
| .uleb128 .L38-.LFB15 |
| .uleb128 0x5 |
| .uleb128 .LEHB6-.LFB15 |
| .uleb128 .LEHE6-.LEHB6 |
| .uleb128 .L39-.LFB15 |
| .uleb128 0x5 |
| .uleb128 .LEHB7-.LFB15 |
| .uleb128 .LEHE7-.LEHB7 |
| .uleb128 .L38-.LFB15 |
| .uleb128 0x5 |
| .uleb128 .LEHB8-.LFB15 |
| .uleb128 .LEHE8-.LEHB8 |
| .uleb128 .L40-.LFB15 |
| .uleb128 0 |
| .uleb128 .LEHB9-.LFB15 |
| .uleb128 .LEHE9-.LEHB9 |
| .uleb128 0 |
| .uleb128 0 |
| .uleb128 .LEHB10-.LFB15 |
| .uleb128 .LEHE10-.LEHB10 |
| .uleb128 .L41-.LFB15 |
| .uleb128 0x9 |
| .uleb128 .LEHB11-.LFB15 |
| .uleb128 .LEHE11-.LEHB11 |
| .uleb128 .L42-.LFB15 |
| .uleb128 0xb |
| .uleb128 .LEHB12-.LFB15 |
| .uleb128 .LEHE12-.LEHB12 |
| .uleb128 0 |
| .uleb128 0 |
| .uleb128 .LEHB13-.LFB15 |
| .uleb128 .LEHE13-.LEHB13 |
| .uleb128 .L43-.LFB15 |
| .uleb128 0 |
| .uleb128 .LEHB14-.LFB15 |
| .uleb128 .LEHE14-.LEHB14 |
| .uleb128 0 |
| .uleb128 0 |
| .LLSDACSE15: |
| .byte 0x1 |
| .byte 0 |
| .byte 0x2 |
| .byte 0x7d |
| .byte 0 |
| .byte 0x7b |
| .byte 0x3 |
| .byte 0 |
| .byte 0x4 |
| .byte 0x7d |
| .byte 0 |
| .byte 0x7b |
| .align 4 |
| .long _ZTI4ExcC |
| .long _ZTI4ExcG |
| .long _ZTI4ExcA |
| .long 0 |
| |
| .LLSDATT15: |
| .section .text.startup |
| .size main, .-main |
| .weak _ZTI4ExcG |
| .section .rodata._ZTI4ExcG,"aG",@progbits,_ZTI4ExcG,comdat |
| .align 16 |
| .type _ZTI4ExcG, @object |
| .size _ZTI4ExcG, 16 |
| _ZTI4ExcG: |
| .quad _ZTVN10__cxxabiv117__class_type_infoE+16 |
| .quad _ZTS4ExcG |
| .weak _ZTS4ExcG |
| .section .rodata._ZTS4ExcG,"aG",@progbits,_ZTS4ExcG,comdat |
| .type _ZTS4ExcG, @object |
| .size _ZTS4ExcG, 6 |
| _ZTS4ExcG: |
| .string "4ExcG" |
| .weak _ZTI4ExcC |
| .section .rodata._ZTI4ExcC,"aG",@progbits,_ZTI4ExcC,comdat |
| .align 16 |
| .type _ZTI4ExcC, @object |
| .size _ZTI4ExcC, 16 |
| _ZTI4ExcC: |
| .quad _ZTVN10__cxxabiv117__class_type_infoE+16 |
| .quad _ZTS4ExcC |
| .weak _ZTS4ExcC |
| .section .rodata._ZTS4ExcC,"aG",@progbits,_ZTS4ExcC,comdat |
| .type _ZTS4ExcC, @object |
| .size _ZTS4ExcC, 6 |
| _ZTS4ExcC: |
| .string "4ExcC" |
| .weak _ZTI4ExcA |
| .section .rodata._ZTI4ExcA,"aG",@progbits,_ZTI4ExcA,comdat |
| .align 16 |
| .type _ZTI4ExcA, @object |
| .size _ZTI4ExcA, 16 |
| _ZTI4ExcA: |
| .quad _ZTVN10__cxxabiv117__class_type_infoE+16 |
| .quad _ZTS4ExcA |
| .weak _ZTS4ExcA |
| .section .rodata._ZTS4ExcA,"aG",@progbits,_ZTS4ExcA,comdat |
| .type _ZTS4ExcA, @object |
| .size _ZTS4ExcA, 6 |
| _ZTS4ExcA: |
| .string "4ExcA" |
| .weak _ZTI4ExcB |
| .section .rodata._ZTI4ExcB,"aG",@progbits,_ZTI4ExcB,comdat |
| .align 16 |
| .type _ZTI4ExcB, @object |
| .size _ZTI4ExcB, 16 |
| _ZTI4ExcB: |
| .quad _ZTVN10__cxxabiv117__class_type_infoE+16 |
| .quad _ZTS4ExcB |
| .weak _ZTS4ExcB |
| .section .rodata._ZTS4ExcB,"aG",@progbits,_ZTS4ExcB,comdat |
| .type _ZTS4ExcB, @object |
| .size _ZTS4ExcB, 6 |
| _ZTS4ExcB: |
| .string "4ExcB" |
| .weak _ZTI4ExcD |
| .section .rodata._ZTI4ExcD,"aG",@progbits,_ZTI4ExcD,comdat |
| .align 16 |
| .type _ZTI4ExcD, @object |
| .size _ZTI4ExcD, 16 |
| _ZTI4ExcD: |
| .quad _ZTVN10__cxxabiv117__class_type_infoE+16 |
| .quad _ZTS4ExcD |
| .weak _ZTS4ExcD |
| .section .rodata._ZTS4ExcD,"aG",@progbits,_ZTS4ExcD,comdat |
| .type _ZTS4ExcD, @object |
| .size _ZTS4ExcD, 6 |
| _ZTS4ExcD: |
| .string "4ExcD" |
| .weak _ZTI4ExcE |
| .section .rodata._ZTI4ExcE,"aG",@progbits,_ZTI4ExcE,comdat |
| .align 16 |
| .type _ZTI4ExcE, @object |
| .size _ZTI4ExcE, 16 |
| _ZTI4ExcE: |
| .quad _ZTVN10__cxxabiv117__class_type_infoE+16 |
| .quad _ZTS4ExcE |
| .weak _ZTS4ExcE |
| .section .rodata._ZTS4ExcE,"aG",@progbits,_ZTS4ExcE,comdat |
| .type _ZTS4ExcE, @object |
| .size _ZTS4ExcE, 6 |
| _ZTS4ExcE: |
| .string "4ExcE" |
| .weak _ZTI4ExcF |
| .section .rodata._ZTI4ExcF,"aG",@progbits,_ZTI4ExcF,comdat |
| .align 16 |
| .type _ZTI4ExcF, @object |
| .size _ZTI4ExcF, 16 |
| _ZTI4ExcF: |
| .quad _ZTVN10__cxxabiv117__class_type_infoE+16 |
| .quad _ZTS4ExcF |
| .weak _ZTS4ExcF |
| .section .rodata._ZTS4ExcF,"aG",@progbits,_ZTS4ExcF,comdat |
| .type _ZTS4ExcF, @object |
| .size _ZTS4ExcF, 6 |
| _ZTS4ExcF: |
| .string "4ExcF" |