OSDN Git Service

Update comment to reflect test.
[pf3gnuchains/gcc-fork.git] / libstdc++-v3 / testsuite / thread / pthread7-rope.cc
index 36acd46..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
@@ -19,8 +19,8 @@
 // USA.
 
 // { dg-do run { target *-*-freebsd* *-*-netbsd* *-*-linux* *-*-solaris* *-*-cygwin *-*-darwin* alpha*-*-osf* } }
-// { dg-options "-D_GLIBCXX_ASSERT -pthread" { target *-*-freebsd* *-*-netbsd* *-*-linux* alpha*-*-osf* } }
-// { dg-options "-D_GLIBCXX_ASSERT -pthreads" { target *-*-solaris* } }
+// { dg-options "-pthread" { target *-*-freebsd* *-*-netbsd* *-*-linux* alpha*-*-osf* } }
+// { dg-options "-pthreads" { target *-*-solaris* } }
 
 #include <ext/rope>
 #include <cstring>
@@ -34,6 +34,7 @@
 const int max_thread_count = 4;
 const int max_loop_count = 10000;
 
+__gnu_cxx::crope foo2;
 __gnu_cxx::crope foo4;
 
 void* thread_main(void *) 
@@ -53,6 +54,14 @@ void* thread_main(void *)
   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()
 {
@@ -73,7 +82,6 @@ main()
 
   const char* data2;
   {
-    __gnu_cxx::crope foo2;
     foo2 += "bar2";
     foo2 += "baz2";
     foo2 += "bongle2";
@@ -99,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;
 }