aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorVille Voutilainen <ville.voutilainen@gmail.com>2014-11-20 23:51:04 +0200
committerJason Merrill <jason@gcc.gnu.org>2014-11-20 16:51:04 -0500
commit75bda2e8134c013bc3d02b78e5b8b34022961985 (patch)
tree4e7d542af9cda00c6e273ffaa2b981bb7e54cf57 /gcc
parente7ea147586ce851b8cc09e36d90a37550b8129bc (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/cp/tree.c2
-rw-r--r--gcc/testsuite/g++.dg/ext/is_trivially_constructible1.C3
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));