Commit ba6bdc29 by Eric Botcazou Committed by Eric Botcazou

re PR target/55673 (Reversed before/after handling in sparc_emit_membar_for_model)

	PR target/55673
	* config/sparc/sparc.c (sparc_emit_membar_for_model): Fix reversed
	handling of before and after cases.
	* config/sparc/sync.md (atomic_store): Fix pasto.

Co-Authored-By: Tomash Brechko <tomash.brechko@gmail.com>

From-SVN: r194531
parent 1bae867a
2012-12-16 Eric Botcazou <ebotcazou@adacore.com> 2012-12-16 Eric Botcazou <ebotcazou@adacore.com>
Tomash Brechko <tomash.brechko@gmail.com>
PR target/55673
* config/sparc/sparc.c (sparc_emit_membar_for_model): Fix reversed
handling of before and after cases.
* config/sparc/sync.md (atomic_store): Fix pasto.
2012-12-16 Eric Botcazou <ebotcazou@adacore.com>
PR rtl-optimization/55630 PR rtl-optimization/55630
* expr.c (expand_assignment): Do not call copy_blkmode_to_reg to move * expr.c (expand_assignment): Do not call copy_blkmode_to_reg to move
...@@ -11190,26 +11190,26 @@ sparc_emit_membar_for_model (enum memmodel model, ...@@ -11190,26 +11190,26 @@ sparc_emit_membar_for_model (enum memmodel model,
if (before_after & 1) if (before_after & 1)
{ {
if (model == MEMMODEL_ACQUIRE if (model == MEMMODEL_RELEASE
|| model == MEMMODEL_ACQ_REL || model == MEMMODEL_ACQ_REL
|| model == MEMMODEL_SEQ_CST) || model == MEMMODEL_SEQ_CST)
{ {
if (load_store & 1) if (load_store & 1)
mm |= LoadLoad | LoadStore; mm |= LoadLoad | StoreLoad;
if (load_store & 2) if (load_store & 2)
mm |= StoreLoad | StoreStore; mm |= LoadStore | StoreStore;
} }
} }
if (before_after & 2) if (before_after & 2)
{ {
if (model == MEMMODEL_RELEASE if (model == MEMMODEL_ACQUIRE
|| model == MEMMODEL_ACQ_REL || model == MEMMODEL_ACQ_REL
|| model == MEMMODEL_SEQ_CST) || model == MEMMODEL_SEQ_CST)
{ {
if (load_store & 1) if (load_store & 1)
mm |= LoadLoad | StoreLoad; mm |= LoadLoad | LoadStore;
if (load_store & 2) if (load_store & 2)
mm |= LoadStore | StoreStore; mm |= StoreLoad | StoreStore;
} }
} }
......
...@@ -35,8 +35,7 @@ ...@@ -35,8 +35,7 @@
(define_expand "membar" (define_expand "membar"
[(set (match_dup 1) [(set (match_dup 1)
(unspec:BLK [(match_dup 1) (unspec:BLK [(match_dup 1) (match_operand:SI 0 "const_int_operand")]
(match_operand:SI 0 "const_int_operand")]
UNSPEC_MEMBAR))] UNSPEC_MEMBAR))]
"TARGET_V8 || TARGET_V9" "TARGET_V8 || TARGET_V9"
{ {
...@@ -66,7 +65,7 @@ ...@@ -66,7 +65,7 @@
"stbar" "stbar"
[(set_attr "type" "multi")]) [(set_attr "type" "multi")])
;; For V8, LDSTUB has the effect of membar #StoreLoad ;; For V8, LDSTUB has the effect of membar #StoreLoad.
(define_insn "*membar_storeload" (define_insn "*membar_storeload"
[(set (match_operand:BLK 0 "" "") [(set (match_operand:BLK 0 "" "")
(unspec:BLK [(match_dup 0) (const_int 2)] UNSPEC_MEMBAR))] (unspec:BLK [(match_dup 0) (const_int 2)] UNSPEC_MEMBAR))]
...@@ -123,8 +122,8 @@ ...@@ -123,8 +122,8 @@
[(set_attr "type" "load,fpload")]) [(set_attr "type" "load,fpload")])
(define_expand "atomic_store<mode>" (define_expand "atomic_store<mode>"
[(match_operand:I 0 "register_operand" "") [(match_operand:I 0 "memory_operand" "")
(match_operand:I 1 "memory_operand" "") (match_operand:I 1 "register_operand" "")
(match_operand:SI 2 "const_int_operand" "")] (match_operand:SI 2 "const_int_operand" "")]
"" ""
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment