pt.c (push_template_decl_real): Don't remangle the name of a class template.

* pt.c (push_template_decl_real): Don't remangle the name of a
	class template.

From-SVN: r39753
This commit is contained in:
Mark Mitchell 2001-02-16 08:03:23 +00:00 committed by Mark Mitchell
parent b60ecc04e8
commit 8853373c4e
3 changed files with 32 additions and 1 deletions

View File

@ -1,3 +1,7 @@
2001-02-16 Mark Mitchell <mark@codesourcery.com>
* semantics.c (finish_asm_stmt): Robustify.
2001-02-15 Mark Mitchell <mark@codesourcery.com>
* pt.c (push_template_decl_real): Don't remangle the name of a

View File

@ -912,7 +912,22 @@ finish_asm_stmt (cv_qualifier, string, output_operands,
if (!processing_template_decl)
for (t = input_operands; t; t = TREE_CHAIN (t))
TREE_VALUE (t) = decay_conversion (TREE_VALUE (t));
{
tree converted_operand
= decay_conversion (TREE_VALUE (t));
/* If the type of the operand hasn't been determined (e.g.,
because it involves an overloaded function), then issue an
error message. There's no context available to resolve the
overloading. */
if (TREE_TYPE (converted_operand) == unknown_type_node)
{
cp_error ("type of asm operand `%E' could not be determined",
TREE_VALUE (t));
converted_operand = error_mark_node;
}
TREE_VALUE (t) = converted_operand;
}
r = build_stmt (ASM_STMT, cv_qualifier, string,
output_operands, input_operands,

View File

@ -0,0 +1,12 @@
// Build don't link:
// Origin: Mark Mitchell <mark@codesourcery.com>
struct C
{
void f ();
};
void C::f ()
{
asm ("" : : "m" (f)); // ERROR - type could not be determined
}