------- Comment #5 from krebbel at gcc dot gnu dot org  2008-01-07 17:28 -------
The (const_int 3148725999 [0xbbadbeef]) is accepted by legitimate_constant_p
since it is expected to end up in the literal pool.  But in this case the
constant becomes part of a REG_EQUIV note of an insn moving the constant into a
pseudo register. 

Generating a reload for a later insn using the pseudo as memory base register
the REG_EQUIV note is used by push_reload to replace the pseudo directly with
the constant.  The emitted move insn can't be recognized since none of the
constraints of the move pattern accepts the large constant.

I think push_reload has to make sure that the move pattern to be emitted is
able to deal with the constant taken from the reg_equiv_constant array.


-- 

krebbel at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2008-01-07 17:28:30
               date|                            |


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

Reply via email to