[Bug regression/52020] ICE in immed_double_const, at emit-rtl.c:544

matz at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Fri Jan 27 15:54:00 GMT 2012


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

Michael Matz <matz at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2012-01-27
                 CC|                            |matz at gcc dot gnu.org,
                   |                            |rguenth at gcc dot gnu.org
     Ever Confirmed|0                           |1

--- Comment #1 from Michael Matz <matz at gcc dot gnu.org> 2012-01-27 15:28:18 UTC ---
Will be fixed when Richi commits his patch from
  http://gcc.gnu.org/ml/gcc-patches/2012-01/msg01465.html

The problem is, that SRA transforms the "bu = CLOBBER" into bu.__o=0,
where the zero is of an OImode type.  This later is transformed into
a debug instruction (still using that large-type zero), and that zero can't
be transformed into RTL because OImode constants are too large to be held in
2*HOST_WIDE_INT .

SRA should not invent new constants that weren't there before.  It could
just as well generate new clobber statements (SSA names in LHS are allowed
there), if it really must scalarize the clobber statements.



More information about the Gcc-bugs mailing list