https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91468

kugan at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |kugan at gcc dot gnu.org

--- Comment #2 from kugan at gcc dot gnu.org ---
(In reply to Martin Jambor from comment #1)
> (In reply to Feng Xue from comment #0)

> > 
> > In function update_jump_functions_after_inlining(),
> > 
> >       if (dst->type == IPA_JF_ANCESTOR)
> >     {
> >           ......
> > 
> >       if (src->type == IPA_JF_PASS_THROUGH
> >           && src->value.pass_through.operation == NOP_EXPR)
> >         {
> >                ......
> >         }
> >           else if (src->type == IPA_JF_PASS_THROUGH
> >                && TREE_CODE_CLASS (src->value.pass_through.operation) == 
> > tcc_unary)
> >         {
> >           dst->value.ancestor.formal_id = src->value.pass_through.formal_id;
> >           dst->value.ancestor.agg_preserved = false;
> >         }
> >           ......       
> >         }
> > 
> > If we suppose pass_through operation is "negate_expr" (while it is not a
> > reasonable operation on pointer type), the code might be incorrect. It's
> > better to specify expected unary operations here.
> 
> Kugan, you added this in 2016 and unfortunately I think it is wrong.
> Are there any unary operations we could possibly want to handle?
> In any event, the information that there was an arithmetic function in
> the path of the parameter would be completely lost if the code ever
> executed.  (Which I don't think it ever does, I think it would take
> crazy code that employs LTO to pass an integer to a pointer parameter
> to trigger).
> 
> So I plan to remove the whole if.
> 

Yes, i think this is a mistake and should go. Thanks for doing that.

Reply via email to