From: Jason Merrill Date: Tue, 8 Mar 2011 22:39:57 +0000 (-0500) Subject: re PR c++/47705 (internal compiler error: in convert_nontype_argument, at cp/pt.c... X-Git-Tag: releases/gcc-4.5.3~167 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f56358e34e0515318046127e3742c4785d6b5679;p=thirdparty%2Fgcc.git re PR c++/47705 (internal compiler error: in convert_nontype_argument, at cp/pt.c:5006) PR c++/47705 * pt.c (convert_nontype_argument): Only call decay_conversion on arrays. From-SVN: r170795 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 1a8111a1ca9c..1dd10b50992d 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2011-03-08 Dodji Seketeli + + PR c++/47705 + * pt.c (convert_nontype_argument): Only call decay_conversion on + arrays. + 2011-03-08 Dodji Seketeli * name-lookup.c (binding_to_template_parms_of_scope_p): Only diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index c9797766b5b9..94cff1c0e68b 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -4951,7 +4951,8 @@ convert_nontype_argument (tree type, tree expr) /* Add the ADDR_EXPR now for the benefit of value_dependent_expression_p. */ - if (TYPE_PTROBV_P (type)) + if (TYPE_PTROBV_P (type) + && TREE_CODE (TREE_TYPE (expr)) == ARRAY_TYPE) expr = decay_conversion (expr); /* If we are in a template, EXPR may be non-dependent, but still diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 87657645de8f..10032f4c85c2 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2011-03-08 Jason Merrill + + * g++.dg/template/nontype21.C: New. + 2011-03-08 Dodji Seketeli * g++.dg/lookup/template3.C: New test. diff --git a/gcc/testsuite/g++.dg/template/nontype21.C b/gcc/testsuite/g++.dg/template/nontype21.C new file mode 100644 index 000000000000..69cab54f412b --- /dev/null +++ b/gcc/testsuite/g++.dg/template/nontype21.C @@ -0,0 +1,7 @@ +// PR c++/47705 + +template class Something { }; + +extern char const xyz; + +class SomethingElse:public Something { }; // { dg-error "xyz. is a variable" }