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