------- Comment #8 from rguenth at gcc dot gnu dot org  2009-01-24 09:22 -------
Smaller testcase:

struct Empty { Empty() {} };
struct Other {
  Other(const Empty& e_) : e(e_) {}
  Empty e;
};
void bar(Other&);
void foo()
{
  Empty e;
  Other o(e);
  bar(o);
}

RTL expansion removes the assignment, so we should be able to use the same
reasoning to disable the warning and/or to get rid of the assignment on
the tree level.  RTL uses expr_size() here, which yields const0_rtx for e
and o.  As this involves a langhook I think the correct thing is to fix
the missed-optimization and remove these stores during gimplification
(or from within the frontend, of course).


-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |lopezibanez at gmail dot
                   |                            |com, rguenth at gcc dot gnu
                   |                            |dot org
           Priority|P2                          |P1


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

Reply via email to