https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78098
--- Comment #12 from H.J. Lu <hjl.tools at gmail dot com> --- (In reply to Martin Liška from comment #10) > (In reply to H.J. Lu from comment #9) > > (In reply to Richard Biener from comment #6) > > > Why would we be not able to tailcall in an interupt handler? > > > > We need to verify that the only instruction in an interrupt handler > > is a tail call to another interrupt handler. On the other hand, > > this interrupt handler isn't really needed at all. > > That can be vefief by fact that the symbol should have only one call (tail > call) and set node->icf_merged == true. Another issue with ICF tail call: ;; Function foo1 (foo1, funcdef_no=3, decl_uid=1443, cgraph_uid=0, symbol_order=0) foo1 (void * p) { ;; basic block 2, loop depth 0 ;; pred: ENTRY foo2 (p_2(D)); [tail call] ^^^^^^^^^^^^^^^^^^^^^^^^^^^ This isn't the same as sibcall. return; ^^^^^^ Here is a return statement. ;; succ: EXIT }