------- Comment #17 from rguenther at suse dot de  2010-09-16 16:06 -------
Subject: Re:  Missed devirtualization

On Thu, 16 Sep 2010, jamborm at gcc dot gnu dot org wrote:

> 
> 
> ------- Comment #16 from jamborm at gcc dot gnu dot org  2010-09-16 16:00 
> -------
> (In reply to comment #15)
> > Like
> > 
> > Index: gimplify.c
> > ===================================================================
> > --- gimplify.c  (revision 164333)
> > +++ gimplify.c  (working copy)
> > @@ -2477,10 +2477,13 @@ gimplify_call_expr (tree *expr_p, gimple
> >       gimplify_modify_expr.  */
> >    if (!want_value)
> >      {
> > +      gimple_stmt_iterator gsi;
> >        /* The CALL_EXPR in *EXPR_P is already in GIMPLE form, so all we
> >          have to do is replicate it as a GIMPLE_CALL tuple.  */
> >        call = gimple_build_call_from_tree (*expr_p);
> >        gimplify_seq_add_stmt (pre_p, call);
> > +      gsi = gsi_last (*pre_p);
> > +      fold_stmt (&gsi);
> >        *expr_p = NULL_TREE;
> >      }
> > 
> 
> Will this also work also for GIMPLE_CALLs with a LHS or do I have to
> add something like the above also elsewhere?

Yes.

> > 
> > but gimple_fold_obj_type_ref_known_binfo returns NULL.
> > 
> 
> cgraph_function_flags_ready needs to be added to the conjunction
> (!node->analyzed && !node->in_other_partition) and then it is folded.
> I'll prepare a patch tomorrow.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45605

Reply via email to