'gcc-3_4-branch'.
From-SVN: r90273
--- /dev/null
+// PR c++/18177
+
+void foo()
+{
+ X; // { dg-error "" }
+ const_cast<int&>(X);
+}
--- /dev/null
+// PR c++/18124
+
+template <template <int> class class> class A {}; // { dg-error "" }
--- /dev/null
+// PR c++/18155
+
+template<int> typedef struct A; // { dg-error "" }
--- /dev/null
+// { dg-do compile }
+// -*- C++ -*-
+
+// Copyright (C) 2004 Free Software Foundation, Inc.
+
+// 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 2, 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 COPYING. If not, write to
+// the Free Software Foundation, 59 Temple Place - Suite 330, Boston,
+// MA 02111-1307, USA.
+
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
+// Benjamin Kosnik <bkoz@redhat.com>
+
+#include <ios>
+#include <testsuite_hooks.h>
+
+int main()
+{
+ __gnu_test::bitmask_operators<std::ios_base::fmtflags>();
+};
--- /dev/null
+// { dg-do compile }
+// { dg-options "-Wall" { target *-*-* } }
+// -*- C++ -*-
+
+// Copyright (C) 2004 Free Software Foundation, Inc.
+
+// 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 2, 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 COPYING. If not, write to
+// the Free Software Foundation, 59 Temple Place - Suite 330, Boston,
+// MA 02111-1307, USA.
+
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
+// Benjamin Kosnik <bkoz@redhat.com>
+
+#include <ios>
+
+// PR libstdc++/17922
+// -Wall
+typedef std::ios_base::fmtflags bitmask_type;
+
+void
+case_labels(bitmask_type b)
+{
+ switch (b)
+ {
+ case std::ios_base::boolalpha:
+ break;
+ case std::ios_base::dec:
+ break;
+ case std::ios_base::fixed:
+ break;
+ case std::ios_base::hex:
+ break;
+ case std::ios_base::internal:
+ break;
+ case std::ios_base::left:
+ break;
+ case std::ios_base::oct:
+ break;
+ case std::ios_base::right:
+ break;
+ case std::ios_base::scientific:
+ break;
+ case std::ios_base::showbase:
+ break;
+ case std::ios_base::showpoint:
+ break;
+ case std::ios_base::showpos:
+ break;
+ case std::ios_base::skipws:
+ break;
+ case std::ios_base::unitbuf:
+ break;
+ case std::ios_base::uppercase:
+ break;
+ case std::ios_base::adjustfield:
+ break;
+ case std::ios_base::basefield:
+ break;
+ case std::ios_base::floatfield:
+ break;
+ case std::_S_ios_fmtflags_end:
+ break;
+ }
+}
--- /dev/null
+// { dg-do compile }
+// -*- C++ -*-
+
+// Copyright (C) 2004 Free Software Foundation, Inc.
+
+// 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 2, 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 COPYING. If not, write to
+// the Free Software Foundation, 59 Temple Place - Suite 330, Boston,
+// MA 02111-1307, USA.
+
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
+// Benjamin Kosnik <bkoz@redhat.com>
+
+#include <ios>
+#include <testsuite_hooks.h>
+
+int main()
+{
+ __gnu_test::bitmask_operators<std::ios_base::iostate>();
+};
--- /dev/null
+// { dg-do compile }
+// { dg-options "-Wall" { target *-*-* } }
+// -*- C++ -*-
+
+// Copyright (C) 2004 Free Software Foundation, Inc.
+
+// 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 2, 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 COPYING. If not, write to
+// the Free Software Foundation, 59 Temple Place - Suite 330, Boston,
+// MA 02111-1307, USA.
+
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
+// Benjamin Kosnik <bkoz@redhat.com>
+
+#include <ios>
+
+// PR libstdc++/17922
+// -Wall
+typedef std::ios_base::iostate bitmask_type;
+
+void
+case_labels(bitmask_type b)
+{
+ switch (b)
+ {
+ case std::ios_base::goodbit:
+ break;
+ case std::ios_base::badbit:
+ break;
+ case std::ios_base::eofbit:
+ break;
+ case std::ios_base::failbit:
+ break;
+ case std::_S_ios_iostate_end:
+ break;
+ }
+}
--- /dev/null
+// { dg-do compile }
+// -*- C++ -*-
+
+// Copyright (C) 2004 Free Software Foundation, Inc.
+
+// 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 2, 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 COPYING. If not, write to
+// the Free Software Foundation, 59 Temple Place - Suite 330, Boston,
+// MA 02111-1307, USA.
+
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
+// Benjamin Kosnik <bkoz@redhat.com>
+
+#include <ios>
+#include <testsuite_hooks.h>
+
+int main()
+{
+ __gnu_test::bitmask_operators<std::ios_base::openmode>();
+};
--- /dev/null
+// { dg-do compile }
+// { dg-options "-Wall" { target *-*-* } }
+// -*- C++ -*-
+
+// Copyright (C) 2004 Free Software Foundation, Inc.
+
+// 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 2, 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 COPYING. If not, write to
+// the Free Software Foundation, 59 Temple Place - Suite 330, Boston,
+// MA 02111-1307, USA.
+
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
+// Benjamin Kosnik <bkoz@redhat.com>
+
+#include <ios>
+
+// PR libstdc++/17922
+// -Wall
+typedef std::ios_base::openmode bitmask_type;
+
+void
+case_labels(bitmask_type b)
+{
+ switch (b)
+ {
+ case std::ios_base::app:
+ break;
+ case std::ios_base::ate:
+ break;
+ case std::ios_base::binary:
+ break;
+ case std::ios_base::in:
+ break;
+ case std::ios_base::out:
+ break;
+ case std::ios_base::trunc:
+ break;
+ case std::_S_ios_openmode_end:
+ break;
+ }
+}
--- /dev/null
+// { dg-do compile }
+// { dg-options "-Wall" { target *-*-* } }
+// -*- C++ -*-
+
+// Copyright (C) 2004 Free Software Foundation, Inc.
+
+// 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 2, 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 COPYING. If not, write to
+// the Free Software Foundation, 59 Temple Place - Suite 330, Boston,
+// MA 02111-1307, USA.
+
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
+// Benjamin Kosnik <bkoz@redhat.com>
+
+#include <ios>
+
+// PR libstdc++/17922
+// -Wall
+typedef std::ios_base::seekdir test_type;
+
+void
+case_labels(test_type b)
+{
+ switch (b)
+ {
+ case std::ios_base::beg:
+ break;
+ case std::ios_base::cur:
+ break;
+ case std::ios_base::end:
+ break;
+ case std::_S_ios_fmtflags_end:
+ break;
+ }
+}
--- /dev/null
+//
+// Copyright (C) 2004 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 2, 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 COPYING. If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// { dg-do run { target *-*-freebsd* *-*-netbsd* *-*-linux* *-*-solaris* *-*-cygwin *-*-darwin* alpha*-*-osf* } }
+// { dg-options "-pthread" { target *-*-freebsd* *-*-netbsd* *-*-linux* alpha*-*-osf* } }
+// { dg-options "-pthreads" { target *-*-solaris* } }
+
+#include <ext/new_allocator.h>
+#include <string>
+#include <pthread.h>
+
+static void *
+foo (void *p)
+{
+ typedef std::char_traits<char> traits_type;
+ typedef __gnu_cxx::new_allocator<char> allocator_type;
+ typedef std::basic_string<char, traits_type, allocator_type> string_type;
+ try
+ {
+ throw string_type("leak");
+ }
+ catch (const string_type&)
+ {
+ pthread_exit (0);
+ }
+}
+
+// c++/18185
+// This used to leak memory.
+int
+main ()
+{
+ pthread_t t;
+ int j = pthread_create (&t, 0, foo, 0);
+ int i = pthread_join (t, 0);
+ return 0;
+}