Commit aa09da44 by Mark Mitchell

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
parent ae16ec5f
...@@ -2827,7 +2827,7 @@ lookup_template_class (d1, arglist, in_decl, context) ...@@ -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. */ /* We need to set this again after CLASSTYPE_TEMPLATE_INFO is set up. */
DECL_ASSEMBLER_NAME (TYPE_MAIN_DECL (t)) = id; 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)) DECL_ASSEMBLER_NAME (TYPE_MAIN_DECL (t))
= get_identifier (build_overload_name (t, 1, 1)); = get_identifier (build_overload_name (t, 1, 1));
...@@ -5077,8 +5077,13 @@ tsubst_expr (t, args, in_decl) ...@@ -5077,8 +5077,13 @@ tsubst_expr (t, args, in_decl)
case GOTO_STMT: case GOTO_STMT:
lineno = TREE_COMPLEXITY (t); lineno = TREE_COMPLEXITY (t);
finish_goto_stmt (tsubst_expr (GOTO_DESTINATION (t), t = GOTO_DESTINATION (t);
args, in_decl)); 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; break;
case ASM_STMT: case ASM_STMT:
......
// Build don't link:
template<class T>
void compute(T) {
goto Exit;
Exit: ;
}
int main()
{
compute(0);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment