From ad7bac31307f16060dbb7ce4a36d44698ca2be76 Mon Sep 17 00:00:00 2001 From: Andi Kleen Date: Fri, 9 Nov 2012 15:24:25 +0000 Subject: [PATCH] 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 PR 55139 * c-common.c (get_atomic_generic_size): Mask with MEMMODEL_MASK From-SVN: r193363 --- gcc/c-family/ChangeLog | 6 ++++++ gcc/c-family/c-common.c | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index 937fd6d1e286..20ef315ea744 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,9 @@ +2012-11-09 Andi Kleen + + PR 55139 + * c-common.c (get_atomic_generic_size): Mask with + MEMMODEL_MASK + 2012-11-07 Manuel López-Ibáñez PR c/53063 diff --git a/gcc/c-family/c-common.c b/gcc/c-family/c-common.c index c3a646534710..7828d2105076 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, -- 2.47.3