This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
Re: Bad inlining because of "throw"
okay it CException::CException(..) doesn't get inlined now..
But it still doesn't inline my CHandleMove::onMove(...) because of the
throw
push rbx
sub rsp, 10h
cmp edx, 3
mov [rdi], rsi
jz short loc_408990
mov edi, 68h
call ___cxa_allocate_exception
mov edx, offset aPacketSizeIsDi ; "Packet size is...
mov esi, 4
mov rdi, rax
mov rbx, rax
call _ZN10CExceptionC1EiPKc ; CException::CException
mov edx, offset _ZN10CExceptionD1Ev ; CException::~CException
mov esi, offset _ZTI10CException ; `typeinfo for'CException
mov rdi, rbx
call ___cxa_throw
add rsp, 10h
pop rbx
retn
When i put the throw into a own function everything thing is fine..looks
like this (and also gets inlined into CHandleMove::onMove(...))
cmp edx, 3
mov [rdi], rsi
jz short locret_408920
jmp _Z14throwWrongSizev ; throwWrongSize(void)
rep retn
.. Its a lot better to put the throw into a own function..