diff options
author | Hans-Peter Nilsson <hp@axis.com> | 2012-07-16 03:02:47 +0000 |
---|---|---|
committer | Hans-Peter Nilsson <hp@gcc.gnu.org> | 2012-07-16 03:02:47 +0000 |
commit | 1cdea33b8f8af9912a2fdf7ed5848e68b46c286a (patch) | |
tree | d38afa81614946ad980dc38a1a09cee41c33f67f /gcc | |
parent | fdb6272c11a47c5030719f0cf059b57974a269f2 (diff) | |
download | gcc-1cdea33b8f8af9912a2fdf7ed5848e68b46c286a.zip gcc-1cdea33b8f8af9912a2fdf7ed5848e68b46c286a.tar.gz gcc-1cdea33b8f8af9912a2fdf7ed5848e68b46c286a.tar.bz2 |
sync.md ("atomic_compare_and_swap<mode>"): Change predicate to nonmemory_operand for operand 3.
* config/cris/sync.md ("atomic_compare_and_swap<mode>"): Change
predicate to nonmemory_operand for operand 3. Add FIXME.
("cris_atomic_compare_and_swap<mode>_1"): Change predicates and
From-SVN: r189501
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/cris/sync.md | 5 |
2 files changed, 8 insertions, 3 deletions
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 <hp@axis.com> - * config/cris/sync.md ("atomic_fetch_<atomic_op_name><mode>") + * config/cris/sync.md ("atomic_compare_and_swap<mode>"): Change + predicate to nonmemory_operand for operand 3. Add FIXME. + ("cris_atomic_compare_and_swap<mode>_1"): Change predicates and + constraints for operand 3 to exclude memory. + ("atomic_fetch_<atomic_op_name><mode>") ("atomic_compare_and_swap<mode>"): 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<mode> over this, but having both would be ;; redundant. +;; FIXME: handle memory without side-effects for operand[3]. (define_expand "atomic_compare_and_swap<mode>" [(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) |