diff options
author | Mark Mitchell <mark@codesourcery.com> | 2002-10-04 04:59:39 +0000 |
---|---|---|
committer | Mark Mitchell <mmitchel@gcc.gnu.org> | 2002-10-04 04:59:39 +0000 |
commit | 6397d80b752df0770438e1edbc1efd8773fbb7eb (patch) | |
tree | 2a6564ee9bc95c1a339ca2aa488debfeb614d0be /gcc/doc | |
parent | 69c75916740ba75141accc68df66e17a486c11d1 (diff) | |
download | gcc-6397d80b752df0770438e1edbc1efd8773fbb7eb.zip gcc-6397d80b752df0770438e1edbc1efd8773fbb7eb.tar.gz gcc-6397d80b752df0770438e1edbc1efd8773fbb7eb.tar.bz2 |
re PR c++/8006 (ice in mangle_conv_op_name_for_type boost regression)
* doc/invoke.texi (-Wabi): Document mangling bug.
PR c++/8006
* mangle.c (CLASSTYPE_TEMPLATE_ID_P): Handle instances of template
template parameters.
(globals): Add entity and need_abi_warning.
(decl_is_template_id): Use TYPE_TEMPLATE_INFO, not
CLASSTYPE_TEMPLATE_INFO.
(is_std_substitution): Use CLASSTYPE_TI_TEMPLATE, not
TYPE_TI_TEMPLATE.
(write_prefix): Handle typename types correctly.
(write_template_prefix): Handle template template parameters
correctly.
(start_mangling): Add entity parameter.
(finish_mangling): Warn about names whose mangling will change.
(mangle_decl_string): Adjust.
(mangle_type_string): Likewise.
(mangle_special_for_type): Likewise.
(mangle_ctor_vtbl_for_type): Likewise.
(mangle_thunk): Likewise.
(mangle_guard_variable): Likewise.
(mangle_ref_init_variable): Likewise.
PR c++/8006
* g++.dg/abi/mangle9.C: New test.
* g++.dg/abi/mangle10.C: New test.
* g++.dg/abi/mangle11.C: New test.
* g++.dg/abi/mangle12.C: New test.
From-SVN: r57799
Diffstat (limited to 'gcc/doc')
-rw-r--r-- | gcc/doc/invoke.texi | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 607a08a..65aa2a0 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -1565,6 +1565,21 @@ G++ will place the @code{A} base class of @code{C} at a non-zero offset; it should be placed at offset zero. G++ mistakenly believes that the @code{A} data member of @code{B} is already at offset zero. +@item +Names of template functions whose types involve @code{typename} or +template template parameters can be mangled incorrectly. + +@smallexample +template <typename Q> +void f(typename Q::X) @{@} + +template <template <typename> class Q> +void f(typename Q<int>::X) @{@} +@end smallexample + +@noindent +Instantions of these templates may be mangled incorrectly. + @end itemize @item -Wctor-dtor-privacy @r{(C++ only)} |