http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58110
Jan Hubicka <hubicka at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2013-08-09 CC| |hubicka at gcc dot gnu.org, | |vmakarov at redhat dot com Ever confirmed|0 |1 Severity|normal |enhancement --- Comment #2 from Jan Hubicka <hubicka at gcc dot gnu.org> --- Here BX is used after reload for: (insn 118 116 119 9 (parallel [ (set (reg:DI 3 bx [orig:111 D.4408 ] [111]) (plus:DI (reg/v:DI 1 dx [orig:242 n ] [242]) (const_int -16 [0xfffffffffffffff0]))) (clobber (reg:CC 17 flags)) ]) memcpy.c:96 249 {*adddi_1} (nil)) ... (insn 120 119 122 9 (set (reg:V16QI 51 xmm14 [281]) (unspec:V16QI [ (mem:V16QI (plus:DI (reg/v/f:DI 4 si [orig:241 src ] [241]) (reg:DI 3 bx [orig:111 D.4408 ] [111])) [0 S16 A8]) ] UNSPEC_LOADU)) /usr/lib64/gcc/x86_64-suse-linux/4.7/include/emmintrin.h:685 1107 {sse2_loaddqu} (nil)) ... (insn 175 173 178 9 (set (mem:V16QI (plus:DI (reg/v/f:DI 0 ax [orig:240 dest ] [240]) (reg:DI 3 bx [orig:111 D.4408 ] [111])) [0 S16 A8]) (unspec:V16QI [ (reg:V16QI 51 xmm14 [281]) ] UNSPEC_STOREU)) /usr/lib64/gcc/x86_64-suse-linux/4.7/include/emmintrin.h:703 1109 {sse2_storedqu} (nil)) .... and this gets updated by postrealod to (insn 120 119 122 9 (set (reg:V16QI 51 xmm14 [281]) (unspec:V16QI [ (mem:V16QI (plus:DI (plus:DI (reg/v/f:DI 4 si [orig:241 src ] [241]) (reg/v:DI 1 dx [orig:242 n ] [242])) (const_int -16 [0xfffffffffffffff0])) [0 S16 A8]) ] UNSPEC_LOADU)) /usr/lib64/gcc/x86_64-suse-linux/4.7/include/emmintrin.h:685 1107 {sse2_loaddqu} (nil)) So RBX become unused. Vladimir, perhaps you can take a look?