[4/4] Add warning for non-constant memory models

Message ID 1363440569-17331-4-git-send-email-andi@firstfloor.org
State New
Headers show

Commit Message

Andi Kleen March 16, 2013, 1:29 p.m.
From: Andi Kleen <ak@linux.intel.com>

Non constant memory models drop HLE attribute bits. Since we had
problems with this even in gcc code itself, like libstdc++ <atomic>
passing variables when not optimizing, add a warning for this case.

Passed bootstrap and test on x86_64-linux.

2013-03-15  Andi Kleen  <ak@my.domain.org>

	PR target/55947
	* gcc/builtins.c (get_memmodel): Warn for non constant
	memory model.
 gcc/builtins.c |   10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)


Richard Henderson March 19, 2013, 8:49 p.m. | #1
On 03/16/2013 06:29 AM, Andi Kleen wrote:
> +	       "Non constant memory model: Assuming __ATOMIC_SEQ_CST");

Warnings and error messages are all lower case.  Otherwise it seems...
well, I didn't want to say "ok", but certainly "unavoidable".



diff --git a/gcc/builtins.c b/gcc/builtins.c
index 68b6a2c..c4efc4c 100644
--- a/gcc/builtins.c
+++ b/gcc/builtins.c
@@ -5280,10 +5280,14 @@  get_memmodel (tree exp)
   rtx op;
   unsigned HOST_WIDE_INT val;
-  /* If the parameter is not a constant, it's a run time value so we'll just
-     convert it to MEMMODEL_SEQ_CST to avoid annoying runtime checking.  */
+  /* Warn about non constant memory models, as we drop target specific
+     bits (like HLE). */
   if (TREE_CODE (exp) != INTEGER_CST)
-    return MEMMODEL_SEQ_CST;
+    {
+      warning (OPT_Winvalid_memory_model,
+	       "Non constant memory model: Assuming __ATOMIC_SEQ_CST");
+      return MEMMODEL_SEQ_CST;
+    }
   op = expand_normal (exp);