http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45849
--- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> 2010-10-01 16:43:09 UTC --- Seems simplify_rtx depends on ORIG_REGNO or REG_POINTER: (gdb) p debug_rtx (copy) (plus:DI (minus:DI (reg/v/f:DI 42 r13 [orig:66 matchstart ] [66]) (reg:DI 41 r12)) (mult:DI (minus:DI (reg/v/f:DI 6 bp [orig:76 rp ] [76]) (reg/v/f:DI 42 r13 [orig:66 matchstart ] [66])) (reg/v:DI 43 r14 [orig:62 repllen ] [62]))) $52 = void (gdb) p debug_rtx (0x7ffff19403c0) (plus:DI (minus:DI (reg/v/f:DI 42 r13 [orig:66 matchstart ] [66]) (reg/v/f:DI 41 r12 [orig:61 text ] [61])) (mult:DI (minus:DI (reg/v/f:DI 6 bp [orig:76 rp ] [76]) (reg/v/f:DI 42 r13 [orig:66 matchstart ] [66])) (reg/v:DI 43 r14 [orig:62 repllen ] [62]))) $53 = void (gdb) p rtx_equal_p (copy, 0x7ffff19403c0) $54 = 1 (gdb) p debug_rtx (simplify_rtx (copy)) (plus:DI (mult:DI (minus:DI (reg/v/f:DI 6 bp [orig:76 rp ] [76]) (reg/v/f:DI 42 r13 [orig:66 matchstart ] [66])) (reg/v:DI 43 r14 [orig:62 repllen ] [62])) (minus:DI (reg/v/f:DI 42 r13 [orig:66 matchstart ] [66]) (reg:DI 41 r12))) $55 = void (gdb) p debug_rtx (simplify_rtx (0x7ffff19403c0)) (plus:DI (minus:DI (mult:DI (minus:DI (reg/v/f:DI 6 bp [orig:76 rp ] [76]) (reg/v/f:DI 42 r13 [orig:66 matchstart ] [66])) (reg/v:DI 43 r14 [orig:62 repllen ] [62])) (reg/v/f:DI 41 r12 [orig:61 text ] [61])) (reg/v/f:DI 42 r13 [orig:66 matchstart ] [66])) $56 = void (gdb) p rtx_equal_p (simplify_rtx (copy), simplify_rtx (0x7ffff19403c0)) $57 = 0