OSDN Git Service

Update comment to reflect test.
[pf3gnuchains/gcc-fork.git] / libstdc++-v3 / testsuite / thread / pthread7-rope.cc
index 12e71ef..2f40134 100644 (file)
@@ -1,6 +1,6 @@
 // 2003-05-03  Loren J. Rittle <rittle@labs.mot.com> <ljrittle@acm.org>
 //
-// Copyright (C) 2003 Free Software Foundation, Inc.
+// Copyright (C) 2003, 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
@@ -18,9 +18,9 @@
 // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
 // USA.
 
-// { dg-do run { target *-*-freebsd* *-*-netbsd* *-*-linux* *-*-solaris* *-*-cygwin *-*-darwin* } }
-// { dg-options "-DDEBUG_ASSERT -pthread" { target *-*-freebsd* *-*-netbsd* *-*-linux* } }
-// { dg-options "-DDEBUG_ASSERT -pthreads" { target *-*-solaris* } }
+// { 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/rope>
 #include <cstring>
 const int max_thread_count = 4;
 const int max_loop_count = 10000;
 
+__gnu_cxx::crope foo2;
 __gnu_cxx::crope foo4;
 
-void* thread_main (void *)
+void* thread_main(void *) 
 {
   // To see a problem with gcc 3.3 and before, set a break point here.
   // Single step through c_str implementation, call sched_yield after
@@ -48,13 +49,24 @@ void* thread_main (void *)
 
   // Please note that the memory leak in the rope implementation with
   // this test case, existed before and after fixing this bug...
-
+  bool test __attribute__((unused)) = true;
   VERIFY( !std::strcmp (data4, "barbazbonglehellohellohello") );
+  return 0;
 }
 
+#if !__GXX_WEAK__ && _MT_ALLOCATOR_H
+// Explicitly instantiate for systems with no COMDAT or weak support.
+template class __gnu_cxx::__mt_alloc<__gnu_cxx::_Rope_RopeLeaf<char, std::allocator<char> > >;
+template class __gnu_cxx::__mt_alloc<__gnu_cxx::_Rope_RopeFunction<char, std::allocator<char> > >;
+template class __gnu_cxx::__mt_alloc<__gnu_cxx::_Rope_RopeSubstring<char, std::allocator<char> > >;
+template class __gnu_cxx::__mt_alloc<__gnu_cxx::_Rope_RopeConcatenation<char, std::allocator<char> > >;
+#endif                                                                
+
 int
 main()
 {
+  bool test __attribute__((unused)) = true;
+
   pthread_t tid[max_thread_count];
 
 #if defined(__sun) && defined(__svr4__)
@@ -70,7 +82,6 @@ main()
 
   const char* data2;
   {
-    __gnu_cxx::crope foo2;
     foo2 += "bar2";
     foo2 += "baz2";
     foo2 += "bongle2";
@@ -96,8 +107,8 @@ main()
        pthread_join (tid[i], NULL);
     }
 
-  // Nothing says the data will be trashed at this point...
-  VERIFY( std::strcmp (data2, "bar2baz2bongle2") );
+  VERIFY( !std::strcmp (data, "barbazbongle") );
+  VERIFY( !std::strcmp (data2, "bar2baz2bongle2") );
 
   return 0;
 }