diff options
author | Ville Voutilainen <ville.voutilainen@gmail.com> | 2018-07-04 22:21:38 +0300 |
---|---|---|
committer | Ville Voutilainen <ville@gcc.gnu.org> | 2018-07-04 22:21:38 +0300 |
commit | a617812f148c71209a94f33879b13fa603c6103c (patch) | |
tree | 77f5bb740ab05567042ab41b0a1176404331dfc5 /gcc | |
parent | 86b664c0a916decb2e3d4a5188fa5037c67df11f (diff) | |
download | gcc-a617812f148c71209a94f33879b13fa603c6103c.zip gcc-a617812f148c71209a94f33879b13fa603c6103c.tar.gz gcc-a617812f148c71209a94f33879b13fa603c6103c.tar.bz2 |
re PR c++/86398 (is_trivially_constructible always returns true even when is_constructible returns false)
PR c++/86398
gcc/cp/
PR c++/86398
* method.c (is_trivially_xible): Return false
if is_xible_helper returns a NULL_TREE.
testsuite/
PR c++/86398
* g++.dg/ext/is_trivially_constructible1.C: Add new tests.
From-SVN: r262420
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/method.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/ext/is_trivially_constructible1.C | 5 |
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)); |