diff options
author | Mark Mitchell <mark@codesourcery.com> | 2003-06-17 16:58:19 +0000 |
---|---|---|
committer | Mark Mitchell <mmitchel@gcc.gnu.org> | 2003-06-17 16:58:19 +0000 |
commit | ca90f3e1c758d9efb6c8ba658a66675c3c36c6d4 (patch) | |
tree | 9158221fab15fe3ae9e6c048a33b2f599faa86c7 /gcc/cp/cp-tree.h | |
parent | 8207b189e50ec5350d3ab72b397ee139282b4e9d (diff) | |
download | gcc-ca90f3e1c758d9efb6c8ba658a66675c3c36c6d4.zip gcc-ca90f3e1c758d9efb6c8ba658a66675c3c36c6d4.tar.gz gcc-ca90f3e1c758d9efb6c8ba658a66675c3c36c6d4.tar.bz2 |
re PR c++/11105 ([3.3/3.4 regression of sorts] ICE in mangle_conv_op_name_for_type)
PR c++/11105
* cp-tree.h (DECL_CONV_FN_TYPE): New method.
* mangle.c (struct globals): Remove internal_mangling_p.
(write_unqualified_name): Use DECL_CONV_FN_TYPE.
(write_template_parm): Don't write out the level number.
(conv_type_names): New variable.
(hash_type): New function.
(compare_type): Likewise.
(mangle_conv_op_name_for_type): Don't try to mangle conversion
operator names.
* search.c (lookup_conversion_operator): New function.
(lookup_fnfields_1): Use it.
PR c++/11105
* g++.dg/abi/conv1.C: Remove it.
* g++.dg/template/conv7.C: New test.
* g++.dg/template/conv8.C: Likewise.
* g++.old-deja/g++.ext/pretty2.C: Do not test __FUNCTION__ for a
conversion operator.
From-SVN: r68095
Diffstat (limited to 'gcc/cp/cp-tree.h')
-rw-r--r-- | gcc/cp/cp-tree.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h index 6ed177e..aeae231 100644 --- a/gcc/cp/cp-tree.h +++ b/gcc/cp/cp-tree.h @@ -1856,6 +1856,11 @@ struct lang_decl GTY(()) #define DECL_CONV_FN_P(NODE) \ (IDENTIFIER_TYPENAME_P (DECL_NAME (NODE))) +/* If FN is a conversion operator, the type to which it converts. + Otherwise, NULL_TREE. */ +#define DECL_CONV_FN_TYPE(FN) \ + (DECL_CONV_FN_P (FN) ? TREE_TYPE (DECL_NAME (FN)) : NULL_TREE) + /* Nonzero if NODE, which is a TEMPLATE_DECL, is a template conversion operator to a type dependent on the innermost template args. */ |