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