// 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"