This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[SPARC] Fix PR target/86806
- From: Eric Botcazou <ebotcazou at adacore dot com>
- To: gcc-patches at gcc dot gnu dot org
- Date: Wed, 12 Dec 2018 12:40:39 +0100
- Subject: [SPARC] Fix PR target/86806
This adds the speculation barrier on SPARC-V9 in the form of membar #Sync.
2018-12-12 Eric Botcazou <ebotcazou@adacore.com>
PR target/86806
* config/sparc/sparc.md (unspecv): Add UNSPECV_SPECULATION_BARRIER.
(speculation_barrier): New instruction for V9.
--
Eric Botcazou
Index: config/sparc/sparc.md
===================================================================
--- config/sparc/sparc.md (revision 267029)
+++ config/sparc/sparc.md (working copy)
@@ -104,6 +104,9 @@ (define_c_enum "unspec" [
(define_c_enum "unspecv" [
UNSPECV_BLOCKAGE
+
+ UNSPECV_SPECULATION_BARRIER
+
UNSPECV_PROBE_STACK_RANGE
UNSPECV_FLUSHW
@@ -7309,6 +7312,14 @@ (define_insn "*frame_blockage<P:mode>"
""
[(set_attr "length" "0")])
+;; We use membar #Sync for the speculation barrier on V9.
+
+(define_insn "speculation_barrier"
+ [(unspec_volatile [(const_int 0)] UNSPECV_SPECULATION_BARRIER)]
+ "TARGET_V9"
+ "membar\t64"
+ [(set_attr "type" "multi")])
+
(define_expand "probe_stack"
[(set (match_operand 0 "memory_operand" "") (const_int 0))]
""