------- Comment #3 from jakub at gcc dot gnu dot org 2010-07-27 12:58 -------
Seems to be caused by partial inlining.
fnsplit splits off the:
q.0D.2030_3 = qD.1248;
fn7 (q.0D.2030_3);
part of fn9 into fn9.part.0:
fn9.part.0 ()
{
intD.0 D.2054;
voidD.32 * q.0D.2053;
struct T tD.2052;
struct T xD.2050;
intD.0 yD.2051;
<bb 4>:
<bb 2>:
q.0D.2053_1 = qD.1248;
fn7 (q.0D.2053_1);
<bb 3>:
<retval> = tD.2052;
return <retval>;
}
and uses:
tD.1261 = fn9.part.0 (); [return slot optimization]
in fn9 instead. tD.2052 isn't initialized anywhere though (and, it is unclear
why it did that at all, as that hunk doesn't modify t). Perhaps with -m32 and
aggregate return (where in the end t will be returned via hidden reference) t
is addressable? In any case, this is fnsplit bug.
--
jakub at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |hubicka at gcc dot gnu dot
| |org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45085