aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/method.c2
-rw-r--r--gcc/testsuite/g++.dg/ext/is_trivially_constructible1.C5
3 files changed, 12 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index c27e2de..efa3cbd 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2018-07-04 Ville Voutilainen <ville.voutilainen@gmail.com>
+
+ PR c++/86398
+ * method.c (is_trivially_xible): Return false
+ if is_xible_helper returns a NULL_TREE.
+
2018-07-03 Paolo Carlini <paolo.carlini@oracle.com>
* decl.c (min_location): New.
diff --git a/gcc/cp/method.c b/gcc/cp/method.c
index 858655b..0b208a8 100644
--- a/gcc/cp/method.c
+++ b/gcc/cp/method.c
@@ -1216,7 +1216,7 @@ is_trivially_xible (enum tree_code code, tree to, tree from)
tree expr;
expr = is_xible_helper (code, to, from, /*trivial*/true);
- if (expr == error_mark_node)
+ if (expr == NULL_TREE || expr == error_mark_node)
return false;
tree nt = cp_walk_tree_without_duplicates (&expr, check_nontriv, NULL);
return !nt;
diff --git a/gcc/testsuite/g++.dg/ext/is_trivially_constructible1.C b/gcc/testsuite/g++.dg/ext/is_trivially_constructible1.C
index 175eae9..191b696 100644
--- a/gcc/testsuite/g++.dg/ext/is_trivially_constructible1.C
+++ b/gcc/testsuite/g++.dg/ext/is_trivially_constructible1.C
@@ -39,6 +39,11 @@ SA(!__is_trivially_constructible(void,int));
SA(!__is_trivially_constructible(const void,int));
SA(!__is_trivially_constructible(volatile void,int));
SA(!__is_trivially_constructible(const volatile void,int));
+SA(!__is_trivially_constructible(int, void*));
+SA(!__is_trivially_constructible(int, int*));
+SA(!__is_trivially_constructible(int, const int*));
+SA(!__is_trivially_constructible(int*, void*));
+SA(!__is_trivially_constructible(int*, const int*));
SA(!__is_trivially_constructible(D));