diff options
author | Ville Voutilainen <ville.voutilainen@gmail.com> | 2014-11-20 23:51:04 +0200 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2014-11-20 16:51:04 -0500 |
commit | 75bda2e8134c013bc3d02b78e5b8b34022961985 (patch) | |
tree | 4e7d542af9cda00c6e273ffaa2b981bb7e54cf57 /gcc | |
parent | e7ea147586ce851b8cc09e36d90a37550b8129bc (diff) | |
download | gcc-75bda2e8134c013bc3d02b78e5b8b34022961985.zip gcc-75bda2e8134c013bc3d02b78e5b8b34022961985.tar.gz gcc-75bda2e8134c013bc3d02b78e5b8b34022961985.tar.bz2 |
re PR c++/63959 (G++ misreports volatile int as trivially copyable)
PR c++/63959
* tree.c (trivially_copyable_p): Check for CP_TYPE_VOLATILE_P.
From-SVN: r217893
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/tree.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/ext/is_trivially_constructible1.C | 3 |
3 files changed, 9 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 3111050..2c98a71 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2014-11-20 Ville Voutilainen <ville.voutilainen@gmail.com> + + PR c++/63959 + * tree.c (trivially_copyable_p): Check for CP_TYPE_VOLATILE_P. + 2014-11-20 Trevor Saunders <tsaunders@mozilla.com> * cp-objcp-common.c: Use hash_table instead of htab. diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c index 4502273..f8506f5 100644 --- a/gcc/cp/tree.c +++ b/gcc/cp/tree.c @@ -3206,7 +3206,7 @@ trivially_copyable_p (const_tree t) && !TYPE_HAS_COMPLEX_MOVE_ASSIGN (t) && TYPE_HAS_TRIVIAL_DESTRUCTOR (t)); else - return scalarish_type_p (t); + return !CP_TYPE_VOLATILE_P (t) && scalarish_type_p (t); } /* Returns 1 iff type T is a trivial type, as defined in [basic.types] and diff --git a/gcc/testsuite/g++.dg/ext/is_trivially_constructible1.C b/gcc/testsuite/g++.dg/ext/is_trivially_constructible1.C index f558538..c866373 100644 --- a/gcc/testsuite/g++.dg/ext/is_trivially_constructible1.C +++ b/gcc/testsuite/g++.dg/ext/is_trivially_constructible1.C @@ -33,3 +33,6 @@ SA(__is_trivially_constructible(int,double)); SA(!__is_trivially_constructible(int,B)); SA(!__is_trivially_constructible(D)); + +SA(__is_trivially_copyable(int)); +SA(!__is_trivially_copyable(volatile int)); |