mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-01-27 15:44:45 +08:00
tree.c (mapcar): When dealing with a DECL, use it's constant value, if any.
� * 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
This commit is contained in:
parent
ae16ec5f2c
commit
aa09da44c7
11
gcc/cp/pt.c
11
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:
|
||||
|
12
gcc/testsuite/g++.old-deja/g++.pt/goto.C
Normal file
12
gcc/testsuite/g++.old-deja/g++.pt/goto.C
Normal file
@ -0,0 +1,12 @@
|
||||
// Build don't link:
|
||||
|
||||
template<class T>
|
||||
void compute(T) {
|
||||
goto Exit;
|
||||
Exit: ;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
compute(0);
|
||||
}
|
Loading…
Reference in New Issue
Block a user