Commit 63a3cd3e by Mark Mitchell Committed by Mark Mitchell

re PR c++/9729 (ICE in mangle_conv_op_name_for_type, at cp/mangle.c:2612)

	PR c++/9729
	* g++.dg/abi/conv1.C: New test.

	PR c++/9729
	* mangle.c (mangle_conv_op_name_for_type): Issue an error message
	when the G++ 3.2 ABI prevents correct compilation.

From-SVN: r63176
parent a62bfff2
2003-02-20 Mark Mitchell <mark@codesourcery.com>
PR c++/9729
* mangle.c (mangle_conv_op_name_for_type): Issue an error message
when the G++ 3.2 ABI prevents correct compilation.
2003-02-20 Nathan Sidwell <nathan@codesourcery.com>
Change base class access representation. Share virtual base
......
/* Name mangling for the 3.0 C++ ABI.
Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
Written by Alex Samuel <sameul@codesourcery.com>
This file is part of GCC.
......@@ -2644,9 +2644,16 @@ mangle_conv_op_name_for_type (type)
free (op_name);
/* It had better be a unique mangling for the type. */
my_friendly_assert (!IDENTIFIER_TYPENAME_P (identifier)
|| same_type_p (type, TREE_TYPE (identifier)),
20011230);
if (IDENTIFIER_TYPENAME_P (identifier)
&& !same_type_p (type, TREE_TYPE (identifier)))
{
/* In G++ 3.2, the name mangling scheme was ambiguous. In later
versions of the ABI, this problem has been fixed. */
if (abi_version_at_least (2))
abort ();
error ("due to a defect in the G++ 3.2 ABI, G++ has assigned the "
"same mangled name to two different types");
}
/* Set bits on the identifier so we know later it's a conversion. */
IDENTIFIER_OPNAME_P (identifier) = 1;
......
2003-02-20 Mark Mitchell <mark@codesourcery.com>
PR c++/9729
* g++.dg/abi/conv1.C: New test.
Thu Feb 20 14:38:13 CET 2003 Jan Hubicka <jh@suse.cz>
* gcc.c-torture/execute/20020720-1.x: XFAIL for x86-64.
......
// { dg-options "-fabi-version=1" }
template<class T1>
struct A {
typedef typename T1::X X;
operator X() const;
};
template <class T0, class T1 >
struct B {
typedef typename T1::X X;
operator X() const; // { dg-error "" }
};
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