aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorHans-Peter Nilsson <hp@axis.com>2012-07-16 03:02:47 +0000
committerHans-Peter Nilsson <hp@gcc.gnu.org>2012-07-16 03:02:47 +0000
commit1cdea33b8f8af9912a2fdf7ed5848e68b46c286a (patch)
treed38afa81614946ad980dc38a1a09cee41c33f67f /gcc
parentfdb6272c11a47c5030719f0cf059b57974a269f2 (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/config/cris/sync.md5
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)