CWG 2094 - volatile scalars are trivially copyable.
PR c++/85679 * tree.c (trivially_copyable_p): Don't check CP_TYPE_VOLATILE_P for scalar types. * g++.dg/ext/is_trivially_constructible1.C: Change the expected result for volatile int. * g++.dg/ext/is_trivially_copyable.C: New test. * testsuite/20_util/is_trivially_copyable/value.cc: Change the expected result for volatile int. From-SVN: r271435
This commit is contained in:
parent
f12ea6acde
commit
be9e458d8b
@ -1,3 +1,10 @@
|
||||
2019-05-20 Marek Polacek <polacek@redhat.com>
|
||||
|
||||
CWG 2094 - volatile scalars are trivially copyable.
|
||||
PR c++/85679
|
||||
* tree.c (trivially_copyable_p): Don't check CP_TYPE_VOLATILE_P for
|
||||
scalar types.
|
||||
|
||||
2019-05-20 Marek Polacek <polacek@redhat.com>
|
||||
|
||||
* pt.c (convert_template_argument): Add a diagnostic for the
|
||||
|
@ -4098,7 +4098,8 @@ trivially_copyable_p (const_tree t)
|
||||
&& !TYPE_HAS_COMPLEX_MOVE_ASSIGN (t)
|
||||
&& TYPE_HAS_TRIVIAL_DESTRUCTOR (t));
|
||||
else
|
||||
return !CP_TYPE_VOLATILE_P (t) && scalarish_type_p (t);
|
||||
/* CWG 2094 makes volatile-qualified scalars trivially copyable again. */
|
||||
return scalarish_type_p (t);
|
||||
}
|
||||
|
||||
/* Returns 1 iff type T is a trivial type, as defined in [basic.types] and
|
||||
|
@ -1,3 +1,11 @@
|
||||
2019-05-20 Marek Polacek <polacek@redhat.com>
|
||||
|
||||
CWG 2094 - volatile scalars are trivially copyable.
|
||||
PR c++/85679
|
||||
* g++.dg/ext/is_trivially_constructible1.C: Change the expected result
|
||||
for volatile int.
|
||||
* g++.dg/ext/is_trivially_copyable.C: New test.
|
||||
|
||||
2019-05-20 Marek Polacek <polacek@redhat.com>
|
||||
|
||||
* g++.dg/ext/utf8-2.C: Accept both "char" and "char8_t" in aka.
|
||||
|
@ -48,7 +48,9 @@ SA(!__is_trivially_constructible(int*, const int*));
|
||||
SA(!__is_trivially_constructible(D));
|
||||
|
||||
SA(__is_trivially_copyable(int));
|
||||
SA(!__is_trivially_copyable(volatile int));
|
||||
// Changed in CWG 2094, which made volatile-qualified scalars trivially
|
||||
// copyable.
|
||||
SA(__is_trivially_copyable(volatile int));
|
||||
|
||||
struct E1 {const int val;};
|
||||
SA(__is_trivially_copyable(E1));
|
||||
|
16
gcc/testsuite/g++.dg/ext/is_trivially_copyable.C
Normal file
16
gcc/testsuite/g++.dg/ext/is_trivially_copyable.C
Normal file
@ -0,0 +1,16 @@
|
||||
// CWG 2094 - volatile scalars are trivially copyable.
|
||||
// PR c++/85679
|
||||
// { dg-do compile { target c++11 } }
|
||||
|
||||
#define SA(X) static_assert((X),#X)
|
||||
|
||||
struct S{};
|
||||
|
||||
SA(__is_trivially_copyable(S volatile));
|
||||
SA(__is_trivially_copyable(S volatile[]));
|
||||
SA(__is_trivially_copyable(S const volatile));
|
||||
SA(__is_trivially_copyable(S const volatile[]));
|
||||
SA(__is_trivially_copyable(int volatile));
|
||||
SA(__is_trivially_copyable(int volatile[]));
|
||||
SA(__is_trivially_copyable(int const volatile));
|
||||
SA(__is_trivially_copyable(int const volatile[]));
|
@ -1,3 +1,10 @@
|
||||
2019-05-20 Marek Polacek <polacek@redhat.com>
|
||||
|
||||
CWG 2094 - volatile scalars are trivially copyable.
|
||||
PR c++/85679
|
||||
* testsuite/20_util/is_trivially_copyable/value.cc: Change the expected
|
||||
result for volatile int.
|
||||
|
||||
2019-05-20 Jonathan Wakely <jwakely@redhat.com>
|
||||
|
||||
* testsuite/17_intro/names.cc: Do not check 'ptr' on Solaris.
|
||||
|
@ -46,8 +46,10 @@ void test01()
|
||||
|
||||
static_assert(test_property<is_trivially_copyable,
|
||||
int>(true), "");
|
||||
// Changed in CWG 2094, which made volatile-qualified scalars trivially
|
||||
// copyable.
|
||||
static_assert(test_property<is_trivially_copyable,
|
||||
volatile int>(false), "");
|
||||
volatile int>(true), "");
|
||||
static_assert(test_property<is_trivially_copyable,
|
||||
TType>(true), "");
|
||||
static_assert(test_property<is_trivially_copyable,
|
||||
|
Loading…
x
Reference in New Issue
Block a user