Commit 858a0ff1 by Mark Mitchell Committed by Mark Mitchell

method.c (PARM_CAN_BE_ARRAY_TYPE): Remove.

	* method.c (PARM_CAN_BE_ARRAY_TYPE): Remove.
	(mangling_flags): New type.
	(build_overload_int): Change prototype.
	(build_overload_value): Likewise.
	(numeric_output_need_bar): Improve comment.
	(mangle_expression): New function, broken out from ...
	(build_overload_int): Here.
	(build_overload_value): Adjust for use of mangling flags.  Don't
	warn about real-valued template parameters here.  Do handle
	complex expressions involving real-valued template parameters.
	(build_template_parm_names): Encase non-type template parameters
	in underscores, if necessary.
	(process_overload_item): Remove conditional on
	PARM_CAN_BE_ARRAY_TYPE.

From-SVN: r30090
parent 9ce71c6f
1999-10-19 Mark Mitchell <mark@codesourcery.com>
* method.c (PARM_CAN_BE_ARRAY_TYPE): Remove.
(mangling_flags): New type.
(build_overload_int): Change prototype.
(build_overload_value): Likewise.
(numeric_output_need_bar): Improve comment.
(mangle_expression): New function, broken out from ...
(build_overload_int): Here.
(build_overload_value): Adjust for use of mangling flags. Don't
warn about real-valued template parameters here. Do handle
complex expressions involving real-valued template parameters.
(build_template_parm_names): Encase non-type template parameters
in underscores, if necessary.
(process_overload_item): Remove conditional on
PARM_CAN_BE_ARRAY_TYPE.
1999-10-17 Mark Mitchell <mark@codesourcery.com>
* dump.c (dequeue_and_dump): Handle CLEANUP_POINT_EXPR.
......
*** Changes in GCC 3.0:
* In some obscure cases, functions with the same type could have the
same mangled name. This bug caused compiler crashes, link-time clashes,
and debugger crahses. Fixing this bug required breaking ABI
compatibility for the functions involved. The functions in questions
are those whose types involve non-type template arguments whose
mangled representations require more than one digit.
* Support for assignment to `this' has been removed. This idiom
was used in the very early days of C++, before users were allowed
to overload `operator new'; it is no longer allowed by the C++
......
// Build don't link:
// Special g++ Options:
// Origin: Mark Mitchell <mark@codesourcery.com>
template <double d>
struct S;
template <double d, double e>
void f (S<d>*, S<e>*, S<d + e>*);
void g ()
{
S<2.0>* s1;
S<3.7>* s2;
S<5.7>* s3;
f (s1, s2, s3);
}
// Build don't link:
// Origin: Mark Mitchell <mark@codesourcery.com>
typedef enum {} i;
template <int II>
class Bar {};
void f (Bar<21>, int) {}
void f (Bar<2>, i) {}
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