From 1cdea33b8f8af9912a2fdf7ed5848e68b46c286a Mon Sep 17 00:00:00 2001 From: Hans-Peter Nilsson Date: Mon, 16 Jul 2012 03:02:47 +0000 Subject: sync.md ("atomic_compare_and_swap"): Change predicate to nonmemory_operand for operand 3. * config/cris/sync.md ("atomic_compare_and_swap"): Change predicate to nonmemory_operand for operand 3. Add FIXME. ("cris_atomic_compare_and_swap_1"): Change predicates and From-SVN: r189501 --- gcc/ChangeLog | 6 +++++- gcc/config/cris/sync.md | 5 +++-- 2 files changed, 8 insertions(+), 3 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2e12d4e..2ff638d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,6 +1,10 @@ 2012-07-16 Hans-Peter Nilsson - * config/cris/sync.md ("atomic_fetch_") + * config/cris/sync.md ("atomic_compare_and_swap"): Change + predicate to nonmemory_operand for operand 3. Add FIXME. + ("cris_atomic_compare_and_swap_1"): Change predicates and + constraints for operand 3 to exclude memory. + ("atomic_fetch_") ("atomic_compare_and_swap"): Gate expand_mem_thread_fence calls on result of call to need_atomic_barrier_p. diff --git a/gcc/config/cris/sync.md b/gcc/config/cris/sync.md index 5dc2858..baa2beb 100644 --- a/gcc/config/cris/sync.md +++ b/gcc/config/cris/sync.md @@ -184,11 +184,12 @@ ;; can_compare_and_swap_p call in omp-low.c, 4.8 era). We'd slightly ;; prefer atomic_exchange over this, but having both would be ;; redundant. +;; FIXME: handle memory without side-effects for operand[3]. (define_expand "atomic_compare_and_swap" [(match_operand:SI 0 "register_operand") (match_operand:BWD 1 "register_operand") (match_operand:BWD 2 "memory_operand") - (match_operand:BWD 3 "general_operand") + (match_operand:BWD 3 "nonmemory_operand") (match_operand:BWD 4 "register_operand") (match_operand 5) (match_operand 6) @@ -218,7 +219,7 @@ [(set (match_operand:SI 0 "register_operand" "=&r") (unspec_volatile:SI [(match_operand:BWD 2 "memory_operand" "+Q") - (match_operand:BWD 3 "general_operand" "g")] + (match_operand:BWD 3 "nonmemory_operand" "ri")] CRIS_UNSPEC_ATOMIC_SWAP_BOOL)) (set (match_operand:BWD 1 "register_operand" "=&r") (match_dup 2)) (set (match_dup 2) -- cgit v1.1