This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Handle target specific memory models in C frontend
- From: Jakub Jelinek <jakub at redhat dot com>
- To: Andi Kleen <andi at firstfloor dot org>, Richard Henderson <rth at redhat dot com>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Fri, 9 Nov 2012 16:18:36 +0100
- Subject: Re: [PATCH] Handle target specific memory models in C frontend
- References: <1352473427-11967-1-git-send-email-andi@firstfloor.org>
- Reply-to: Jakub Jelinek <jakub at redhat dot com>
Hi!
Just nits.
On Fri, Nov 09, 2012 at 04:03:47PM +0100, Andi Kleen wrote:
> From: Andi Kleen <ak@linux.intel.com>
>
> 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.
I think it actually should be removed, given that e.g.
int i, j;
void
foo (void)
{
__atomic_store (&i, &j, 12);
}
warns twice for the same thing, when it should only warn once.
Richard?
> Passed bootstrap and test suite on x86-64
>
> gcc/c-family/:
> 2012-11-09 Andi Kleen <ak@linux.intel.com>
>
> PR55139
That should be PR target/55139
> * c-common.c (get_atomic_generic_size): Mask with
> MEMMODEL_MASK
Dot after MEMMODEL_MASK and don't wrap it on next line.
> ---
> gcc/c-family/c-common.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/gcc/c-family/c-common.c b/gcc/c-family/c-common.c
> index c3a6465..7828d21 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,
If that whole loop doesn't get removed, there are some formatting issues in
it:
for (x = n_param - n_model ; x < n_param; x++)
shouldn't have space before ; and
error_at (loc, "non-integer memory model argument %d of %qE", x + 1,
function);
doesn't correctly horizontally aling the second line.
Jakub