------- Additional Comments From jason at gcc dot gnu dot org  2004-10-29 21:46 -------
The problem seems to be an incorrect tailcall.  Before my patch, "*p = foo()"
was turned into "T.1 = foo(); *p = T.1;".  After my patch, the gimplifier no
longer introduced a temporary.  If A is returned in memory the tailcall pass
then marks the line "*p = foo()" as a tailcall, losing the assignment in the
process.

I think I'll fix this by using a temporary for all non-BLKmode types, but this
also seems like a bug in the tailcall pass.


-- 


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

Reply via email to