On Fri, Mar 02, 2012 at 06:54:13PM +1300, Maxim Kuvyrkov wrote:
> > --- gcc/ipa-cp.c    (revision 184662)
> > +++ gcc/ipa-cp.c    (working copy)
> > @@ -508,7 +508,7 @@ ipcp_initialize_node_lattices (struct cg
> > 
> >   if (ipa_is_called_with_var_arguments (info))
> >     type = IPA_BOTTOM;
> > -  else if (!node->needed)
> > +  else if (!node->needed && !node->local.externally_visible)
> >     type = IPA_TOP;
> >   /* When cloning is allowed, we can assume that externally visible 
> > functions
> >      are not called.  We will compensate this by cloning later.  */
> 
> Because this is for a branch, I would be more conservative and avoid any
> new instances of IPA_TOP -- those that can be obtained from subsequent
> else-if clauses.  I.e.,
> 
> else if (!node->needed)
>   type = !node->local.externally_visible ? IPA_TOP : IPA_BOTTOM;

The above doesn't add any new instances of IPA_TOP, the
node->local.externally_visible && !node->needed
will be either IPA_BOTTOM, if not desirable for cloning, or IPA_TOP with
n_cloning_candidates++ (previously they would all be IPA_TOP).

I think Martin's patch as is is fine.

        Jakub

Reply via email to