------- 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

Reply via email to