re PR c++/57926 (Atomic functions broken with C++ but not C?)
PR c++/57926 * c-common.c (sync_resolve_size, get_atomic_generic_size): Call default_conversion for an array argument. From-SVN: r209316
This commit is contained in:
parent
636201978b
commit
6415bd5d63
|
@ -1,3 +1,9 @@
|
|||
2014-04-11 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/57926
|
||||
* c-common.c (sync_resolve_size, get_atomic_generic_size): Call
|
||||
default_conversion for an array argument.
|
||||
|
||||
2014-04-08 Marek Polacek <polacek@redhat.com>
|
||||
|
||||
PR sanitizer/60745
|
||||
|
|
|
@ -10202,6 +10202,13 @@ sync_resolve_size (tree function, vec<tree, va_gc> *params)
|
|||
}
|
||||
|
||||
type = TREE_TYPE ((*params)[0]);
|
||||
if (TREE_CODE (type) == ARRAY_TYPE)
|
||||
{
|
||||
/* Force array-to-pointer decay for C++. */
|
||||
gcc_assert (c_dialect_cxx());
|
||||
(*params)[0] = default_conversion ((*params)[0]);
|
||||
type = TREE_TYPE ((*params)[0]);
|
||||
}
|
||||
if (TREE_CODE (type) != POINTER_TYPE)
|
||||
goto incompatible;
|
||||
|
||||
|
@ -10353,6 +10360,13 @@ get_atomic_generic_size (location_t loc, tree function,
|
|||
|
||||
/* Get type of first parameter, and determine its size. */
|
||||
type_0 = TREE_TYPE ((*params)[0]);
|
||||
if (TREE_CODE (type_0) == ARRAY_TYPE)
|
||||
{
|
||||
/* Force array-to-pointer decay for C++. */
|
||||
gcc_assert (c_dialect_cxx());
|
||||
(*params)[0] = default_conversion ((*params)[0]);
|
||||
type_0 = TREE_TYPE ((*params)[0]);
|
||||
}
|
||||
if (TREE_CODE (type_0) != POINTER_TYPE || VOID_TYPE_P (TREE_TYPE (type_0)))
|
||||
{
|
||||
error_at (loc, "argument 1 of %qE must be a non-void pointer type",
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
// PR c++/57926
|
||||
|
||||
long Mutex[1];
|
||||
|
||||
int AcquireLogMutex(void)
|
||||
{
|
||||
return __atomic_exchange_n(Mutex, 1, __ATOMIC_SEQ_CST);
|
||||
}
|
||||
|
||||
void ReleaseLogMutex(void)
|
||||
{
|
||||
long i = 0;
|
||||
__atomic_store(Mutex, &i, __ATOMIC_SEQ_CST);
|
||||
}
|
Loading…
Reference in New Issue