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:
Mark Mitchell 1998-03-24 16:13:12 +00:00
parent ae16ec5f2c
commit aa09da44c7
2 changed files with 20 additions and 3 deletions

View File

@ -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:

View File

@ -0,0 +1,12 @@
// Build don't link:
template<class T>
void compute(T) {
goto Exit;
Exit: ;
}
int main()
{
compute(0);
}