re PR c++/50864 (ICE with decltype and "declval" from another namespace)
/cp 2011-10-28 Paolo Carlini <paolo.carlini@oracle.com> PR c++/50864 * pt.c (tsubst_copy_and_build): Fix qualified_name_lookup_error call in case COMPONENT_REF. /testsuite 2011-10-28 Paolo Carlini <paolo.carlini@oracle.com> PR c++/50864 * g++.dg/template/crash109.C: New. From-SVN: r180623
This commit is contained in:
parent
c4ab64c640
commit
18232de4db
4 changed files with 26 additions and 7 deletions
|
@ -1,3 +1,9 @@
|
|||
2011-10-28 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
PR c++/50864
|
||||
* pt.c (tsubst_copy_and_build): Fix qualified_name_lookup_error
|
||||
call in case COMPONENT_REF.
|
||||
|
||||
2011-10-27 Jason Merrill <jason@redhat.com>
|
||||
|
||||
* semantics.c (cxx_eval_outermost_constant_expr): Check
|
||||
|
|
12
gcc/cp/pt.c
12
gcc/cp/pt.c
|
@ -13741,14 +13741,12 @@ tsubst_copy_and_build (tree t,
|
|||
else if (TREE_CODE (member) == SCOPE_REF
|
||||
&& TREE_CODE (TREE_OPERAND (member, 1)) == TEMPLATE_ID_EXPR)
|
||||
{
|
||||
tree tmpl;
|
||||
tree args;
|
||||
|
||||
/* Lookup the template functions now that we know what the
|
||||
scope is. */
|
||||
tmpl = TREE_OPERAND (TREE_OPERAND (member, 1), 0);
|
||||
args = TREE_OPERAND (TREE_OPERAND (member, 1), 1);
|
||||
member = lookup_qualified_name (TREE_OPERAND (member, 0), tmpl,
|
||||
tree scope = TREE_OPERAND (member, 0);
|
||||
tree tmpl = TREE_OPERAND (TREE_OPERAND (member, 1), 0);
|
||||
tree args = TREE_OPERAND (TREE_OPERAND (member, 1), 1);
|
||||
member = lookup_qualified_name (scope, tmpl,
|
||||
/*is_type_p=*/false,
|
||||
/*complain=*/false);
|
||||
if (BASELINK_P (member))
|
||||
|
@ -13762,7 +13760,7 @@ tsubst_copy_and_build (tree t,
|
|||
}
|
||||
else
|
||||
{
|
||||
qualified_name_lookup_error (object_type, tmpl, member,
|
||||
qualified_name_lookup_error (scope, tmpl, member,
|
||||
input_location);
|
||||
return error_mark_node;
|
||||
}
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2011-10-28 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
PR c++/50864
|
||||
* g++.dg/template/crash109.C: New.
|
||||
|
||||
2011-10-28 Steven G. Kargl <kargl@gcc.gnu.org>
|
||||
|
||||
* gfortran.dg/nearest_5.f90: New test.
|
||||
|
|
10
gcc/testsuite/g++.dg/template/crash109.C
Normal file
10
gcc/testsuite/g++.dg/template/crash109.C
Normal file
|
@ -0,0 +1,10 @@
|
|||
// PR c++/50864
|
||||
|
||||
namespace impl
|
||||
{
|
||||
template <class T> T create();
|
||||
}
|
||||
|
||||
template <class T, class U, __SIZE_TYPE__
|
||||
= sizeof(impl::create<T>() -> impl::create<U>())> // { dg-error "not a member" }
|
||||
struct foo;
|
Loading…
Add table
Reference in a new issue