https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114310
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|--- |11.5 Status|UNCONFIRMED |NEW Last reconfirmed| |2024-03-11 Ever confirmed|0 |1 Summary|[aarch64] |[11/12/13/14 Regression] |__sync_val_compare_and_swap |[aarch64] |fails on __int128_t with |__sync_val_compare_and_swap |newval = 0 |fails on __int128_t with | |newval = 0 Known to work| |8.2.0 Known to fail| |8.5.0 --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Most likely: [apinski@xeond2 aarch64]$ git diff atomics.md diff --git a/gcc/config/aarch64/atomics.md b/gcc/config/aarch64/atomics.md index 32a0a723732..759e280468a 100644 --- a/gcc/config/aarch64/atomics.md +++ b/gcc/config/aarch64/atomics.md @@ -98,8 +98,8 @@ (define_insn_and_split "@aarch64_compare_and_swap<mode>" (match_operand:JUST_TI 1 "aarch64_sync_memory_operand" "+Q")) ;; memory (set (match_dup 1) (unspec_volatile:JUST_TI - [(match_operand:JUST_TI 2 "aarch64_reg_or_zero" "rZ") ;; expect - (match_operand:JUST_TI 3 "aarch64_reg_or_zero" "rZ") ;; desired + [(match_operand:JUST_TI 2 "aarch64_reg_or_zero" "r") ;; expect + (match_operand:JUST_TI 3 "aarch64_reg_or_zero" "r") ;; desired (match_operand:SI 4 "const_int_operand") ;; is_weak (match_operand:SI 5 "const_int_operand") ;; mod_s (match_operand:SI 6 "const_int_operand")] ;; mod_f