summaryrefslogtreecommitdiff
path: root/libstdc++-v3/testsuite/abi/demangle
diff options
context:
space:
mode:
Diffstat (limited to 'libstdc++-v3/testsuite/abi/demangle')
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/abi_examples/01.cc38
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/abi_examples/02.cc38
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/abi_examples/03.cc40
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/abi_examples/04.cc36
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/abi_examples/05.cc35
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/abi_examples/06.cc35
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/abi_examples/07.cc35
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/abi_examples/08.cc34
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/abi_examples/09.cc34
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/abi_examples/10.cc39
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/abi_examples/11.cc37
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/abi_examples/12.cc38
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/abi_examples/13.cc38
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/abi_examples/14.cc39
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/abi_examples/15.cc39
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/abi_examples/16.cc45
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/abi_examples/17.cc39
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/abi_examples/18.cc41
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/abi_examples/19.cc33
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/abi_examples/20.cc34
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/abi_examples/21.cc34
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/abi_examples/22.cc34
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/abi_examples/23.cc33
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/abi_examples/24.cc33
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/abi_examples/25.cc38
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/abi_examples/26.cc33
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/abi_text/01.cc41
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/abi_text/02.cc41
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/abi_text/03.cc38
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/abi_text/04.cc34
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/abi_text/05.cc38
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/abi_text/06.cc37
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/abi_text/07.cc52
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/abi_text/08.cc34
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/abi_text/09.cc36
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/abi_text/10.cc34
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/abi_text/11.cc41
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/abi_text/12.cc35
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/abi_text/13.cc34
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/abi_text/14.cc34
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/cxx0x/rref.cc31
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/regression/3111-1.cc32
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/regression/3111-2.cc37
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/regression/7986-01.cc32
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/regression/7986-02.cc34
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/regression/7986-03.cc33
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/regression/7986-04.cc33
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/regression/7986-05.cc33
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/regression/7986-06.cc33
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/regression/7986-07.cc34
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/regression/7986-08.cc33
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/regression/7986-09.cc39
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/regression/7986-10.cc33
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/regression/7986-11.cc33
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/regression/7986-12.cc46
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/regression/7986.cc31
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/regression/8897.cc60
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/regression/cw-01.cc53
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/regression/cw-02.cc58
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/regression/cw-03.cc53
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/regression/cw-04.cc44
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/regression/cw-05.cc50
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/regression/cw-06.cc50
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/regression/cw-07.cc61
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/regression/cw-08.cc53
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/regression/cw-09.cc61
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/regression/cw-10.cc51
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/regression/cw-11.cc34
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/regression/cw-12.cc87
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/regression/cw-13.cc33
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/regression/cw-14.cc71
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/regression/cw-15.cc34
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/regression/cw-16.cc52
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/regression/old.cc30
74 files changed, 2963 insertions, 0 deletions
diff --git a/libstdc++-v3/testsuite/abi/demangle/abi_examples/01.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/01.cc
new file mode 100644
index 000000000..45c012d0f
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/abi_examples/01.cc
@@ -0,0 +1,38 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2005, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// Examples given in the IA64 C++ ABI
+// http://www.codesourcery.com/cxx-abi/abi-examples.html#mangling
+int main()
+{
+ using namespace __gnu_test;
+
+ // extern "C" function
+ // extern "C" float f(void) { };
+ // T f
+ // f is ambiguous between "C" external name and internal built-in type
+ // name. The ambiguity is resolved to the built-in type name.
+ verify_demangle("f", "float");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/abi_examples/02.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/02.cc
new file mode 100644
index 000000000..c20f44a2a
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/abi_examples/02.cc
@@ -0,0 +1,38 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2005, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// Examples given in the IA64 C++ ABI
+// http://www.codesourcery.com/cxx-abi/abi-examples.html#mangling
+int main()
+{
+ using namespace __gnu_test;
+
+ // or variable "f"
+ // int f;
+ // B f
+ // f is ambiguous between variable external name and internal built-in type
+ // name. The ambiguity is resolved to the built-in type name.
+ verify_demangle("f", "float");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/abi_examples/03.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/03.cc
new file mode 100644
index 000000000..1006d2b8d
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/abi_examples/03.cc
@@ -0,0 +1,40 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// Examples given in the IA64 C++ ABI
+// http://www.codesourcery.com/cxx-abi/abi-examples.html#mangling
+int main()
+{
+ using namespace __gnu_test;
+
+ // or a global namespace variable "f"
+ /*
+ namespace f
+ {
+ int f;
+ }
+ */
+ verify_demangle("_ZN1f1fE", "f::f");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/abi_examples/04.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/04.cc
new file mode 100644
index 000000000..553f6b86d
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/abi_examples/04.cc
@@ -0,0 +1,36 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// Examples given in the IA64 C++ ABI
+// http://www.codesourcery.com/cxx-abi/abi-examples.html#mangling
+int main()
+{
+ using namespace __gnu_test;
+
+ // void f() { };
+ // int f() { };
+ // verify_demangle("_Z1fv", "f(void)");
+ verify_demangle("_Z1fv", "f()");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/abi_examples/05.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/05.cc
new file mode 100644
index 000000000..0db11ea61
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/abi_examples/05.cc
@@ -0,0 +1,35 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// Examples given in the IA64 C++ ABI
+// http://www.codesourcery.com/cxx-abi/abi-examples.html#mangling
+int main()
+{
+ using namespace __gnu_test;
+
+ // void f(int) { };
+ // int f(int) { };
+ verify_demangle("_Z1fi", "f(int)");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/abi_examples/06.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/06.cc
new file mode 100644
index 000000000..445b985b5
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/abi_examples/06.cc
@@ -0,0 +1,35 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// Examples given in the IA64 C++ ABI
+// http://www.codesourcery.com/cxx-abi/abi-examples.html#mangling
+int main()
+{
+ using namespace __gnu_test;
+
+ // class bar { };
+ // void foo(bar) { };
+ verify_demangle("_Z3foo3bar", "foo(bar)");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/abi_examples/07.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/07.cc
new file mode 100644
index 000000000..e2765e42a
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/abi_examples/07.cc
@@ -0,0 +1,35 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// Examples given in the IA64 C++ ABI
+// http://www.codesourcery.com/cxx-abi/abi-examples.html#mangling
+int main()
+{
+ using namespace __gnu_test;
+
+ // class X { };
+ // int operator%(X, X) { };
+ verify_demangle("_Zrm1XS_", "operator%(X, X)");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/abi_examples/08.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/08.cc
new file mode 100644
index 000000000..15b5c9b7e
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/abi_examples/08.cc
@@ -0,0 +1,34 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// Examples given in the IA64 C++ ABI
+// http://www.codesourcery.com/cxx-abi/abi-examples.html#mangling
+int main()
+{
+ using namespace __gnu_test;
+
+ // int operator+(X&, X&) { };
+ verify_demangle("_ZplR1XS0_", "operator+(X&, X&)"); // XXX
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/abi_examples/09.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/09.cc
new file mode 100644
index 000000000..db1705155
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/abi_examples/09.cc
@@ -0,0 +1,34 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// Examples given in the IA64 C++ ABI
+// http://www.codesourcery.com/cxx-abi/abi-examples.html#mangling
+int main()
+{
+ using namespace __gnu_test;
+
+ // int operator<< (X const&, X const&) { };
+ verify_demangle("_ZlsRK1XS1_", "operator<<(X const&, X const&)");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/abi_examples/10.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/10.cc
new file mode 100644
index 000000000..6d0e06fef
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/abi_examples/10.cc
@@ -0,0 +1,39 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// Examples given in the IA64 C++ ABI
+// http://www.codesourcery.com/cxx-abi/abi-examples.html#mangling
+int main()
+{
+ using namespace __gnu_test;
+
+ /*
+ template<typename T>
+ class Foo
+ { static int bar; };
+ int Foo<int[4]>::bar;
+ */
+ verify_demangle("_ZN3FooIA4_iE3barE", "Foo<int [4]>::bar");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/abi_examples/11.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/11.cc
new file mode 100644
index 000000000..03bb29ec7
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/abi_examples/11.cc
@@ -0,0 +1,37 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// Examples given in the IA64 C++ ABI
+// http://www.codesourcery.com/cxx-abi/abi-examples.html#mangling
+int main()
+{
+ using namespace __gnu_test;
+
+ // template<typename T> void f(int) { }
+ // template void f<int>(int);
+ // NB: the return type is always explicitly encoded for template
+ // functions taking parameters.
+ verify_demangle("_Z1fIiEvi", "void f<int>(int)");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/abi_examples/12.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/12.cc
new file mode 100644
index 000000000..c01255be8
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/abi_examples/12.cc
@@ -0,0 +1,38 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// Examples given in the IA64 C++ ABI
+// http://www.codesourcery.com/cxx-abi/abi-examples.html#mangling
+int main()
+{
+ using namespace __gnu_test;
+
+ /*
+ class Duo { };
+ template<typename T> void first(Duo) { }
+ template void first<Duo>(Duo);
+ */
+ verify_demangle("_Z5firstI3DuoEvS0_", "void first<Duo>(Duo)");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/abi_examples/13.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/13.cc
new file mode 100644
index 000000000..6da15c32f
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/abi_examples/13.cc
@@ -0,0 +1,38 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// Examples given in the IA64 C++ ABI
+// http://www.codesourcery.com/cxx-abi/abi-examples.html#mangling
+int main()
+{
+ using namespace __gnu_test;
+
+ /*
+ class Duo { };
+ template<typename T> void first(T obj) { }
+ template void first(Duo);
+ */
+ verify_demangle("_Z5firstI3DuoEvT_", "void first<Duo>(Duo)");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/abi_examples/14.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/14.cc
new file mode 100644
index 000000000..98b998786
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/abi_examples/14.cc
@@ -0,0 +1,39 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// Examples given in the IA64 C++ ABI
+// http://www.codesourcery.com/cxx-abi/abi-examples.html#mangling
+int main()
+{
+ using namespace __gnu_test;
+
+ /*
+ typedef void fun(double);
+ template<typename I, typename T, typename J> void foo() { }
+ template void foo<int, fun, int>();
+ */
+ //demangle("_Z3fooIiPFidEiEvv", "void foo<int, int (*)(double), int>(void)");
+ verify_demangle("_Z3fooIiFvdEiEvv", "void foo<int, void (double), int>()");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/abi_examples/15.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/15.cc
new file mode 100644
index 000000000..d1909bbab
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/abi_examples/15.cc
@@ -0,0 +1,39 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// Examples given in the IA64 C++ ABI
+// http://www.codesourcery.com/cxx-abi/abi-examples.html#mangling
+int main()
+{
+ using namespace __gnu_test;
+
+ /*
+ namespace N
+ {
+ int f;
+ }
+ */
+ verify_demangle("_ZN1N1fE", "N::f");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/abi_examples/16.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/16.cc
new file mode 100644
index 000000000..2433f51bd
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/abi_examples/16.cc
@@ -0,0 +1,45 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// Examples given in the IA64 C++ ABI
+// http://www.codesourcery.com/cxx-abi/abi-examples.html#mangling
+int main()
+{
+ using namespace __gnu_test;
+
+ /*
+ namespace System
+ {
+ struct Sound
+ {
+ int beep();
+ };
+
+ int Sound::beep() { };
+ }
+ */
+ // verify_demangle("_ZN6System5Sound4beepEv", "System::Sound::beep(void)");
+ verify_demangle("_ZN6System5Sound4beepEv", "System::Sound::beep()");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/abi_examples/17.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/17.cc
new file mode 100644
index 000000000..7431dbd08
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/abi_examples/17.cc
@@ -0,0 +1,39 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// Examples given in the IA64 C++ ABI
+// http://www.codesourcery.com/cxx-abi/abi-examples.html#mangling
+int main()
+{
+ using namespace __gnu_test;
+
+ /*
+ namespace Arena
+ {
+ int level;
+ }
+ */
+ verify_demangle("_ZN5Arena5levelE", "Arena::level");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/abi_examples/18.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/18.cc
new file mode 100644
index 000000000..3098e306b
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/abi_examples/18.cc
@@ -0,0 +1,41 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// Examples given in the IA64 C++ ABI
+// http://www.codesourcery.com/cxx-abi/abi-examples.html#mangling
+int main()
+{
+ using namespace __gnu_test;
+
+ /*
+ template<typename T1, typename T2> struct Stack
+ {
+ static int level;
+ int return_level() { return level; }
+ };
+ template struct Stack<int, int>;
+ */
+ verify_demangle("_ZN5StackIiiE5levelE", "Stack<int, int>::level");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/abi_examples/19.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/19.cc
new file mode 100644
index 000000000..bafb9069d
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/abi_examples/19.cc
@@ -0,0 +1,33 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// Examples given in the IA64 C++ ABI
+// http://www.codesourcery.com/cxx-abi/abi-examples.html#mangling
+int main()
+{
+ using namespace __gnu_test;
+
+ verify_demangle("_Z1fI1XEvPVN1AIT_E1TE", "void f<X>(A<X>::T volatile*)");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/abi_examples/20.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/20.cc
new file mode 100644
index 000000000..cb9f58c44
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/abi_examples/20.cc
@@ -0,0 +1,34 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// Examples given in the IA64 C++ ABI
+// http://www.codesourcery.com/cxx-abi/abi-examples.html#mangling
+int main()
+{
+ using namespace __gnu_test;
+
+ verify_demangle("_ZngILi42EEvN1AIXplT_Li2EEE1TE",
+ "void operator-<42>(A<(42)+(2)>::T)");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/abi_examples/21.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/21.cc
new file mode 100644
index 000000000..a3689d450
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/abi_examples/21.cc
@@ -0,0 +1,34 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// Examples given in the IA64 C++ ABI
+// http://www.codesourcery.com/cxx-abi/abi-examples.html#mangling
+int main()
+{
+ using namespace __gnu_test;
+
+ verify_demangle("_Z4makeI7FactoryiET_IT0_Ev",
+ "Factory<int> make<Factory, int>()");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/abi_examples/22.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/22.cc
new file mode 100644
index 000000000..a3689d450
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/abi_examples/22.cc
@@ -0,0 +1,34 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// Examples given in the IA64 C++ ABI
+// http://www.codesourcery.com/cxx-abi/abi-examples.html#mangling
+int main()
+{
+ using namespace __gnu_test;
+
+ verify_demangle("_Z4makeI7FactoryiET_IT0_Ev",
+ "Factory<int> make<Factory, int>()");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/abi_examples/23.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/23.cc
new file mode 100644
index 000000000..0b404cc84
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/abi_examples/23.cc
@@ -0,0 +1,33 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// Examples given in the IA64 C++ ABI
+// http://www.codesourcery.com/cxx-abi/abi-examples.html#mangling
+int main()
+{
+ using namespace __gnu_test;
+
+ verify_demangle("_Z3foo5Hello5WorldS0_S_",
+ "foo(Hello, World, World, Hello)");
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/abi_examples/24.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/24.cc
new file mode 100644
index 000000000..1a70c763d
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/abi_examples/24.cc
@@ -0,0 +1,33 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// Examples given in the IA64 C++ ABI
+// http://www.codesourcery.com/cxx-abi/abi-examples.html#mangling
+int main()
+{
+ using namespace __gnu_test;
+
+ verify_demangle("_Z3fooPM2ABi", "foo(int AB::**)");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/abi_examples/25.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/25.cc
new file mode 100644
index 000000000..ba4c3aa4e
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/abi_examples/25.cc
@@ -0,0 +1,38 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// Examples given in the IA64 C++ ABI
+// http://www.codesourcery.com/cxx-abi/abi-examples.html#mangling
+int main()
+{
+ using namespace __gnu_test;
+
+ // Equivalent
+ // uncompressed, cp-dem
+ // verify_demangle("_ZlsRSoRKSs", "operator<<(std::basic_ostream<char, std::char_traits<char> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)");
+ // compressed (good!), new __cxa_demangle
+ verify_demangle("_ZlsRSoRKSs",
+ "operator<<(std::ostream&, std::string const&)");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/abi_examples/26.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/26.cc
new file mode 100644
index 000000000..b55852795
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/abi_examples/26.cc
@@ -0,0 +1,33 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// Examples given in the IA64 C++ ABI
+// http://www.codesourcery.com/cxx-abi/abi-examples.html#mangling
+int main()
+{
+ using namespace __gnu_test;
+
+ verify_demangle("_ZTI7a_class", "typeinfo for a_class");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/abi_text/01.cc b/libstdc++-v3/testsuite/abi/demangle/abi_text/01.cc
new file mode 100644
index 000000000..1cfde0f73
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/abi_text/01.cc
@@ -0,0 +1,41 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// Examples given in the IA64 C++ ABI
+// http://www.codesourcery.com/cxx-abi/abi-examples.html#mangling
+int main()
+{
+ using namespace __gnu_test;
+
+ // 5.1.5 Type encodings.
+ // int* volatile const restrict _far p;
+ // cplus-dem FAIL
+ // icc CORE
+ // Equivalent as considered order-insensitive.
+ // standard text
+ // verify_demangle("U4_farrVKPi", "int* volatile const restrict _far");
+ // new __cxa_demangle
+ verify_demangle("U4_farrVKPi", "int* const volatile restrict _far");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/abi_text/02.cc b/libstdc++-v3/testsuite/abi/demangle/abi_text/02.cc
new file mode 100644
index 000000000..e59bd1418
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/abi_text/02.cc
@@ -0,0 +1,41 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// Specific examples mentioned in the IA64 C++ ABI text
+// http://www.codesourcery.com/cxx-abi/abi.html#mangling
+int main()
+{
+ using namespace __gnu_test;
+
+ // template<int I> void foo (int (&)[I + 1]) { };
+ // template void foo<2> (int (&)[3]);
+ // Equivalent, but formatting difference in void argument and parentheses.
+ // icc, __cxa_demangle
+ verify_demangle("_Z3fooILi2EEvRAplT_Li1E_i",
+ "void foo<2>(int (&) [(2)+(1)])");
+ // cplus-dem
+ // verify_demangle("_Z3fooILi2EEvRAplT_Li1E_i",
+ // "void foo<(int)2>(int (&) [((int)2)+((int)1)])");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/abi_text/03.cc b/libstdc++-v3/testsuite/abi/demangle/abi_text/03.cc
new file mode 100644
index 000000000..50318d1ec
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/abi_text/03.cc
@@ -0,0 +1,38 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// Specific examples mentioned in the IA64 C++ ABI text
+// http://www.codesourcery.com/cxx-abi/abi.html#mangling
+int main()
+{
+ using namespace __gnu_test;
+
+ // struct A;
+ // void f (void (A::*)() const) {}
+ // cplus-dem FAIL
+ // Equivalent, but formatting difference in void argument.
+ verify_demangle("_Z1fM1AKFvvE", "f(void (A::*)() const)");
+ // verify_demangle("_Z1fM1AKFvvE", "f(void (A::*)(void) const)");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/abi_text/04.cc b/libstdc++-v3/testsuite/abi/demangle/abi_text/04.cc
new file mode 100644
index 000000000..d153bf058
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/abi_text/04.cc
@@ -0,0 +1,34 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// Specific examples mentioned in the IA64 C++ ABI text
+// http://www.codesourcery.com/cxx-abi/abi.html#mangling
+int main()
+{
+ using namespace __gnu_test;
+
+ // void foo(char);
+ verify_demangle("_Z3fooc", "foo(char)");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/abi_text/05.cc b/libstdc++-v3/testsuite/abi/demangle/abi_text/05.cc
new file mode 100644
index 000000000..e420e501c
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/abi_text/05.cc
@@ -0,0 +1,38 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// Specific examples mentioned in the IA64 C++ ABI text
+// http://www.codesourcery.com/cxx-abi/abi.html#mangling
+int main()
+{
+ using namespace __gnu_test;
+
+ // void foo(char);
+ // template<void (&)(char)> struct CB { };
+ // CB<foo> obj;
+ // cplus-dem FAIL
+ // standard text FAIL "CB<foo>"
+ verify_demangle("2CBIL_Z3foocEE", "CB<foo(char)>");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/abi_text/06.cc b/libstdc++-v3/testsuite/abi/demangle/abi_text/06.cc
new file mode 100644
index 000000000..3391e2850
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/abi_text/06.cc
@@ -0,0 +1,37 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// Specific examples mentioned in the IA64 C++ ABI text
+// http://www.codesourcery.com/cxx-abi/abi.html#mangling
+int main()
+{
+ using namespace __gnu_test;
+
+ // extern "C" bool IsEmpty(char *);
+ // template<void (&)(char *)> struct CB;
+ // CB<IsEmpty> is mangled as
+ // cplus-dem FAIL
+ verify_demangle("2CBIL_Z7IsEmptyEE", "CB<IsEmpty>");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/abi_text/07.cc b/libstdc++-v3/testsuite/abi/demangle/abi_text/07.cc
new file mode 100644
index 000000000..9759a198b
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/abi_text/07.cc
@@ -0,0 +1,52 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// Specific examples mentioned in the IA64 C++ ABI text
+// http://www.codesourcery.com/cxx-abi/abi.html#mangling
+int main()
+{
+ using namespace __gnu_test;
+
+ // 5.1.6 Scope Encoding
+ /*
+ namespace N
+ {
+ inline char*
+ f(int i)
+ {
+ static char *p = "Itanium C++ ABI"; // p = 1, "..." = 2
+ {
+ struct X
+ { // X = 3
+ void g() {}
+ };
+ }
+ return p[i];
+ }
+ }
+ */
+ // encoding of N::f::p (first local mangled entity)
+ verify_demangle("_ZZN1N1fEiE1p", "N::f(int)::p");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/abi_text/08.cc b/libstdc++-v3/testsuite/abi/demangle/abi_text/08.cc
new file mode 100644
index 000000000..67bf817b9
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/abi_text/08.cc
@@ -0,0 +1,34 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// Specific examples mentioned in the IA64 C++ ABI text
+// http://www.codesourcery.com/cxx-abi/abi.html#mangling
+int main()
+{
+ using namespace __gnu_test;
+
+ // encoding of N::f::"Itanium C++ ABI" (no discriminator)
+ verify_demangle("_ZZN1N1fEiEs", "N::f(int)::string literal");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/abi_text/09.cc b/libstdc++-v3/testsuite/abi/demangle/abi_text/09.cc
new file mode 100644
index 000000000..714a76d63
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/abi_text/09.cc
@@ -0,0 +1,36 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// Specific examples mentioned in the IA64 C++ ABI text
+// http://www.codesourcery.com/cxx-abi/abi.html#mangling
+int main()
+{
+ using namespace __gnu_test;
+
+ // encoding of N::f::X::g()
+ // (third local mangled entity used as a class-qualifier)
+ // cplus-dem FAIL
+ // icc CORE
+ verify_demangle("_ZNZN1N1fEiE1X1gE", "error code = -2: invalid mangled name");
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/abi_text/10.cc b/libstdc++-v3/testsuite/abi/demangle/abi_text/10.cc
new file mode 100644
index 000000000..6207b815e
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/abi_text/10.cc
@@ -0,0 +1,34 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// Specific examples mentioned in the IA64 C++ ABI text
+// http://www.codesourcery.com/cxx-abi/abi.html#mangling
+int main()
+{
+ using namespace __gnu_test;
+
+ verify_demangle("_ZNZN1N1fEiE1X1gEv",
+ "error code = -2: invalid mangled name");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/abi_text/11.cc b/libstdc++-v3/testsuite/abi/demangle/abi_text/11.cc
new file mode 100644
index 000000000..e36ee88a3
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/abi_text/11.cc
@@ -0,0 +1,41 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// Specific examples mentioned in the IA64 C++ ABI text
+// http://www.codesourcery.com/cxx-abi/abi.html#mangling
+int main()
+{
+ using namespace __gnu_test;
+
+ // 5.1.7 Compression.
+ // typedef void T();
+ // struct S {};
+ // void f(T*, T (S::*)) { }
+ // Equivalent, void variance.
+ // standard text, not possible
+ // verify_demangle("_Z1fPFvvEM1SFvvE", "void f(T*, T (S::*))");
+ verify_demangle("_Z1fPFvvEM1SFvvE", "f(void (*)(), void (S::*)())");
+ // demangle("_Z1fPFvvEM1SFvvE", "f(void (*)(void), void (S::*)(void))");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/abi_text/12.cc b/libstdc++-v3/testsuite/abi/demangle/abi_text/12.cc
new file mode 100644
index 000000000..bc1746b12
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/abi_text/12.cc
@@ -0,0 +1,35 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// Specific examples mentioned in the IA64 C++ ABI text
+// http://www.codesourcery.com/cxx-abi/abi.html#mangling
+int main()
+{
+ using namespace __gnu_test;
+
+ // N::T<int, int>::mf(N::T<double, double>)
+ verify_demangle("_ZN1N1TIiiE2mfES0_IddE",
+ "N::T<int, int>::mf(N::T<double, double>)");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/abi_text/13.cc b/libstdc++-v3/testsuite/abi/demangle/abi_text/13.cc
new file mode 100644
index 000000000..08b802ed9
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/abi_text/13.cc
@@ -0,0 +1,34 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// Specific examples mentioned in the IA64 C++ ABI text
+// http://www.codesourcery.com/cxx-abi/abi.html#mangling
+int main()
+{
+ using namespace __gnu_test;
+
+ // std::state
+ verify_demangle("_ZSt5state", "std::state");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/abi_text/14.cc b/libstdc++-v3/testsuite/abi/demangle/abi_text/14.cc
new file mode 100644
index 000000000..fde74b98c
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/abi_text/14.cc
@@ -0,0 +1,34 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// Specific examples mentioned in the IA64 C++ ABI text
+// http://www.codesourcery.com/cxx-abi/abi.html#mangling
+int main()
+{
+ using namespace __gnu_test;
+
+ // std::_In::ward
+ verify_demangle("_ZNSt3_In4wardE", "std::_In::ward");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/cxx0x/rref.cc b/libstdc++-v3/testsuite/abi/demangle/cxx0x/rref.cc
new file mode 100644
index 000000000..caa0aff4e
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/cxx0x/rref.cc
@@ -0,0 +1,31 @@
+// 2007-06-28 Douglas Gregor <doug.gregor@gmail.com>
+
+// Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+int main()
+{
+ using namespace __gnu_test;
+
+ verify_demangle("_Z1fOi", "f(int&&)");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/regression/3111-1.cc b/libstdc++-v3/testsuite/abi/demangle/regression/3111-1.cc
new file mode 100644
index 000000000..d29f2a4a2
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/regression/3111-1.cc
@@ -0,0 +1,32 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// c++/3111
+int main()
+{
+ using namespace __gnu_test;
+
+ verify_demangle("_Z1fKPFiiE", "f(int (* const)(int))");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/regression/3111-2.cc b/libstdc++-v3/testsuite/abi/demangle/regression/3111-2.cc
new file mode 100644
index 000000000..900a1b945
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/regression/3111-2.cc
@@ -0,0 +1,37 @@
+// 2003-02-26 Carlo Wood <carlo@alinoe.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// c++/3111
+int main()
+{
+ using namespace __gnu_test;
+
+ // cplus-dem FAIL
+ // icc FAIL
+ // verify_demangle("_Z1fAszL_ZZNK1N1A1fEvE3foo_0E_i",
+ // "f(int[sizeof(N::A::f() const::foo())])");
+ verify_demangle("_Z1fAszL_ZZNK1N1A1fEvE3foo_0E_i",
+ "f(int [sizeof (N::A::f() const::foo)])");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/regression/7986-01.cc b/libstdc++-v3/testsuite/abi/demangle/regression/7986-01.cc
new file mode 100644
index 000000000..16f6d5c14
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/regression/7986-01.cc
@@ -0,0 +1,32 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// libstdc++/7986
+int main()
+{
+ using namespace __gnu_test;
+ // cplus-dem FAIL
+ verify_demangle("_Z1fA37_iPS_", "f(int [37], int (*) [37])");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/regression/7986-02.cc b/libstdc++-v3/testsuite/abi/demangle/regression/7986-02.cc
new file mode 100644
index 000000000..b4887dae9
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/regression/7986-02.cc
@@ -0,0 +1,34 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// libstdc++/7986
+int main()
+{
+ using namespace __gnu_test;
+
+ // Equivalent, but formatting difference in void argument.
+ // verify_demangle("_Z1fM1AFivEPS0_", "f(int (A::*)(void), int (*)(void))");
+ verify_demangle("_Z1fM1AFivEPS0_", "f(int (A::*)(), int (*)())");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/regression/7986-03.cc b/libstdc++-v3/testsuite/abi/demangle/regression/7986-03.cc
new file mode 100644
index 000000000..92f5e7dc0
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/regression/7986-03.cc
@@ -0,0 +1,33 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// libstdc++/7986
+int main()
+{
+ using namespace __gnu_test;
+
+ // cplus-dem FAIL
+ verify_demangle("_Z1fPFPA1_ivE", "f(int (*(*)()) [1])");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/regression/7986-04.cc b/libstdc++-v3/testsuite/abi/demangle/regression/7986-04.cc
new file mode 100644
index 000000000..5e98ae170
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/regression/7986-04.cc
@@ -0,0 +1,33 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// libstdc++/7986
+int main()
+{
+ using namespace __gnu_test;
+
+ // cplus-dem FAIL
+ verify_demangle("_Z1fPKM1AFivE", "f(int (A::* const*)())");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/regression/7986-05.cc b/libstdc++-v3/testsuite/abi/demangle/regression/7986-05.cc
new file mode 100644
index 000000000..bbaf34ea2
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/regression/7986-05.cc
@@ -0,0 +1,33 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// libstdc++/7986
+int main()
+{
+ using namespace __gnu_test;
+
+ // cplus-dem FAIL
+ verify_demangle("_Z1jM1AFivEPS1_", "j(int (A::*)(), int (A::**)())");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/regression/7986-06.cc b/libstdc++-v3/testsuite/abi/demangle/regression/7986-06.cc
new file mode 100644
index 000000000..19878bf1a
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/regression/7986-06.cc
@@ -0,0 +1,33 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// libstdc++/7986
+int main()
+{
+ using namespace __gnu_test;
+
+ // cplus-dem FAIL
+ verify_demangle("_Z1sPA37_iPS0_", "s(int (*) [37], int (**) [37])");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/regression/7986-07.cc b/libstdc++-v3/testsuite/abi/demangle/regression/7986-07.cc
new file mode 100644
index 000000000..fd52c5b41
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/regression/7986-07.cc
@@ -0,0 +1,34 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// libstdc++/7986
+int main()
+{
+ using namespace __gnu_test;
+
+ // cplus-dem FAIL
+ verify_demangle("_Z3fooA30_A_i", "foo(int [30][])");
+
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/regression/7986-08.cc b/libstdc++-v3/testsuite/abi/demangle/regression/7986-08.cc
new file mode 100644
index 000000000..c136c8cb0
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/regression/7986-08.cc
@@ -0,0 +1,33 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// libstdc++/7986
+int main()
+{
+ using namespace __gnu_test;
+
+ // cplus-dem FAIL
+ verify_demangle("_Z3kooPA28_A30_i", "koo(int (*) [28][30])");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/regression/7986-09.cc b/libstdc++-v3/testsuite/abi/demangle/regression/7986-09.cc
new file mode 100644
index 000000000..0364a8390
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/regression/7986-09.cc
@@ -0,0 +1,39 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// libstdc++/7986
+int main()
+{
+ using namespace __gnu_test;
+
+ // cplus-dem FAIL
+ // Equivalent as considered order-insensitive?
+ // standard text, icc FAIL
+ // verify_demangle("_ZlsRKU3fooU4bart1XS0_",
+ // "operator<<(X const foo bart&, X const foo bart)");
+ // new __cxa_demangle
+ verify_demangle("_ZlsRKU3fooU4bart1XS0_",
+ "operator<<(X bart foo const&, X bart)");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/regression/7986-10.cc b/libstdc++-v3/testsuite/abi/demangle/regression/7986-10.cc
new file mode 100644
index 000000000..4cc58409b
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/regression/7986-10.cc
@@ -0,0 +1,33 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// libstdc++/7986
+int main()
+{
+ using namespace __gnu_test;
+
+ verify_demangle("_ZlsRKU3fooU4bart1XS2_",
+ "operator<<(X bart foo const&, X bart foo const)");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/regression/7986-11.cc b/libstdc++-v3/testsuite/abi/demangle/regression/7986-11.cc
new file mode 100644
index 000000000..9642539ac
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/regression/7986-11.cc
@@ -0,0 +1,33 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// libstdc++/7986
+int main()
+{
+ using namespace __gnu_test;
+
+ // cplus-dem FAIL
+ verify_demangle("_Z1fM1AKFivE", "f(int (A::*)() const)");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/regression/7986-12.cc b/libstdc++-v3/testsuite/abi/demangle/regression/7986-12.cc
new file mode 100644
index 000000000..7e70b316a
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/regression/7986-12.cc
@@ -0,0 +1,46 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// libstdc++/7986
+int main()
+{
+ using namespace __gnu_test;
+
+ // ICE on figmative float template parameters?
+ /*
+ demangle("_Z3absILd1c1f1496f8a44219EEvv", "void abs<3.14159e-173>()");
+ demangle("_Z3absILd40092acd9e83e426EEvv", "void abs<3.1459>()");
+ demangl("_Z3absILe08042191a6cc56a2fe117becEEvv", "void abs<1.234e-2345l>()");
+ demangle("_Z3absILf4016147bEEvv", "void abs<2.345f>()");
+ demangle("_Z3absILfc1800000EEvv", " void abs<-16f>()");
+ demangle("_Z3absILe804bfff8000000000000000EEvv", "void abs<-1l>()");
+ */
+
+ // template<int D> void abs(void) { };
+ // template void abs<11>(void);
+ // Equivalent, but formatting difference in void argument.
+ // verify_demangle("_Z3absILi11EEvv", "void abs<(int)11>()");
+ verify_demangle("_Z3absILi11EEvv", "void abs<11>()");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/regression/7986.cc b/libstdc++-v3/testsuite/abi/demangle/regression/7986.cc
new file mode 100644
index 000000000..70f9c001e
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/regression/7986.cc
@@ -0,0 +1,31 @@
+// 2003-02-26 Carlo Wood <carlo@alinoe.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// libcwd tests
+int main()
+{
+ using namespace __gnu_test;
+
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/regression/8897.cc b/libstdc++-v3/testsuite/abi/demangle/regression/8897.cc
new file mode 100644
index 000000000..e4ad4013c
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/regression/8897.cc
@@ -0,0 +1,60 @@
+// 2003-02-26 Martin v. Loewis <martin@v.loewis.de>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// c++/8897
+int main()
+{
+ using namespace __gnu_test;
+
+ /*
+ template<typename T1>
+ struct A
+ {
+ template<typename T2>
+ operator T2();
+ };
+
+ A<float> a;
+ (int)a; <-- that function.
+ */
+ /*
+ Using "operator int()" is ambigious because that
+ could be either:
+
+ operator int();
+
+ or
+
+ template<typename T>
+ operator T();
+ with T = int.
+
+ - Carlo Wood
+ */
+ // cplus-dem FAIL
+ // icc FAIL
+ // new __cxa_demangle FAIL
+ verify_demangle("_ZN1AIfEcvT_IiEEv", "A<float>::operator int<int>()");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/regression/cw-01.cc b/libstdc++-v3/testsuite/abi/demangle/regression/cw-01.cc
new file mode 100644
index 000000000..f4960ebe4
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/regression/cw-01.cc
@@ -0,0 +1,53 @@
+// 2003-02-26 Carlo Wood <carlo@alinoe.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// libcwd tests
+int main()
+{
+ using namespace __gnu_test;
+
+ /*
+class libcw_app_ct {
+public:
+ void dummy(char const*) { }
+ template<typename T>
+ static void add_option(void (T::*)(char const*), char const*, char,
+ char const*, char const*);
+};
+
+template<typename T>
+ void libcw_app_ct::add_option(void (T::*)(char const*), char const*, char,
+ char const*, char const*)
+{ }
+
+void fn(void)
+{
+ // Instantiation.
+ libcw_app_ct::add_option(&libcw_app_ct::dummy, "", '\0', "", "");
+}
+*/
+verify_demangle("_ZN12libcw_app_ct10add_optionIS_EEvMT_FvPKcES3_cS3_S3_",
+ "void libcw_app_ct::add_option<libcw_app_ct>(void (libcw_app_ct::*)(char const*), char const*, char, char const*, char const*)");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/regression/cw-02.cc b/libstdc++-v3/testsuite/abi/demangle/regression/cw-02.cc
new file mode 100644
index 000000000..ad4ecf03d
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/regression/cw-02.cc
@@ -0,0 +1,58 @@
+// 2003-02-26 Carlo Wood <carlo@alinoe.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// libcwd tests
+int main()
+{
+ using namespace __gnu_test;
+
+/*
+namespace libcw {
+ namespace debug {
+ class memblk_types_manipulator_data_ct { };
+ }
+ template<typename T>
+ class omanip_id_tct { };
+ namespace {
+ template<typename T>
+ class compiler_bug_workaround {
+ public:
+ static std::vector<int> ids;
+ };
+ template<typename T>
+ std::vector<int> compiler_bug_workaround<T>::ids;
+ typedef std::vector<libcw::omanip_id_tct<libcw::debug::memblk_types_manipulator_data_ct> > vector_t;
+ compiler_bug_workaround<vector_t> dummy;
+ }
+}
+
+void g(void)
+{
+ // Instantiation.
+ libcw::dummy.ids.size();
+}
+*/
+ verify_demangle("_ZGVN5libcw24_GLOBAL__N_cbll.cc0ZhUKa23compiler_bug_workaroundISt6vectorINS_13omanip_id_tctINS_5debug32memblk_types_manipulator_data_ctEEESaIS6_EEE3idsE", "guard variable for libcw::(anonymous namespace)::compiler_bug_workaround<std::vector<libcw::omanip_id_tct<libcw::debug::memblk_types_manipulator_data_ct>, std::allocator<libcw::omanip_id_tct<libcw::debug::memblk_types_manipulator_data_ct> > > >::ids");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/regression/cw-03.cc b/libstdc++-v3/testsuite/abi/demangle/regression/cw-03.cc
new file mode 100644
index 000000000..9d9c0945a
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/regression/cw-03.cc
@@ -0,0 +1,53 @@
+// 2003-02-26 Carlo Wood <carlo@alinoe.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// libcwd tests
+int main()
+{
+ using namespace __gnu_test;
+
+/*
+namespace libcw {
+ namespace _private_ {
+ class GlobalObject { public: void dummy(std::ostream&) const; };
+ }
+ namespace debug {
+ template<typename T>
+ class cwprint_using_tct { };
+ template<typename T>
+ cwprint_using_tct<T> cwprint_using(T const&, void (T::*)(std::ostream&) const);
+ }
+}
+
+void h(void)
+{
+ // Instantiation.
+ libcw::_private_::GlobalObject dummy;
+ (void)libcw::debug::cwprint_using(dummy, &libcw::_private_::GlobalObject::dummy);
+}
+*/
+ // cplus-dem CORE
+ verify_demangle("_ZN5libcw5debug13cwprint_usingINS_9_private_12GlobalObjectEEENS0_17cwprint_using_tctIT_EERKS5_MS5_KFvRSt7ostreamE", "libcw::debug::cwprint_using_tct<libcw::_private_::GlobalObject> libcw::debug::cwprint_using<libcw::_private_::GlobalObject>(libcw::_private_::GlobalObject const&, void (libcw::_private_::GlobalObject::*)(std::ostream&) const)");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/regression/cw-04.cc b/libstdc++-v3/testsuite/abi/demangle/regression/cw-04.cc
new file mode 100644
index 000000000..1bf669782
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/regression/cw-04.cc
@@ -0,0 +1,44 @@
+// 2003-02-26 Carlo Wood <carlo@alinoe.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// libcwd tests
+int main()
+{
+ using namespace __gnu_test;
+
+
+/*
+class timer_event_request_base_ct { };
+struct timer_greater { };
+
+void i(void)
+{
+ // Instantiation.
+ std::priority_queue<timer_event_request_base_ct*, std::deque<timer_event_request_base_ct*>, timer_greater> dummy;
+ dummy.top();
+}
+*/
+ verify_demangle("_ZNKSt14priority_queueIP27timer_event_request_base_ctSt5dequeIS1_SaIS1_EE13timer_greaterE3topEv", "std::priority_queue<timer_event_request_base_ct*, std::deque<timer_event_request_base_ct*, std::allocator<timer_event_request_base_ct*> >, timer_greater>::top() const");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/regression/cw-05.cc b/libstdc++-v3/testsuite/abi/demangle/regression/cw-05.cc
new file mode 100644
index 000000000..b5b175811
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/regression/cw-05.cc
@@ -0,0 +1,50 @@
+// 2003-02-26 Carlo Wood <carlo@alinoe.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// libcwd tests
+int main()
+{
+ using namespace __gnu_test;
+
+/*
+struct memory_block_st { };
+namespace std {
+ template<typename T, typename R = T const&, typename P = T const*>
+ class _Deque_iterator {
+ public:
+ void operator==(_Deque_iterator const&) const { }
+ };
+}
+
+void j(void)
+{
+ // Instantiation.
+ std::_Deque_iterator<memory_block_st*> dummy;
+ dummy.operator==(dummy);
+}
+*/
+ verify_demangle("_ZNKSt15_Deque_iteratorIP15memory_block_stRKS1_PS2_EeqERKS5_",
+ "std::_Deque_iterator<memory_block_st*, memory_block_st* const&, memory_block_st* const*>::operator==(std::_Deque_iterator<memory_block_st*, memory_block_st* const&, memory_block_st* const*> const&) const");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/regression/cw-06.cc b/libstdc++-v3/testsuite/abi/demangle/regression/cw-06.cc
new file mode 100644
index 000000000..836fd1bf1
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/regression/cw-06.cc
@@ -0,0 +1,50 @@
+// 2003-02-26 Carlo Wood <carlo@alinoe.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// libcwd tests
+int main()
+{
+ using namespace __gnu_test;
+
+/*
+struct option { };
+namespace std {
+ template<typename T1, typename T2>
+ class __normal_iterator {
+ public:
+ void operator-(__normal_iterator const&) const { }
+ };
+}
+
+void k(void)
+{
+ // Instantiation.
+ std::__normal_iterator<option const*, std::vector<option> > dummy;
+ dummy.operator-(dummy);
+}
+*/
+ verify_demangle("_ZNKSt17__normal_iteratorIPK6optionSt6vectorIS0_SaIS0_EEEmiERKS6_",
+ "std::__normal_iterator<option const*, std::vector<option, std::allocator<option> > >::operator-(std::__normal_iterator<option const*, std::vector<option, std::allocator<option> > > const&) const");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/regression/cw-07.cc b/libstdc++-v3/testsuite/abi/demangle/regression/cw-07.cc
new file mode 100644
index 000000000..9a5116a0a
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/regression/cw-07.cc
@@ -0,0 +1,61 @@
+// 2003-02-26 Carlo Wood <carlo@alinoe.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// libcwd tests
+int main()
+{
+ using namespace __gnu_test;
+
+
+/*
+
+namespace libcw {
+ namespace debug {
+ class no_alloc_checking_allocator { };
+ }
+}
+namespace std {
+ template<typename T>
+ class char_traits { };
+ template<typename T, class _Traits, class _Alloc>
+ class basic_string {
+ public:
+ template<typename T2>
+ char* _S_construct(T2, T2, _Alloc const&) { return (char*)0; }
+ };
+}
+
+void l(void)
+{
+ // Instantiation.
+ std::basic_string<char, std::char_traits<char>,
+ libcw::debug::no_alloc_checking_allocator> dummy;
+ char* cp;
+ libcw::debug::no_alloc_checking_allocator alloc;
+ dummy._S_construct(cp, cp, alloc);
+}
+*/
+ verify_demangle("_ZNSbIcSt11char_traitsIcEN5libcw5debug27no_alloc_checking_allocatorEE12_S_constructIPcEES6_T_S7_RKS3_", "char* std::basic_string<char, std::char_traits<char>, libcw::debug::no_alloc_checking_allocator>::_S_construct<char*>(char*, char*, libcw::debug::no_alloc_checking_allocator const&)");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/regression/cw-08.cc b/libstdc++-v3/testsuite/abi/demangle/regression/cw-08.cc
new file mode 100644
index 000000000..4cabc7e74
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/regression/cw-08.cc
@@ -0,0 +1,53 @@
+// 2003-02-26 Carlo Wood <carlo@alinoe.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// libcwd tests
+int main()
+{
+ using namespace __gnu_test;
+
+/*
+class A { };
+typedef A const* a4_t[4];
+typedef a4_t* ap4_t;
+class C {
+public:
+ ap4_t c;
+};
+template<typename T1, typename T2, typename T3>
+ void f(T1, T2, T3, ap4_t, ap4_t (C::*)) { }
+
+void m(void)
+{
+ // Instantiation.
+ A a;
+ a4_t a4;
+ f(a, &a, static_cast<A const*>(&a), &a4, &C::c);
+}
+*/
+ // Equivalent, spacing differences with icc.
+ // cplus-dem FAIL
+ verify_demangle("_Z1fI1APS0_PKS0_EvT_T0_T1_PA4_S3_M1CS8_", "void f<A, A*, A const*>(A, A*, A const*, A const* (*) [4], A const* (* C::*) [4])");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/regression/cw-09.cc b/libstdc++-v3/testsuite/abi/demangle/regression/cw-09.cc
new file mode 100644
index 000000000..b9b4d38dd
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/regression/cw-09.cc
@@ -0,0 +1,61 @@
+// 2003-02-26 Carlo Wood <carlo@alinoe.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// libcwd tests
+int main()
+{
+ using namespace __gnu_test;
+
+
+/*
+
+void foo(int, int*, int**, int***, int****, int*****, int******, int*******, int********, int*********, int**********, int***********, int************, int*************, int**************, int***************)
+{
+}
+
+void n(void)
+{
+ int i0;
+ int* i1;
+ int** i2;
+ int*** i3;
+ int**** i4;
+ int***** i5;
+ int****** i6;
+ int******* i7;
+ int******** i8;
+ int********* i9;
+ int********** i10;
+ int*********** i11;
+ int************ i12;
+ int************* i13;
+ int************** i14;
+ int*************** i15;
+ foo(i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15);
+}
+*/
+ // cplus-dem FAIL
+ verify_demangle("_Z3fooiPiPS_PS0_PS1_PS2_PS3_PS4_PS5_PS6_PS7_PS8_PS9_PSA_PSB_PSC_", "foo(int, int*, int**, int***, int****, int*****, int******, int*******, int********, int*********, int**********, int***********, int************, int*************, int**************, int***************)");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/regression/cw-10.cc b/libstdc++-v3/testsuite/abi/demangle/regression/cw-10.cc
new file mode 100644
index 000000000..e712c8e6d
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/regression/cw-10.cc
@@ -0,0 +1,51 @@
+// 2003-02-26 Carlo Wood <carlo@alinoe.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// libcwd tests
+int main()
+{
+ using namespace __gnu_test;
+
+
+/*
+
+namespace std {
+ template<typename T1, typename T2, typename T3>
+ class D { };
+ D<A*, A*&, A**> d;
+ template<typename T1, typename T2, typename T3>
+ D<T3, T3&, T3*> B(T1, T1, T2, T3*) { return d; }
+}
+
+void o(void)
+{
+ std::D<A*, A* const&, A* const*> dummy1;
+ std::D<A*, A*&, A**> dummy2;
+ A* dummy3;
+ std::B(dummy1, dummy1, dummy2, &dummy3);
+}
+*/
+
+ verify_demangle("_ZSt1BISt1DIP1ARKS2_PS3_ES0_IS2_RS2_PS2_ES2_ET0_T_SB_SA_PT1_", "std::D<A*, A*&, A**> std::B<std::D<A*, A* const&, A* const*>, std::D<A*, A*&, A**>, A*>(std::D<A*, A* const&, A* const*>, std::D<A*, A* const&, A* const*>, std::D<A*, A*&, A**>, A**)");
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/regression/cw-11.cc b/libstdc++-v3/testsuite/abi/demangle/regression/cw-11.cc
new file mode 100644
index 000000000..bb01586ef
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/regression/cw-11.cc
@@ -0,0 +1,34 @@
+// 2003-02-26 Carlo Wood <carlo@alinoe.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// libcwd tests
+int main()
+{
+ using namespace __gnu_test;
+
+ // cplus-dem CORE
+ verify_demangle("_X11TransParseAddress",
+ "error code = -2: invalid mangled name");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/regression/cw-12.cc b/libstdc++-v3/testsuite/abi/demangle/regression/cw-12.cc
new file mode 100644
index 000000000..df73c6fce
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/regression/cw-12.cc
@@ -0,0 +1,87 @@
+// 2003-02-26 Carlo Wood <carlo@alinoe.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// libcwd tests
+int main()
+{
+ using namespace __gnu_test;
+
+/*
+namespace std {
+ template<bool b, int i>
+ class __default_alloc_template { };
+
+ template<typename CHAR>
+ class string_char_traits { };
+
+ template<class BASIC_STRING, class ADAPTOR>
+ struct _Alloc_traits {
+ static char _S_instanceless;
+ };
+ template<class BASIC_STRING, class ADAPTOR>
+ char _Alloc_traits<BASIC_STRING, ADAPTOR>::_S_instanceless;
+}
+namespace libcw {
+ namespace debug {
+ namespace _private_ {
+ template<typename CHAR, class ALLOCATOR, bool b>
+ class allocator_adaptor { };
+ }
+ }
+}
+
+char x;
+void q(void)
+{
+ std::_Alloc_traits<
+ std::basic_string<
+ char,
+ std::string_char_traits<char>,
+ libcw::debug::_private_::allocator_adaptor<
+ char,
+ std::__default_alloc_template<false, 327664>,
+ true
+ >
+ >,
+ libcw::debug::_private_::allocator_adaptor<
+ std::basic_string<
+ char,
+ std::string_char_traits<char>,
+ libcw::debug::_private_::allocator_adaptor<
+ char,
+ std::__default_alloc_template<false, 327664>,
+ true
+ >
+ >,
+ std::__default_alloc_template<false, 327664>,
+ true
+ >
+ > dummy1;
+ x = dummy1._S_instanceless;
+}
+*/
+ // cplus-dem FAIL
+ verify_demangle("_ZNSt13_Alloc_traitsISbIcSt18string_char_traitsIcEN5libcw5debug9_private_17allocator_adaptorIcSt24__default_alloc_templateILb0ELi327664EELb1EEEENS5_IS9_S7_Lb1EEEE15_S_instancelessE","std::_Alloc_traits<std::basic_string<char, std::string_char_traits<char>, libcw::debug::_private_::allocator_adaptor<char, std::__default_alloc_template<false, 327664>, true> >, libcw::debug::_private_::allocator_adaptor<std::basic_string<char, std::string_char_traits<char>, libcw::debug::_private_::allocator_adaptor<char, std::__default_alloc_template<false, 327664>, true> >, std::__default_alloc_template<false, 327664>, true> >::_S_instanceless");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/regression/cw-13.cc b/libstdc++-v3/testsuite/abi/demangle/regression/cw-13.cc
new file mode 100644
index 000000000..3ac3b13ea
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/regression/cw-13.cc
@@ -0,0 +1,33 @@
+// 2003-02-26 Carlo Wood <carlo@alinoe.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// libcwd tests
+int main()
+{
+ using namespace __gnu_test;
+
+ // cplus-dem CORE
+ verify_demangle("_GLOBAL__I__Z2fnv", "global constructors keyed to fn()");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/regression/cw-14.cc b/libstdc++-v3/testsuite/abi/demangle/regression/cw-14.cc
new file mode 100644
index 000000000..cf56b7139
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/regression/cw-14.cc
@@ -0,0 +1,71 @@
+// 2003-02-26 Carlo Wood <carlo@alinoe.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// libcwd tests
+int main()
+{
+ using namespace __gnu_test;
+
+/*
+struct G {
+ int m(void) const { return 0; }
+ int n(void) { return 0; }
+};
+
+struct H {
+ int m(void) const { return 0; }
+ int n(void) { return 0; }
+};
+
+template<typename T>
+ class what
+ {
+ };
+
+template<typename T>
+ class what2
+ {
+ };
+
+void r(int (G::*)(void),
+ int (G::*)(void) const,
+ G, // S_
+ int (H::*)(void), // M1HS0_
+ int (G::*)(void), // S1_
+ what<G const>, // what<S2_>
+ what2<G const>, // what2<S8_>
+ int (G::*)(void) const // S3_
+{
+ G g;
+ what<G const> y;
+ what2<G const> y2;
+ r(&G::n, &G::m, g, &H::n, &G::n, y, y2, &G::m);
+}
+*/
+
+ // cplus-dem CORE
+verify_demangle("_Z1rM1GFivEMS_KFivES_M1HFivES1_4whatIKS_E5what2IS8_ES3_",
+ "r(int (G::*)(), int (G::*)() const, G, int (H::*)(), int (G::*)(), what<G const>, what2<G const>, int (G::*)() const)");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/regression/cw-15.cc b/libstdc++-v3/testsuite/abi/demangle/regression/cw-15.cc
new file mode 100644
index 000000000..620289e00
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/regression/cw-15.cc
@@ -0,0 +1,34 @@
+// 2003-10-14 Carlo Wood <carlo@alinoe.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// libcwd tests
+int main()
+{
+ using namespace __gnu_test;
+
+ // cplus-dem CORE
+verify_demangle("_Z1xINiEE",
+ "error code = -2: invalid mangled name");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/regression/cw-16.cc b/libstdc++-v3/testsuite/abi/demangle/regression/cw-16.cc
new file mode 100644
index 000000000..49d44bc22
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/regression/cw-16.cc
@@ -0,0 +1,52 @@
+// 2003-11-07 Carlo Wood <carlo@alinoe.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// Torturing by Carlo Wood.
+int main()
+{
+ using namespace __gnu_test;
+
+// 2003/11/07, libstdc++/12736
+verify_demangle("_Z3fooIA6_KiEvA9_KT_rVPrS4_",
+ "void foo<int const [6]>(int const [9][6], int restrict const (* volatile restrict) [9][6])");
+// 2003/11/12, libstdc++/12947
+verify_demangle("_Z1fILi5E1AEvN1CIXqugtT_Li0ELi1ELi2EEE1qE",
+ "void f<5, A>(C<(((5)>(0)))?(1) : (2)>::q)");
+verify_demangle("_Z1fILi5EEvN1AIXcvimlT_Li22EEE1qE",
+ "void f<5>(A<(int)((5)*(22))>::q)");
+verify_demangle("_Z1fPFYPFiiEiE",
+ "f(int (*(*)(int))(int))");
+verify_demangle("_Z1fI1XENT_1tES2_",
+ "X::t f<X>(X::t)");
+verify_demangle("_Z1fILi5E1AEvN1CIXstN1T1tEEXszsrS2_1tEE1qE",
+ "void f<5, A>(C<sizeof (T::t), sizeof (T::t)>::q)");
+// 2003/12/03, libstdc++/13045
+verify_demangle("_Z1fILi1ELc120EEv1AIXplT_cviLd4028ae147ae147aeEEE",
+ "void f<1, (char)120>(A<(1)+((int)((double)[4028ae147ae147ae]))>)");
+verify_demangle("_Z1fILi1ELc120EEv1AIXplT_cviLf3f800000EEE",
+ "void f<1, (char)120>(A<(1)+((int)((float)[3f800000]))>)");
+verify_demangle("_Z9hairyfuncM1YKFPVPFrPA2_PM1XKFKPA3_ilEPcEiE",
+ "hairyfunc(int (* const (X::** (* restrict (* volatile* (Y::*)(int) const)(char*)) [2])(long) const) [3])");
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/regression/old.cc b/libstdc++-v3/testsuite/abi/demangle/regression/old.cc
new file mode 100644
index 000000000..d2099e46a
--- /dev/null
+++ b/libstdc++-v3/testsuite/abi/demangle/regression/old.cc
@@ -0,0 +1,30 @@
+// 2003-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// IA 64 C++ ABI - 5.1 External Names (a.k.a. Mangling)
+
+#include <testsuite_hooks.h>
+
+// old libiberty tests for gnu-v3
+int main()
+{
+ using namespace __gnu_test;
+ verify_demangle("St9bad_alloc", "std::bad_alloc");
+ return 0;
+}