aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Sidwell <nathan@codesourcery.com>2005-08-23 12:35:42 +0000
committerNathan Sidwell <nathan@gcc.gnu.org>2005-08-23 12:35:42 +0000
commitaec5ba601b0ebaaca5362d32cebc9612aa6d2005 (patch)
tree1e54679931aeb7097bbb333f4842beeb54fa640e
parent39d67d5bd4adfe3af3e581dc4309f1a5319f8f21 (diff)
downloadgcc-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
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/pt.c3
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/template/instantiate8.C17
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;
+};
+