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

}

Reply via email to