This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: Really obscure C++ mangling error with -fnew-abi
- To: chip at valinux dot com
- Subject: Re: Really obscure C++ mangling error with -fnew-abi
- From: Mark Mitchell <mark at codesourcery dot com>
- Date: Sun, 02 Jul 2000 11:59:01 -0700
- Cc: gcc-bugs at gcc dot gnu dot org
- Organization: CodeSourcery, LLC
- References: <20000630172927.I503@perlsupport.com>
Chip --
I fixed this bug with the following patch. After the patch, this:
00000000 W _ZSt26__uninitialized_fill_n_auxIPSsjSsET_S1_T0_RKT1_5_BoolILb0EE
is the only output from `nm' containing uninitialized_fill_n_aux,
which is a good sign. This demangles to:
std::string*
std::__uninitialized_fill_n_aux<std::string*, unsigned, std::string>
(std::string*, unsigned, const std::string&, _Bool<false>)
which looks right to me.
--
Mark Mitchell mark@codesourcery.com
CodeSourcery, LLC http://www.codesourcery.com
2000-07-02 Mark Mitchell <mark@codesourcery.com>
* mangle.c (canonicalize_for_substitution): Return the canonical
variant of a type.
Index: mangle.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/cp/mangle.c,v
retrieving revision 1.11
diff -c -p -r1.11 mangle.c
*** mangle.c 2000/06/30 15:25:33 1.11
--- mangle.c 2000/07/02 18:40:16
*************** canonicalize_for_substitution (node)
*** 274,279 ****
--- 274,281 ----
/* For a TYPE_DECL, use the type instead. */
if (TREE_CODE (node) == TYPE_DECL)
node = TREE_TYPE (node);
+ if (TYPE_P (node))
+ node = canonical_type_variant (node);
return node;
}