mirror of git://gcc.gnu.org/git/gcc.git
re PR c++/52215 (__atomic_compare_exchange_n for enumeration type changes signature with -m32)
PR c++/52215 * c-common.c (sync_resolve_params): Don't decide whether to convert or not based on TYPE_SIZE comparison, convert whenever arg_type is unsigned INTEGER_TYPE. * g++.dg/ext/atomic-1.C: New test. From-SVN: r184167
This commit is contained in:
parent
9abd5ed90b
commit
e3793c6fb9
|
@ -1,3 +1,10 @@
|
|||
2012-02-13 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c++/52215
|
||||
* c-common.c (sync_resolve_params): Don't decide whether to convert
|
||||
or not based on TYPE_SIZE comparison, convert whenever arg_type
|
||||
is unsigned INTEGER_TYPE.
|
||||
|
||||
2012-02-06 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
PR c/52118
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* Subroutines shared by all languages that are variants of C.
|
||||
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
|
||||
2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
|
||||
2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GCC.
|
||||
|
@ -9336,10 +9336,12 @@ sync_resolve_params (location_t loc, tree orig_function, tree function,
|
|||
return false;
|
||||
}
|
||||
|
||||
/* Only convert parameters if the size is appropriate with new format
|
||||
sync routines. */
|
||||
if (orig_format
|
||||
|| tree_int_cst_equal (TYPE_SIZE (ptype), TYPE_SIZE (arg_type)))
|
||||
/* Only convert parameters if arg_type is unsigned integer type with
|
||||
new format sync routines, i.e. don't attempt to convert pointer
|
||||
arguments (e.g. EXPECTED argument of __atomic_compare_exchange_n),
|
||||
bool arguments (e.g. WEAK argument) or signed int arguments (memmodel
|
||||
kinds). */
|
||||
if (TREE_CODE (arg_type) == INTEGER_TYPE && TYPE_UNSIGNED (arg_type))
|
||||
{
|
||||
/* Ideally for the first conversion we'd use convert_for_assignment
|
||||
so that we get warnings for anything that doesn't match the pointer
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2012-02-13 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c++/52215
|
||||
* g++.dg/ext/atomic-1.C: New test.
|
||||
|
||||
2012-02-13 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
|
||||
|
||||
* gcc.c-torture/execute/pr51933.c: Modify for s390 31 bit.
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
// PR c++/52215
|
||||
// { dg-do compile }
|
||||
|
||||
enum E { ZERO };
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
E e = ZERO;
|
||||
__atomic_compare_exchange_n (&e, &e, e, true, __ATOMIC_ACQ_REL,
|
||||
__ATOMIC_RELAXED);
|
||||
}
|
Loading…
Reference in New Issue