aboutsummaryrefslogtreecommitdiff
path: root/gcc/doc
diff options
context:
space:
mode:
authorMark Mitchell <mark@codesourcery.com>2002-10-04 04:59:39 +0000
committerMark Mitchell <mmitchel@gcc.gnu.org>2002-10-04 04:59:39 +0000
commit6397d80b752df0770438e1edbc1efd8773fbb7eb (patch)
tree2a6564ee9bc95c1a339ca2aa488debfeb614d0be /gcc/doc
parent69c75916740ba75141accc68df66e17a486c11d1 (diff)
downloadgcc-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.texi15
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)}