aboutsummaryrefslogtreecommitdiff
path: root/gcc/c-family
diff options
context:
space:
mode:
authorAndi Kleen <ak@linux.intel.com>2012-11-09 15:24:25 +0000
committerAndi Kleen <ak@linux.intel.com>2012-11-09 15:24:25 +0000
commit1ef90e00d961fee620ec997c85fbd9c840ac8eff (patch)
tree7eb028a1a6f1da03283226a754c2f33692bf6666 /gcc/c-family
parent54ee89a32726cfd6835850295ce867845ece5c5a (diff)
Handle target specific memory models in C frontend
get_atomic_generic_size would error out for __atomic_store(...,__ATOMIC_HLE_RELEASE) Just mask it out. All the memory orders are checked completely in builtins.c anyways. I'm not sure what that check is for, it could be removed in theory. Passed bootstrap and test suite on x86-64 gcc/c-family/: 2012-11-09 Andi Kleen <ak@linux.intel.com> PR 55139 * c-common.c (get_atomic_generic_size): Mask with MEMMODEL_MASK git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@193363 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/c-family')
-rw-r--r--gcc/c-family/ChangeLog6
-rw-r--r--gcc/c-family/c-common.c2
2 files changed, 7 insertions, 1 deletions
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index 937fd6d1e28..20ef315ea74 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,9 @@
+2012-11-09 Andi Kleen <ak@linux.intel.com>
+
+ PR 55139
+ * c-common.c (get_atomic_generic_size): Mask with
+ MEMMODEL_MASK
+
2012-11-07 Manuel López-Ibáñez <manu@gcc.gnu.org>
PR c/53063
diff --git a/gcc/c-family/c-common.c b/gcc/c-family/c-common.c
index c3a64653471..7828d210507 100644
--- a/gcc/c-family/c-common.c
+++ b/gcc/c-family/c-common.c
@@ -10097,7 +10097,7 @@ get_atomic_generic_size (location_t loc, tree function, VEC(tree,gc) *params)
if (TREE_CODE (p) == INTEGER_CST)
{
int i = tree_low_cst (p, 1);
- if (i < 0 || i >= MEMMODEL_LAST)
+ if (i < 0 || (i & MEMMODEL_MASK) >= MEMMODEL_LAST)
{
warning_at (loc, OPT_Winvalid_memory_model,
"invalid memory model argument %d of %qE", x + 1,