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

Jason Merrill <jason at gcc dot gnu.org> changed:

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

--- Comment #11 from Jason Merrill <jason at gcc dot gnu.org> 2011-07-05 
18:10:24 UTC ---
(In reply to comment #7)
> Expanding arguments in different ways occurs because corresponding GIMPLE
> statements are of different types.
> For 'good' case we have expression of type
>   COMPONENT_REF
> 
> While for 'bad' one it is just a 
>   MEM_REF
> 
> For that different kinds we have slightly different expanding.
> 
> The different expression types comes from front-end, at least in einline phase
> accesses are different:

The front end doesn't create MEM_REFs, they are all produced in the middle end.
 If tail call optimizations have trouble with them, that sounds like the bug.

I'm unable to reproduce your work; when I compile step-14.cc I never hit
mem_overlaps_already_clobbered_arg_p while compiling do_call.  And reverting my
change to tsubst_arg_types doesn't affect the use of MEM_REF in do_call.  What
optimization options are you using?  I'm using -O -fipa-sra
-foptimize-sibling-calls, as mentioned.

Reply via email to