From aa09da44c7f7974aa79e2e409b86be215fef95b7 Mon Sep 17 00:00:00 2001 From: Mark Mitchell Date: Tue, 24 Mar 1998 16:13:12 +0000 Subject: tree.c (mapcar): When dealing with a DECL, use it's constant value, if any. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit � * tree.c (mapcar): When dealing with a DECL, use it's constant value, if any. * pt.c (lookup_template_class): Don't mangle the names of template classes whose arguments are unknown. * pt.c (tsubst_expr): Handle GOTO_STMT correctly. From-SVN: r18804 --- gcc/cp/pt.c | 11 ++++++++--- gcc/testsuite/g++.old-deja/g++.pt/goto.C | 12 ++++++++++++ 2 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/goto.C (limited to 'gcc') diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 2e44007..7685f48 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -2827,7 +2827,7 @@ lookup_template_class (d1, arglist, in_decl, context) /* We need to set this again after CLASSTYPE_TEMPLATE_INFO is set up. */ DECL_ASSEMBLER_NAME (TYPE_MAIN_DECL (t)) = id; - /* if (! uses_template_parms (arglist)) */ + if (! uses_template_parms (arglist)) DECL_ASSEMBLER_NAME (TYPE_MAIN_DECL (t)) = get_identifier (build_overload_name (t, 1, 1)); @@ -5077,8 +5077,13 @@ tsubst_expr (t, args, in_decl) case GOTO_STMT: lineno = TREE_COMPLEXITY (t); - finish_goto_stmt (tsubst_expr (GOTO_DESTINATION (t), - args, in_decl)); + t = GOTO_DESTINATION (t); + if (TREE_CODE (t) != IDENTIFIER_NODE) + /* Computed goto's must be tsubst'd into. On the other hand, + non-computed gotos must not be; the identifier in question + will have no binding. */ + t = tsubst_expr (t, args, in_decl); + finish_goto_stmt (t); break; case ASM_STMT: diff --git a/gcc/testsuite/g++.old-deja/g++.pt/goto.C b/gcc/testsuite/g++.old-deja/g++.pt/goto.C new file mode 100644 index 0000000..c6c1a56 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/goto.C @@ -0,0 +1,12 @@ +// Build don't link: + +template +void compute(T) { + goto Exit; +Exit: ; + } + +int main() +{ + compute(0); +} -- cgit v1.1