diff options
author | Nathan Sidwell <nathan@codesourcery.com> | 2005-08-23 12:35:42 +0000 |
---|---|---|
committer | Nathan Sidwell <nathan@gcc.gnu.org> | 2005-08-23 12:35:42 +0000 |
commit | aec5ba601b0ebaaca5362d32cebc9612aa6d2005 (patch) | |
tree | 1e54679931aeb7097bbb333f4842beeb54fa640e /gcc | |
parent | 39d67d5bd4adfe3af3e581dc4309f1a5319f8f21 (diff) | |
download | gcc-aec5ba601b0ebaaca5362d32cebc9612aa6d2005.zip gcc-aec5ba601b0ebaaca5362d32cebc9612aa6d2005.tar.gz gcc-aec5ba601b0ebaaca5362d32cebc9612aa6d2005.tar.bz2 |
re PR c++/23044 (ICE on valid code)
cp:
PR c++/23044
* pt.c (tsubst_qualified_id): A SCOPE_REF can still remain.
testsuite:
PR c++/23044
* g++.dg/template/instantiate8.C: New.
From-SVN: r103395
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/pt.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/template/instantiate8.C | 17 |
4 files changed, 29 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 25c0610..305cf51 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2005-08-23 Nathan Sidwell <nathan@codesourcery.com> + + PR c++/23044 + * pt.c (tsubst_qualified_id): A SCOPE_REF can still remain. + 2005-08-22 James E Wilson <wilson@specifix.com> PR tree-optimization/23426 diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index f217198..71ac318 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -7680,7 +7680,8 @@ tsubst_qualified_id (tree qualified_id, tree args, expr = finish_qualified_id_expr (scope, expr, done, address_p); } - expr = convert_from_reference (expr); + if (TREE_CODE (expr) != SCOPE_REF) + expr = convert_from_reference (expr); return expr; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index fe03c79..b37317b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2005-08-23 Nathan Sidwell <nathan@codesourcery.com> + + PR c++/23044 + * g++.dg/template/instantiate8.C: New. + 2005-08-23 J"orn Rennecke <joern.rennecke@st.com> PR middle-end/23467 diff --git a/gcc/testsuite/g++.dg/template/instantiate8.C b/gcc/testsuite/g++.dg/template/instantiate8.C new file mode 100644 index 0000000..9004a86 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/instantiate8.C @@ -0,0 +1,17 @@ +// Copyright (C) 2005 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 18 Aug 2005 <nathan@codesourcery.com> + +// PR 22044: ICE +// Origin: Andrew Pinski <pinskia@gcc.gnu.org> + +struct no_context { + template< class Event > void no_function( const Event & ); +}; +template< class Event, class TransitionContext = no_context, +void ( TransitionContext::*pTransitionAction )( const Event & ) = &no_context::no_function< Event > > +struct transition +{ + struct EvFlipBit {}; + typedef transition<EvFlipBit> type; +}; + |