https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114211
Uroš Bizjak <ubizjak at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- Component|target |rtl-optimization Keywords|needs-bisection | --- Comment #3 from Uroš Bizjak <ubizjak at gmail dot com> --- (In reply to Richard Biener from comment #2) > Possibly target independent rtl-optimization issue. It is _subreg1 pass that converts: (insn 10 7 11 2 (set (reg/v:TI 106 [ h ]) (rotate:TI (reg/v:TI 106 [ h ]) (const_int 64 [0x40]))) "pr114211.c":9:5 1042 {rotl64ti2_doubleword} (nil)) to: (insn 39 7 40 2 (set (reg:DI 128 [ h+8 ]) (reg:DI 127 [ h ])) "pr114211.c":9:5 84 {*movdi_internal} (nil)) (insn 40 39 11 2 (set (reg:DI 127 [ h ]) (reg:DI 128 [ h+8 ])) "pr114211.c":9:5 84 {*movdi_internal} (nil)) Well... this won't swap. Either parallel should be emitted, or a temporary should be used. Adding -fno-split-wide-types fixes the testcase. Re-confirmed as rtl-optimization problem.