[c++ PATCH] PR c++/80682
Ville Voutilainen
ville.voutilainen@gmail.com
Tue May 9 12:16:00 GMT 2017
Tested on Linux-x64, not tested with the full suite yet.
2017-05-09 Ville Voutilainen <ville.voutilainen@gmail.com>
gcc/
PR c++/80682
* cp/method.c (is_trivially_xible): Reject void types.
testsuite/
PR c++/80682
* g++.dg/ext/is_trivially_constructible1.C: Add tests for void target.
-------------- next part --------------
diff --git a/gcc/cp/method.c b/gcc/cp/method.c
index b4c1f60..911f6ee 100644
--- a/gcc/cp/method.c
+++ b/gcc/cp/method.c
@@ -1207,6 +1207,8 @@ constructible_expr (tree to, tree from)
bool
is_trivially_xible (enum tree_code code, tree to, tree from)
{
+ if (to == void_type_node)
+ return false;
tree expr;
if (code == MODIFY_EXPR)
expr = assignable_expr (to, from);
diff --git a/gcc/testsuite/g++.dg/ext/is_trivially_constructible1.C b/gcc/testsuite/g++.dg/ext/is_trivially_constructible1.C
index a5bac7b..bfe17dc 100644
--- a/gcc/testsuite/g++.dg/ext/is_trivially_constructible1.C
+++ b/gcc/testsuite/g++.dg/ext/is_trivially_constructible1.C
@@ -27,10 +27,12 @@ SA(!__is_trivially_constructible(C,C&));
SA(__is_trivially_assignable(C,C&));
SA(!__is_trivially_assignable(C,C));
SA(!__is_trivially_assignable(C,C&&));
+SA(!__is_trivially_assignable(void,int));
SA(__is_trivially_constructible(int,int));
SA(__is_trivially_constructible(int,double));
SA(!__is_trivially_constructible(int,B));
+SA(!__is_trivially_constructible(void,int));
SA(!__is_trivially_constructible(D));
More information about the Gcc-patches
mailing list