Commit 8853373c by Mark Mitchell Committed by Mark Mitchell

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
parent b60ecc04
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
......
......@@ -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,
......
// 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
}
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