> Yes, this looks OK. Inliner coul also take care to turn the master clone
> into unanalyzed node as remove_unreachable_nodes would, but I do not think
> it is worth the effort. Please put the loop later in the function so it
> does not slow things down unnecesarily (there are often many inline clones)

If you're concerned about efficiency, I can move it into clone_inlined_nodes 
itself instead:

  if (duplicate)
    {
      /* We may eliminate the need for out-of-line copy to be output.
         In that case just go ahead and re-use it.  This is not just an
         memory optimization.  Making offline copy of fuction disappear
         from the program will improve future decisions on inlining.  */
      if (!e->callee->callers->next_caller
          /* Recursive inlining never wants the master clone to
             be overwritten.  */
          && update_original
          && can_remove_node_now_p (e->callee, e))

i.e. I can set update_original to false just before the above test, that would
probably be sufficient to fix the bug.

-- 
Eric Botcazou

Reply via email to