------- Comment #10 from dje at gcc dot gnu dot org 2008-05-01 17:33 ------- In your second example, the RTL is in the canonical form that I would have expected and already is handled:
(mem/u/c/i:DF (plus:DI (reg:DI 2 2)
(const:DI (plus:DI (minus:DI (symbol_ref/u:DI ("*.LC0") [flags 0x2])
(symbol_ref:DI ("*.LCTOC1")))
(const_int 8 [0x8])))) [2 S8 A64])
The other solution is to ensure the propagated value produces canonical RTL.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36090
