https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58945
--- Comment #5 from Uroš Bizjak <ubizjak at gmail dot com> --- Created attachment 33744 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=33744&action=edit Simplified patch Somehow simplified patch for mainline. Still fails with -O2 -mcx16: atomic-store-6.c: In function ‘main’: atomic-store-6.c:13:1: error: unable to find a register to spill } ^ atomic-store-6.c:13:1: error: this is the insn: (insn 9 48 47 3 (parallel [ (set (reg:TI 101 [86]) (unspec_volatile:TI [ (mem/v:TI (symbol_ref:DI ("i") <var_decl 0x2adae9631c60 i>) [-1 S16 A128]) (reg:TI 101 [86]) (reg:DI 102 [99]) (reg:DI 99) (const_int 5 [0x5]) ] UNSPECV_CMPXCHG)) (set (mem/v:TI (symbol_ref:DI ("i") <var_decl 0x2adae9631c60 i>) [-1 S16 A128]) (unspec_volatile:TI [ (const_int 0 [0]) ] UNSPECV_CMPXCHG)) (set (reg:CCZ 17 flags) (unspec_volatile:CCZ [ (const_int 0 [0]) ] UNSPECV_CMPXCHG)) ]) atomic-store-6.c:9 4876 {atomic_compare_and_swapti_doubleword} (expr_list:REG_DEAD (reg:DI 102 [99]) (nil))) atomic-store-6.c:13:1: internal compiler error: in assign_by_spills, at lra-assigns.c:1363