diff options
author | Mark Mitchell <mark@codesourcery.com> | 2003-02-20 19:31:38 +0000 |
---|---|---|
committer | Mark Mitchell <mmitchel@gcc.gnu.org> | 2003-02-20 19:31:38 +0000 |
commit | 63a3cd3ec3b7c5862b0be1512fca62f6158c4df2 (patch) | |
tree | ae32997dc237be62535411dc0f87af9ba650134f /gcc/cp/mangle.c | |
parent | a62bfff255032cd0f08b91f2a40f22dccb39e88c (diff) | |
download | gcc-63a3cd3ec3b7c5862b0be1512fca62f6158c4df2.zip gcc-63a3cd3ec3b7c5862b0be1512fca62f6158c4df2.tar.gz gcc-63a3cd3ec3b7c5862b0be1512fca62f6158c4df2.tar.bz2 |
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
Diffstat (limited to 'gcc/cp/mangle.c')
-rw-r--r-- | gcc/cp/mangle.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/gcc/cp/mangle.c b/gcc/cp/mangle.c index fae2237..06d8f96 100644 --- a/gcc/cp/mangle.c +++ b/gcc/cp/mangle.c @@ -1,5 +1,5 @@ /* 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; |