aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/call.c
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2011-03-16 16:03:46 -0400
committerJason Merrill <jason@gcc.gnu.org>2011-03-16 16:03:46 -0400
commit85a273bae4165216919c029f0dfa28ca5800aa23 (patch)
tree261f49586db7d14d30580f1d98f41222c349990b /gcc/cp/call.c
parent51fd6b9057dd38a0566c86df2dcda8ace597eed9 (diff)
downloadgcc-85a273bae4165216919c029f0dfa28ca5800aa23.zip
gcc-85a273bae4165216919c029f0dfa28ca5800aa23.tar.gz
gcc-85a273bae4165216919c029f0dfa28ca5800aa23.tar.bz2
re PR c++/48115 (internal compiler error: in type_has_nontrivial_copy_init, at cp/tree.c:2482)
PR c++/48115 * call.c (convert_arg_to_ellipsis): Handle incomplete type. From-SVN: r171066
Diffstat (limited to 'gcc/cp/call.c')
-rw-r--r--gcc/cp/call.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/cp/call.c b/gcc/cp/call.c
index 388f46c..f75c248 100644
--- a/gcc/cp/call.c
+++ b/gcc/cp/call.c
@@ -5671,6 +5671,10 @@ convert_arg_to_ellipsis (tree arg)
arg_type = TREE_TYPE (arg);
if (arg != error_mark_node
+ /* In a template (or ill-formed code), we can have an incomplete type
+ even after require_complete_type, in which case we don't know
+ whether it has trivial copy or not. */
+ && COMPLETE_TYPE_P (arg_type)
&& (type_has_nontrivial_copy_init (arg_type)
|| TYPE_HAS_NONTRIVIAL_DESTRUCTOR (arg_type)))
{