From 45805f17035ea374047d014014527ed642bbcd65 Mon Sep 17 00:00:00 2001
From: Uros Bizjak <uros@gcc.gnu.org>
Date: Sun, 13 Jan 2013 20:06:54 +0100
Subject: [PATCH] sync.md (mem_thread_fence): Mask operands[0] with
 MEMMODEL_MASK to determine memory model.

	* config/i386/sync.md (mem_thread_fence): Mask operands[0] with
	MEMMODEL_MASK to determine memory model.
	(atomic_store<mode>): Ditto from operands[2].
	* config/i386/i386.c (ix86_memmodel_check): Declare "strong" as bool.

From-SVN: r195137
---
 gcc/ChangeLog           | 12 +++++++++---
 gcc/config/i386/i386.c  |  2 +-
 gcc/config/i386/sync.md |  6 ++++--
 gcc/testsuite/ChangeLog |  2 +-
 4 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 59a16bbdf635..853c2d789c65 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,8 +1,14 @@
+2013-01-13  Uros Bizjak  <ubizjak@gmail.com>
+
+	* config/i386/sync.md (mem_thread_fence): Mask operands[0] with
+	MEMMODEL_MASK to determine memory model.
+	(atomic_store<mode>): Ditto from operands[2].
+	* config/i386/i386.c (ix86_memmodel_check): Declare "strong" as bool.
+
 2013-01-13  Jakub Jelinek  <jakub@redhat.com>
 
 	PR fortran/55935
-	* gimple-fold.c (get_symbol_constant_value): Call
-	unshare_expr.
+	* gimple-fold.c (get_symbol_constant_value): Call unshare_expr.
 	(fold_gimple_assign): Don't call unshare_expr here.
 	(fold_ctor_reference): Call unshare_expr.
 
@@ -61,7 +67,7 @@
 
 2013-01-10  Richard Sandiford  <rdsandiford@googlemail.com>
 
-	Update copyright years
+	Update copyright years.
 
 2013-01-10  Vladimir Makarov  <vmakarov@redhat.com>
 
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 723c654edc70..4f778c1c8559 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -42082,7 +42082,7 @@ static unsigned HOST_WIDE_INT
 ix86_memmodel_check (unsigned HOST_WIDE_INT val)
 {
   unsigned HOST_WIDE_INT model = val & MEMMODEL_MASK;
-  unsigned HOST_WIDE_INT strong;
+  bool strong;
 
   if (val & ~(unsigned HOST_WIDE_INT)(IX86_HLE_ACQUIRE|IX86_HLE_RELEASE
 				      |MEMMODEL_MASK)
diff --git a/gcc/config/i386/sync.md b/gcc/config/i386/sync.md
index a2ea7b24e84e..83198b93c011 100644
--- a/gcc/config/i386/sync.md
+++ b/gcc/config/i386/sync.md
@@ -101,9 +101,11 @@
   [(match_operand:SI 0 "const_int_operand")]		;; model
   ""
 {
+  enum memmodel model = (enum memmodel) (INTVAL (operands[0]) & MEMMODEL_MASK);
+
   /* Unless this is a SEQ_CST fence, the i386 memory model is strong
      enough not to require barriers of any kind.  */
-  if (INTVAL (operands[0]) == MEMMODEL_SEQ_CST)
+  if (model == MEMMODEL_SEQ_CST)
     {
       rtx (*mfence_insn)(rtx);
       rtx mem;
@@ -200,7 +202,7 @@
 		       UNSPEC_MOVA))]
   ""
 {
-  enum memmodel model = (enum memmodel) INTVAL (operands[2]);
+  enum memmodel model = (enum memmodel) (INTVAL (operands[2]) & MEMMODEL_MASK);
 
   if (<MODE>mode == DImode && !TARGET_64BIT)
     {
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 67671a86eca4..f567a72683ac 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -52,7 +52,7 @@
 
 2013-01-10  Vladimir Makarov  <vmakarov@redhat.com>
 
-	PR rtl-optimization/pr55672
+	PR rtl-optimization/55672
 	* gcc.target/i386/pr55672.c: New.
 
 2013-01-10  Jeff Law  <law@redhat.com>
-- 
GitLab