diff options
author | upstream source tree <ports@midipix.org> | 2015-03-15 20:14:05 -0400 |
---|---|---|
committer | upstream source tree <ports@midipix.org> | 2015-03-15 20:14:05 -0400 |
commit | 554fd8c5195424bdbcabf5de30fdc183aba391bd (patch) | |
tree | 976dc5ab7fddf506dadce60ae936f43f58787092 /libstdc++-v3/testsuite/abi | |
download | cbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.bz2 cbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.xz |
obtained gcc-4.6.4.tar.bz2 from upstream website;upstream
verified gcc-4.6.4.tar.bz2.sig;
imported gcc-4.6.4 source tree from verified upstream tarball.
downloading a git-generated archive based on the 'upstream' tag
should provide you with a source tree that is binary identical
to the one extracted from the above tarball.
if you have obtained the source via the command 'git clone',
however, do note that line-endings of files in your working
directory might differ from line-endings of the respective
files in the upstream repository.
Diffstat (limited to 'libstdc++-v3/testsuite/abi')
78 files changed, 3049 insertions, 0 deletions
diff --git a/libstdc++-v3/testsuite/abi/30586.cc b/libstdc++-v3/testsuite/abi/30586.cc new file mode 100644 index 000000000..8834f168a --- /dev/null +++ b/libstdc++-v3/testsuite/abi/30586.cc @@ -0,0 +1,24 @@ +// { dg-do compile } + +// 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/>. + +#include <iostream> + +// libstdc++/30586 +struct abi; +void foo(abi&); diff --git a/libstdc++-v3/testsuite/abi/cxx_runtime_only_linkage.cc b/libstdc++-v3/testsuite/abi/cxx_runtime_only_linkage.cc new file mode 100644 index 000000000..716fdbc85 --- /dev/null +++ b/libstdc++-v3/testsuite/abi/cxx_runtime_only_linkage.cc @@ -0,0 +1,25 @@ +// { dg-do link } +// { dg-options "-x c -lsupc++" } +// Copyright (C) 2006, 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/>. + +// Must be able to link C++ apps compiled with gcc and libsupc++. + +int main() +{ + return 0; +} 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; +} diff --git a/libstdc++-v3/testsuite/abi/header_cxxabi.c b/libstdc++-v3/testsuite/abi/header_cxxabi.c new file mode 100644 index 000000000..e65aa17c2 --- /dev/null +++ b/libstdc++-v3/testsuite/abi/header_cxxabi.c @@ -0,0 +1,21 @@ +// { dg-do compile } +// { dg-options "-x c" } +// Copyright (C) 2006, 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/>. + +// Must be compilable as "C" +#include <cxxabi.h> diff --git a/libstdc++-v3/testsuite/abi/pr42230.cc b/libstdc++-v3/testsuite/abi/pr42230.cc new file mode 100644 index 000000000..2a3389953 --- /dev/null +++ b/libstdc++-v3/testsuite/abi/pr42230.cc @@ -0,0 +1,16 @@ +// { dg-do run } + +#include <cxxabi.h> +#include <cassert> +#include <cstddef> + +int main() +{ + std::size_t length = 0; + int cc; + + char* ret = abi::__cxa_demangle("e", 0, &length, &cc); + + assert( (cc < 0 && !ret) || (ret && length) ); + return 0; +} |