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