OSDN Git Service

2004-01-13 Benjamin Kosnik <bkoz@redhat.com>
authorbkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 13 Jan 2004 18:57:45 +0000 (18:57 +0000)
committerbkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 13 Jan 2004 18:57:45 +0000 (18:57 +0000)
* testsuite/performance/ifstream_extract_float.cc: New.
* testsuite/performance/ofstream_insert_float.cc: Float generation
matches above.

* 20_util/auto_ptr.cc, auto_ptr_neg.cc: Break into...
* 20_util/auto_ptr/1.cc: ...this.
* 20_util/auto_ptr/2.cc: Same.
* 20_util/auto_ptr/3.cc: Same.
* 20_util/auto_ptr/3946.cc: Same.
* 20_util/auto_ptr/4.cc: Same.
* 20_util/auto_ptr/5.cc: Same.
* 20_util/auto_ptr/6.cc: Same.
* 20_util/auto_ptr/7.cc: Same.
* 20_util/auto_ptr/assign_neg.cc
* 20_util/pairs.cc: Break into...
* 20_util/pair/1.cc: ...this.
* 20_util/pair/2.cc: Same.
* 20_util/pair/3.cc: Same.
* 20_util/pair/4.cc: Same.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@75811 138bc75d-0d04-0410-961f-82ee72b054a4

17 files changed:
libstdc++-v3/ChangeLog
libstdc++-v3/testsuite/20_util/auto_ptr.cc [deleted file]
libstdc++-v3/testsuite/20_util/auto_ptr/1.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/auto_ptr/2.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/auto_ptr/3.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/auto_ptr/3946.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/auto_ptr/4.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/auto_ptr/5.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/auto_ptr/6.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/auto_ptr/7.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/auto_ptr/assign_neg.cc [moved from libstdc++-v3/testsuite/20_util/auto_ptr_neg.cc with 100% similarity]
libstdc++-v3/testsuite/20_util/pair/1.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/pair/2.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/pair/3.cc [moved from libstdc++-v3/testsuite/20_util/pairs.cc with 55% similarity]
libstdc++-v3/testsuite/20_util/pair/4.cc [new file with mode: 0644]
libstdc++-v3/testsuite/performance/ifstream_extract_float.cc [new file with mode: 0644]
libstdc++-v3/testsuite/performance/ofstream_insert_float.cc

index 6df16ea..642263d 100644 (file)
@@ -1,3 +1,25 @@
+2004-01-13  Benjamin Kosnik  <bkoz@redhat.com>
+
+       * testsuite/performance/ifstream_extract_float.cc: New.
+       * testsuite/performance/ofstream_insert_float.cc: Float generation
+       matches above.
+
+       * 20_util/auto_ptr.cc, auto_ptr_neg.cc: Break into...
+       * 20_util/auto_ptr/1.cc: ...this.
+       * 20_util/auto_ptr/2.cc: Same.
+       * 20_util/auto_ptr/3.cc: Same.
+       * 20_util/auto_ptr/3946.cc: Same.
+       * 20_util/auto_ptr/4.cc: Same.
+       * 20_util/auto_ptr/5.cc: Same.
+       * 20_util/auto_ptr/6.cc: Same.
+       * 20_util/auto_ptr/7.cc: Same.
+       * 20_util/auto_ptr/assign_neg.cc
+       * 20_util/pairs.cc: Break into...
+       * 20_util/pair/1.cc: ...this.
+       * 20_util/pair/2.cc: Same.
+       * 20_util/pair/3.cc: Same.
+       * 20_util/pair/4.cc: Same.
+
 2004-01-13  Paolo Carlini  <pcarlini@suse.de>
 
        * include/bits/locale_facets.tcc (num_get::do_get(void*&)):
diff --git a/libstdc++-v3/testsuite/20_util/auto_ptr.cc b/libstdc++-v3/testsuite/20_util/auto_ptr.cc
deleted file mode 100644 (file)
index 110d4b2..0000000
+++ /dev/null
@@ -1,277 +0,0 @@
-// Copyright (C) 2000, 2002, 2003 Free Software Foundation
-//
-// 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.
-
-// 20.4.5 Template class auto_ptr [lib.auto.ptr]
-
-#include <memory>
-#include <testsuite_hooks.h>
-
-struct A
-{
-  A() { ++ctor_count; }
-  virtual ~A() { ++dtor_count; }
-  static long ctor_count;
-  static long dtor_count;
-};
-long A::ctor_count = 0;
-long A::dtor_count = 0;
-
-struct B : A
-{
-  B() { ++ctor_count; }
-  virtual ~B() { ++dtor_count; }
-  static long ctor_count;
-  static long dtor_count;
-};
-long B::ctor_count = 0;
-long B::dtor_count = 0;
-
-
-struct reset_count_struct
-{
-  ~reset_count_struct()
-  {
-    A::ctor_count = 0;
-    A::dtor_count = 0;
-    B::ctor_count = 0;
-    B::dtor_count = 0;
-  }
-};
-
-
-// 20.4.5.1 auto_ptr constructors [lib.auto.ptr.cons]
-
-// Construction from pointer
-int
-test01()
-{
-  reset_count_struct __attribute__((unused)) reset;
-  bool test __attribute__((unused)) = true;
-
-  std::auto_ptr<A> A_default;
-  VERIFY( A_default.get() == 0 );
-  VERIFY( A::ctor_count == 0 );
-  VERIFY( A::dtor_count == 0 );
-  VERIFY( B::ctor_count == 0 );
-  VERIFY( B::dtor_count == 0 );
-
-  std::auto_ptr<A> A_from_A(new A);
-  VERIFY( A_from_A.get() != 0 );
-  VERIFY( A::ctor_count == 1 );
-  VERIFY( A::dtor_count == 0 );
-  VERIFY( B::ctor_count == 0 );
-  VERIFY( B::dtor_count == 0 );
-
-  std::auto_ptr<A> A_from_B(new B);
-  VERIFY( A_from_B.get() != 0 );
-  VERIFY( A::ctor_count == 2 );
-  VERIFY( A::dtor_count == 0 );
-  VERIFY( B::ctor_count == 1 );
-  VERIFY( B::dtor_count == 0 );
-
-  return 0;
-}
-
-// Construction from std::auto_ptr
-int
-test02()
-{
-  reset_count_struct __attribute__((unused)) reset;
-  bool test __attribute__((unused)) = true;
-
-  std::auto_ptr<A> A_from_A(new A);
-  std::auto_ptr<B> B_from_B(new B);
-
-  std::auto_ptr<A> A_from_ptr_A(A_from_A);
-  std::auto_ptr<A> A_from_ptr_B(B_from_B);
-  VERIFY( A_from_A.get() == 0 );
-  VERIFY( B_from_B.get() == 0 );
-  VERIFY( A_from_ptr_A.get() != 0 );
-  VERIFY( A_from_ptr_B.get() != 0 );
-  VERIFY( A::ctor_count == 2 );
-  VERIFY( A::dtor_count == 0 );
-  VERIFY( B::ctor_count == 1 );
-  VERIFY( B::dtor_count == 0 );
-
-  return 0;
-}
-
-// Assignment from std::auto_ptr
-int
-test03()
-{
-  reset_count_struct __attribute__((unused)) reset;
-  bool test __attribute__((unused)) = true;
-
-  std::auto_ptr<A> A_from_ptr_A;
-  std::auto_ptr<A> A_from_ptr_B;
-  std::auto_ptr<A> A_from_A(new A);
-  std::auto_ptr<B> B_from_B(new B);
-
-  A_from_ptr_A = A_from_A;
-  A_from_ptr_B = B_from_B;
-  VERIFY( A_from_A.get() == 0 );
-  VERIFY( B_from_B.get() == 0 );
-  VERIFY( A_from_ptr_A.get() != 0 );
-  VERIFY( A_from_ptr_B.get() != 0 );
-  VERIFY( A::ctor_count == 2 );
-  VERIFY( A::dtor_count == 0 );
-  VERIFY( B::ctor_count == 1 );
-  VERIFY( B::dtor_count == 0 );
-
-  return 0;
-}
-
-// Destruction
-int
-test04()
-{
-  reset_count_struct __attribute__((unused)) reset;
-  bool test __attribute__((unused)) = true;
-
-  {/*lifetine scope*/
-    std::auto_ptr<A> A_from_A(new A);
-    std::auto_ptr<A> A_from_B(new B);
-    std::auto_ptr<B> B_from_B(new B);
-  }/*destructors called here*/
-
-  VERIFY( A::ctor_count == 3 );
-  VERIFY( A::dtor_count == 3 );
-  VERIFY( B::ctor_count == 2 );
-  VERIFY( B::dtor_count == 2 );
-
-  return 0;
-}
-
-// Class member construction/destruction
-template <typename T>
-class pimpl
-{
-public:
-  pimpl() : p_impl(new T) {}
-private:
-  std::auto_ptr<T> p_impl;
-};
-
-int 
-test05()
-{
-  bool test __attribute__((unused)) = true;
-  reset_count_struct __attribute__((unused)) reset;
-
-  pimpl<A>();
-  pimpl<B>();
-  VERIFY( A::ctor_count == 2 );
-  VERIFY( A::dtor_count == 2 );
-  VERIFY( B::ctor_count == 1 );
-  VERIFY( B::dtor_count == 1 );
-  return 0;
-}
-
-
-// 20.4.5.2 auto_ptr members [lib.auto.ptr.members]
-
-// Member access
-int
-test06()
-{
-  reset_count_struct __attribute__((unused)) reset;
-  bool test __attribute__((unused)) = true;
-
-  std::auto_ptr<A> A_from_A(new A);
-  std::auto_ptr<A> A_from_A_ptr(A_from_A.release());
-  VERIFY( A_from_A.get() == 0 );
-  VERIFY( A_from_A_ptr.get() != 0 );
-  VERIFY( A_from_A_ptr->ctor_count == 1 );
-  VERIFY( (*A_from_A_ptr).dtor_count == 0 );
-
-  A* A_ptr = A_from_A_ptr.get();
-
-  A_from_A_ptr.reset(A_ptr);
-  VERIFY( A_from_A_ptr.get() == A_ptr );
-  VERIFY( A_from_A_ptr->ctor_count == 1 );
-  VERIFY( (*A_from_A_ptr).dtor_count == 0 );
-
-  A_from_A_ptr.reset(new A);
-  VERIFY( A_from_A_ptr.get() != A_ptr );
-  VERIFY( A_from_A_ptr->ctor_count == 2 );
-  VERIFY( (*A_from_A_ptr).dtor_count == 1 );
-  return 0;
-}
-
-
-// 20.4.5.3 auto_ptr conversions [lib.auto.ptr.conv]
-
-// Parameters and return values
-template <typename T>
-static std::auto_ptr<T> source()
-{
-  return std::auto_ptr<T>(new T);
-}
-
-template <typename T>
-static void drain(std::auto_ptr<T>)
-{}
-
-int
-test07()
-{
-  bool test __attribute__((unused)) = true;
-  reset_count_struct __attribute__((unused)) reset;
-
-  drain(source<A>());
-  // The resolution of core issue 84, now a DR, breaks this call.
-  // drain<A>(source<B>());
-  drain(source<B>());
-  VERIFY( A::ctor_count == 2 );
-  VERIFY( A::dtor_count == 2 );
-  VERIFY( B::ctor_count == 1 );
-  VERIFY( B::dtor_count == 1 );
-  return 0;
-}
-
-// libstdc++/3946
-// http://gcc.gnu.org/ml/libstdc++/2002-07/msg00024.html
-struct Base { };
-struct Derived : public Base { };
-
-std::auto_ptr<Derived> 
-conversiontest08() { return std::auto_ptr<Derived>(new Derived); }
-
-void
-test08()
-{
-  std::auto_ptr<Base> ptr;
-  ptr = conversiontest08();
-}
-
-
-int 
-main()
-{
-  test01();
-  test02();
-  test03();
-  test04();
-  test05();
-  test06();
-  test07();
-  test08();
-
-  return 0;
-}
diff --git a/libstdc++-v3/testsuite/20_util/auto_ptr/1.cc b/libstdc++-v3/testsuite/20_util/auto_ptr/1.cc
new file mode 100644 (file)
index 0000000..8e150b0
--- /dev/null
@@ -0,0 +1,95 @@
+// Copyright (C) 2000, 2002, 2003, 2004 Free Software Foundation
+//
+// 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.
+
+// 20.4.5 Template class auto_ptr [lib.auto.ptr]
+
+#include <memory>
+#include <testsuite_hooks.h>
+
+struct A
+{
+  A() { ++ctor_count; }
+  virtual ~A() { ++dtor_count; }
+  static long ctor_count;
+  static long dtor_count;
+};
+long A::ctor_count = 0;
+long A::dtor_count = 0;
+
+struct B : A
+{
+  B() { ++ctor_count; }
+  virtual ~B() { ++dtor_count; }
+  static long ctor_count;
+  static long dtor_count;
+};
+long B::ctor_count = 0;
+long B::dtor_count = 0;
+
+
+struct reset_count_struct
+{
+  ~reset_count_struct()
+  {
+    A::ctor_count = 0;
+    A::dtor_count = 0;
+    B::ctor_count = 0;
+    B::dtor_count = 0;
+  }
+};
+
+
+// 20.4.5.1 auto_ptr constructors [lib.auto.ptr.cons]
+
+// Construction from pointer
+int
+test01()
+{
+  reset_count_struct __attribute__((unused)) reset;
+  bool test __attribute__((unused)) = true;
+
+  std::auto_ptr<A> A_default;
+  VERIFY( A_default.get() == 0 );
+  VERIFY( A::ctor_count == 0 );
+  VERIFY( A::dtor_count == 0 );
+  VERIFY( B::ctor_count == 0 );
+  VERIFY( B::dtor_count == 0 );
+
+  std::auto_ptr<A> A_from_A(new A);
+  VERIFY( A_from_A.get() != 0 );
+  VERIFY( A::ctor_count == 1 );
+  VERIFY( A::dtor_count == 0 );
+  VERIFY( B::ctor_count == 0 );
+  VERIFY( B::dtor_count == 0 );
+
+  std::auto_ptr<A> A_from_B(new B);
+  VERIFY( A_from_B.get() != 0 );
+  VERIFY( A::ctor_count == 2 );
+  VERIFY( A::dtor_count == 0 );
+  VERIFY( B::ctor_count == 1 );
+  VERIFY( B::dtor_count == 0 );
+
+  return 0;
+}
+
+int 
+main()
+{
+  test01();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/20_util/auto_ptr/2.cc b/libstdc++-v3/testsuite/20_util/auto_ptr/2.cc
new file mode 100644 (file)
index 0000000..6ce31d1
--- /dev/null
@@ -0,0 +1,85 @@
+// Copyright (C) 2000, 2002, 2003, 2004 Free Software Foundation
+//
+// 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.
+
+// 20.4.5 Template class auto_ptr [lib.auto.ptr]
+
+#include <memory>
+#include <testsuite_hooks.h>
+
+struct A
+{
+  A() { ++ctor_count; }
+  virtual ~A() { ++dtor_count; }
+  static long ctor_count;
+  static long dtor_count;
+};
+long A::ctor_count = 0;
+long A::dtor_count = 0;
+
+struct B : A
+{
+  B() { ++ctor_count; }
+  virtual ~B() { ++dtor_count; }
+  static long ctor_count;
+  static long dtor_count;
+};
+long B::ctor_count = 0;
+long B::dtor_count = 0;
+
+
+struct reset_count_struct
+{
+  ~reset_count_struct()
+  {
+    A::ctor_count = 0;
+    A::dtor_count = 0;
+    B::ctor_count = 0;
+    B::dtor_count = 0;
+  }
+};
+
+// Construction from std::auto_ptr
+int
+test02()
+{
+  reset_count_struct __attribute__((unused)) reset;
+  bool test __attribute__((unused)) = true;
+
+  std::auto_ptr<A> A_from_A(new A);
+  std::auto_ptr<B> B_from_B(new B);
+
+  std::auto_ptr<A> A_from_ptr_A(A_from_A);
+  std::auto_ptr<A> A_from_ptr_B(B_from_B);
+  VERIFY( A_from_A.get() == 0 );
+  VERIFY( B_from_B.get() == 0 );
+  VERIFY( A_from_ptr_A.get() != 0 );
+  VERIFY( A_from_ptr_B.get() != 0 );
+  VERIFY( A::ctor_count == 2 );
+  VERIFY( A::dtor_count == 0 );
+  VERIFY( B::ctor_count == 1 );
+  VERIFY( B::dtor_count == 0 );
+
+  return 0;
+}
+
+int 
+main()
+{
+  test02();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/20_util/auto_ptr/3.cc b/libstdc++-v3/testsuite/20_util/auto_ptr/3.cc
new file mode 100644 (file)
index 0000000..8090d27
--- /dev/null
@@ -0,0 +1,87 @@
+// Copyright (C) 2000, 2002, 2003, 2004 Free Software Foundation
+//
+// 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.
+
+// 20.4.5 Template class auto_ptr [lib.auto.ptr]
+
+#include <memory>
+#include <testsuite_hooks.h>
+
+struct A
+{
+  A() { ++ctor_count; }
+  virtual ~A() { ++dtor_count; }
+  static long ctor_count;
+  static long dtor_count;
+};
+long A::ctor_count = 0;
+long A::dtor_count = 0;
+
+struct B : A
+{
+  B() { ++ctor_count; }
+  virtual ~B() { ++dtor_count; }
+  static long ctor_count;
+  static long dtor_count;
+};
+long B::ctor_count = 0;
+long B::dtor_count = 0;
+
+
+struct reset_count_struct
+{
+  ~reset_count_struct()
+  {
+    A::ctor_count = 0;
+    A::dtor_count = 0;
+    B::ctor_count = 0;
+    B::dtor_count = 0;
+  }
+};
+
+// Assignment from std::auto_ptr
+int
+test03()
+{
+  reset_count_struct __attribute__((unused)) reset;
+  bool test __attribute__((unused)) = true;
+
+  std::auto_ptr<A> A_from_ptr_A;
+  std::auto_ptr<A> A_from_ptr_B;
+  std::auto_ptr<A> A_from_A(new A);
+  std::auto_ptr<B> B_from_B(new B);
+
+  A_from_ptr_A = A_from_A;
+  A_from_ptr_B = B_from_B;
+  VERIFY( A_from_A.get() == 0 );
+  VERIFY( B_from_B.get() == 0 );
+  VERIFY( A_from_ptr_A.get() != 0 );
+  VERIFY( A_from_ptr_B.get() != 0 );
+  VERIFY( A::ctor_count == 2 );
+  VERIFY( A::dtor_count == 0 );
+  VERIFY( B::ctor_count == 1 );
+  VERIFY( B::dtor_count == 0 );
+
+  return 0;
+}
+
+int 
+main()
+{
+  test03();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/20_util/auto_ptr/3946.cc b/libstdc++-v3/testsuite/20_util/auto_ptr/3946.cc
new file mode 100644 (file)
index 0000000..191ba6f
--- /dev/null
@@ -0,0 +1,45 @@
+// Copyright (C) 2000, 2002, 2003, 2004 Free Software Foundation
+//
+// 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.
+
+// 20.4.5 Template class auto_ptr [lib.auto.ptr]
+
+#include <memory>
+#include <testsuite_hooks.h>
+
+// libstdc++/3946
+// http://gcc.gnu.org/ml/libstdc++/2002-07/msg00024.html
+struct Base { };
+struct Derived : public Base { };
+
+std::auto_ptr<Derived> 
+conversiontest08() { return std::auto_ptr<Derived>(new Derived); }
+
+void
+test08()
+{
+  std::auto_ptr<Base> ptr;
+  ptr = conversiontest08();
+}
+
+
+int 
+main()
+{
+  test08();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/20_util/auto_ptr/4.cc b/libstdc++-v3/testsuite/20_util/auto_ptr/4.cc
new file mode 100644 (file)
index 0000000..1814800
--- /dev/null
@@ -0,0 +1,83 @@
+// Copyright (C) 2000, 2002, 2003, 2004 Free Software Foundation
+//
+// 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.
+
+// 20.4.5 Template class auto_ptr [lib.auto.ptr]
+
+#include <memory>
+#include <testsuite_hooks.h>
+
+struct A
+{
+  A() { ++ctor_count; }
+  virtual ~A() { ++dtor_count; }
+  static long ctor_count;
+  static long dtor_count;
+};
+long A::ctor_count = 0;
+long A::dtor_count = 0;
+
+struct B : A
+{
+  B() { ++ctor_count; }
+  virtual ~B() { ++dtor_count; }
+  static long ctor_count;
+  static long dtor_count;
+};
+long B::ctor_count = 0;
+long B::dtor_count = 0;
+
+
+struct reset_count_struct
+{
+  ~reset_count_struct()
+  {
+    A::ctor_count = 0;
+    A::dtor_count = 0;
+    B::ctor_count = 0;
+    B::dtor_count = 0;
+  }
+};
+
+
+// Destruction
+int
+test04()
+{
+  reset_count_struct __attribute__((unused)) reset;
+  bool test __attribute__((unused)) = true;
+
+  {/*lifetine scope*/
+    std::auto_ptr<A> A_from_A(new A);
+    std::auto_ptr<A> A_from_B(new B);
+    std::auto_ptr<B> B_from_B(new B);
+  }/*destructors called here*/
+
+  VERIFY( A::ctor_count == 3 );
+  VERIFY( A::dtor_count == 3 );
+  VERIFY( B::ctor_count == 2 );
+  VERIFY( B::dtor_count == 2 );
+
+  return 0;
+}
+
+int 
+main()
+{
+  test04();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/20_util/auto_ptr/5.cc b/libstdc++-v3/testsuite/20_util/auto_ptr/5.cc
new file mode 100644 (file)
index 0000000..7796981
--- /dev/null
@@ -0,0 +1,87 @@
+// Copyright (C) 2000, 2002, 2003, 2004 Free Software Foundation
+//
+// 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.
+
+// 20.4.5 Template class auto_ptr [lib.auto.ptr]
+
+#include <memory>
+#include <testsuite_hooks.h>
+
+struct A
+{
+  A() { ++ctor_count; }
+  virtual ~A() { ++dtor_count; }
+  static long ctor_count;
+  static long dtor_count;
+};
+long A::ctor_count = 0;
+long A::dtor_count = 0;
+
+struct B : A
+{
+  B() { ++ctor_count; }
+  virtual ~B() { ++dtor_count; }
+  static long ctor_count;
+  static long dtor_count;
+};
+long B::ctor_count = 0;
+long B::dtor_count = 0;
+
+
+struct reset_count_struct
+{
+  ~reset_count_struct()
+  {
+    A::ctor_count = 0;
+    A::dtor_count = 0;
+    B::ctor_count = 0;
+    B::dtor_count = 0;
+  }
+};
+
+
+// Class member construction/destruction
+template <typename T>
+class pimpl
+{
+public:
+  pimpl() : p_impl(new T) {}
+private:
+  std::auto_ptr<T> p_impl;
+};
+
+int 
+test05()
+{
+  bool test __attribute__((unused)) = true;
+  reset_count_struct __attribute__((unused)) reset;
+
+  pimpl<A>();
+  pimpl<B>();
+  VERIFY( A::ctor_count == 2 );
+  VERIFY( A::dtor_count == 2 );
+  VERIFY( B::ctor_count == 1 );
+  VERIFY( B::dtor_count == 1 );
+  return 0;
+}
+
+int 
+main()
+{
+  test05();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/20_util/auto_ptr/6.cc b/libstdc++-v3/testsuite/20_util/auto_ptr/6.cc
new file mode 100644 (file)
index 0000000..e4e13d9
--- /dev/null
@@ -0,0 +1,91 @@
+// Copyright (C) 2000, 2002, 2003, 2004 Free Software Foundation
+//
+// 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.
+
+// 20.4.5 Template class auto_ptr [lib.auto.ptr]
+
+#include <memory>
+#include <testsuite_hooks.h>
+
+struct A
+{
+  A() { ++ctor_count; }
+  virtual ~A() { ++dtor_count; }
+  static long ctor_count;
+  static long dtor_count;
+};
+long A::ctor_count = 0;
+long A::dtor_count = 0;
+
+struct B : A
+{
+  B() { ++ctor_count; }
+  virtual ~B() { ++dtor_count; }
+  static long ctor_count;
+  static long dtor_count;
+};
+long B::ctor_count = 0;
+long B::dtor_count = 0;
+
+
+struct reset_count_struct
+{
+  ~reset_count_struct()
+  {
+    A::ctor_count = 0;
+    A::dtor_count = 0;
+    B::ctor_count = 0;
+    B::dtor_count = 0;
+  }
+};
+
+// 20.4.5.2 auto_ptr members [lib.auto.ptr.members]
+
+// Member access
+int
+test06()
+{
+  reset_count_struct __attribute__((unused)) reset;
+  bool test __attribute__((unused)) = true;
+
+  std::auto_ptr<A> A_from_A(new A);
+  std::auto_ptr<A> A_from_A_ptr(A_from_A.release());
+  VERIFY( A_from_A.get() == 0 );
+  VERIFY( A_from_A_ptr.get() != 0 );
+  VERIFY( A_from_A_ptr->ctor_count == 1 );
+  VERIFY( (*A_from_A_ptr).dtor_count == 0 );
+
+  A* A_ptr = A_from_A_ptr.get();
+
+  A_from_A_ptr.reset(A_ptr);
+  VERIFY( A_from_A_ptr.get() == A_ptr );
+  VERIFY( A_from_A_ptr->ctor_count == 1 );
+  VERIFY( (*A_from_A_ptr).dtor_count == 0 );
+
+  A_from_A_ptr.reset(new A);
+  VERIFY( A_from_A_ptr.get() != A_ptr );
+  VERIFY( A_from_A_ptr->ctor_count == 2 );
+  VERIFY( (*A_from_A_ptr).dtor_count == 1 );
+  return 0;
+}
+
+int 
+main()
+{
+  test06();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/20_util/auto_ptr/7.cc b/libstdc++-v3/testsuite/20_util/auto_ptr/7.cc
new file mode 100644 (file)
index 0000000..a77ba51
--- /dev/null
@@ -0,0 +1,91 @@
+// Copyright (C) 2000, 2002, 2003, 2004 Free Software Foundation
+//
+// 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.
+
+// 20.4.5 Template class auto_ptr [lib.auto.ptr]
+
+#include <memory>
+#include <testsuite_hooks.h>
+
+struct A
+{
+  A() { ++ctor_count; }
+  virtual ~A() { ++dtor_count; }
+  static long ctor_count;
+  static long dtor_count;
+};
+long A::ctor_count = 0;
+long A::dtor_count = 0;
+
+struct B : A
+{
+  B() { ++ctor_count; }
+  virtual ~B() { ++dtor_count; }
+  static long ctor_count;
+  static long dtor_count;
+};
+long B::ctor_count = 0;
+long B::dtor_count = 0;
+
+
+struct reset_count_struct
+{
+  ~reset_count_struct()
+  {
+    A::ctor_count = 0;
+    A::dtor_count = 0;
+    B::ctor_count = 0;
+    B::dtor_count = 0;
+  }
+};
+
+// 20.4.5.3 auto_ptr conversions [lib.auto.ptr.conv]
+
+// Parameters and return values
+template <typename T>
+static std::auto_ptr<T> source()
+{
+  return std::auto_ptr<T>(new T);
+}
+
+template <typename T>
+static void drain(std::auto_ptr<T>)
+{}
+
+int
+test07()
+{
+  bool test __attribute__((unused)) = true;
+  reset_count_struct __attribute__((unused)) reset;
+
+  drain(source<A>());
+  // The resolution of core issue 84, now a DR, breaks this call.
+  // drain<A>(source<B>());
+  drain(source<B>());
+  VERIFY( A::ctor_count == 2 );
+  VERIFY( A::dtor_count == 2 );
+  VERIFY( B::ctor_count == 1 );
+  VERIFY( B::dtor_count == 1 );
+  return 0;
+}
+
+int 
+main()
+{
+  test07();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/20_util/pair/1.cc b/libstdc++-v3/testsuite/20_util/pair/1.cc
new file mode 100644 (file)
index 0000000..7ccee6d
--- /dev/null
@@ -0,0 +1,79 @@
+// 2001-06-18  Benjamin Kosnik  <bkoz@redhat.com>
+
+// Copyright (C) 2001, 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.
+
+// 20.2.2 Pairs
+
+#include <utility>
+#include <testsuite_hooks.h>
+
+class gnu_obj
+{
+  int i;
+public:
+  gnu_obj(int arg = 0): i(arg) { }
+  bool operator==(const gnu_obj& rhs) const { return i == rhs.i; }
+  bool operator<(const gnu_obj& rhs) const { return i < rhs.i; }
+};
+
+template<typename T>
+  struct gnu_t
+  {
+    bool b;
+  public:
+    gnu_t(bool arg = 0): b(arg) { }
+    bool operator==(const gnu_t& rhs) const { return b == rhs.b; }
+    bool operator<(const gnu_t& rhs) const { return int(b) < int(rhs.b); }
+  };
+
+
+// heterogeneous
+void test01()
+{
+  bool test __attribute__((unused)) = true;
+
+  std::pair<bool, long> p_bl_1(true, 433);
+  std::pair<bool, long> p_bl_2 = std::make_pair(true, 433);
+  VERIFY( p_bl_1 == p_bl_2 );
+  VERIFY( !(p_bl_1 < p_bl_2) );
+
+  std::pair<const char*, float> p_sf_1("total enlightenment", 433.00);
+  std::pair<const char*, float> p_sf_2 = std::make_pair("total enlightenment", 
+                                                       433.00);
+  VERIFY( p_sf_1 == p_sf_2 );
+  VERIFY( !(p_sf_1 < p_sf_2) );
+
+  std::pair<const char*, gnu_obj> p_sg_1("enlightenment", gnu_obj(5));
+  std::pair<const char*, gnu_obj> p_sg_2 = std::make_pair("enlightenment", 
+                                                         gnu_obj(5));
+  VERIFY( p_sg_1 == p_sg_2 );
+  VERIFY( !(p_sg_1 < p_sg_2) );
+
+  std::pair<gnu_t<long>, gnu_obj> p_st_1(gnu_t<long>(false), gnu_obj(5));
+  std::pair<gnu_t<long>, gnu_obj> p_st_2 = std::make_pair(gnu_t<long>(false),
+                                                         gnu_obj(5));
+  VERIFY( p_st_1 == p_st_2 );
+  VERIFY( !(p_st_1 < p_st_2) );
+}
+
+int main() 
+{ 
+  test01(); 
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/20_util/pair/2.cc b/libstdc++-v3/testsuite/20_util/pair/2.cc
new file mode 100644 (file)
index 0000000..82d928c
--- /dev/null
@@ -0,0 +1,60 @@
+// 2001-06-18  Benjamin Kosnik  <bkoz@redhat.com>
+
+// Copyright (C) 2001, 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.
+
+// 20.2.2 Pairs
+
+#include <utility>
+#include <testsuite_hooks.h>
+
+class gnu_obj
+{
+  int i;
+public:
+  gnu_obj(int arg = 0): i(arg) { }
+  bool operator==(const gnu_obj& rhs) const { return i == rhs.i; }
+  bool operator<(const gnu_obj& rhs) const { return i < rhs.i; }
+};
+
+template<typename T>
+  struct gnu_t
+  {
+    bool b;
+  public:
+    gnu_t(bool arg = 0): b(arg) { }
+    bool operator==(const gnu_t& rhs) const { return b == rhs.b; }
+    bool operator<(const gnu_t& rhs) const { return int(b) < int(rhs.b); }
+  };
+
+// homogeneous
+void test02()
+{
+  bool test __attribute__((unused)) = true;
+
+  std::pair<bool, bool> p_bb_1(true, false);
+  std::pair<bool, bool> p_bb_2 = std::make_pair(true, false);
+  VERIFY( p_bb_1 == p_bb_2 );
+  VERIFY( !(p_bb_1 < p_bb_2) );
+}
+
+int main() 
+{ 
+  test02();
+  return 0;
+}
similarity index 55%
rename from libstdc++-v3/testsuite/20_util/pairs.cc
rename to libstdc++-v3/testsuite/20_util/pair/3.cc
index 085937f..bac0e7e 100644 (file)
@@ -1,6 +1,6 @@
 // 2001-06-18  Benjamin Kosnik  <bkoz@redhat.com>
 
-// Copyright (C) 2001 Free Software Foundation, Inc.
+// Copyright (C) 2001, 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
@@ -43,47 +43,6 @@ template<typename T>
   };
 
 
-// heterogeneous
-void test01()
-{
-  bool test __attribute__((unused)) = true;
-
-  std::pair<bool, long> p_bl_1(true, 433);
-  std::pair<bool, long> p_bl_2 = std::make_pair(true, 433);
-  VERIFY( p_bl_1 == p_bl_2 );
-  VERIFY( !(p_bl_1 < p_bl_2) );
-
-  std::pair<const char*, float> p_sf_1("total enlightenment", 433.00);
-  std::pair<const char*, float> p_sf_2 = std::make_pair("total enlightenment", 
-                                                       433.00);
-  VERIFY( p_sf_1 == p_sf_2 );
-  VERIFY( !(p_sf_1 < p_sf_2) );
-
-  std::pair<const char*, gnu_obj> p_sg_1("enlightenment", gnu_obj(5));
-  std::pair<const char*, gnu_obj> p_sg_2 = std::make_pair("enlightenment", 
-                                                         gnu_obj(5));
-  VERIFY( p_sg_1 == p_sg_2 );
-  VERIFY( !(p_sg_1 < p_sg_2) );
-
-  std::pair<gnu_t<long>, gnu_obj> p_st_1(gnu_t<long>(false), gnu_obj(5));
-  std::pair<gnu_t<long>, gnu_obj> p_st_2 = std::make_pair(gnu_t<long>(false),
-                                                         gnu_obj(5));
-  VERIFY( p_st_1 == p_st_2 );
-  VERIFY( !(p_st_1 < p_st_2) );
-}
-
-// homogeneous
-void test02()
-{
-  bool test __attribute__((unused)) = true;
-
-  std::pair<bool, bool> p_bb_1(true, false);
-  std::pair<bool, bool> p_bb_2 = std::make_pair(true, false);
-  VERIFY( p_bb_1 == p_bb_2 );
-  VERIFY( !(p_bb_1 < p_bb_2) );
-}
-
-
 // const
 void test03()
 {
@@ -113,28 +72,8 @@ void test03()
   VERIFY( !(p_st_1 < p_st_2) );
 }
 
-// const&
-void test04()
-{
-  bool test __attribute__((unused)) = true;
-  const gnu_obj& obj1 = gnu_obj(5);
-  const std::pair<const char*, gnu_obj> p_sg_1("enlightenment", obj1);
-  const std::pair<const char*, gnu_obj> p_sg_2 = 
-    std::make_pair("enlightenment", obj1);
-  VERIFY( p_sg_1 == p_sg_2 );
-  VERIFY( !(p_sg_1 < p_sg_2) );
-
-  const gnu_t<long>& tmpl1 = gnu_t<long>(false);
-  const std::pair<gnu_t<long>, gnu_obj> p_st_1(tmpl1, obj1);
-  const std::pair<gnu_t<long>, gnu_obj> p_st_2 = std::make_pair(tmpl1, obj1);
-  VERIFY( p_st_1 == p_st_2 );
-  VERIFY( !(p_st_1 < p_st_2) );
-}
-
 int main() 
 { 
-  test01(); 
-  test02();
   test03();
-  test04();
+  return 0;
 }
diff --git a/libstdc++-v3/testsuite/20_util/pair/4.cc b/libstdc++-v3/testsuite/20_util/pair/4.cc
new file mode 100644 (file)
index 0000000..f6a1b56
--- /dev/null
@@ -0,0 +1,67 @@
+// 2001-06-18  Benjamin Kosnik  <bkoz@redhat.com>
+
+// Copyright (C) 2001, 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.
+
+// 20.2.2 Pairs
+
+#include <utility>
+#include <testsuite_hooks.h>
+
+class gnu_obj
+{
+  int i;
+public:
+  gnu_obj(int arg = 0): i(arg) { }
+  bool operator==(const gnu_obj& rhs) const { return i == rhs.i; }
+  bool operator<(const gnu_obj& rhs) const { return i < rhs.i; }
+};
+
+template<typename T>
+  struct gnu_t
+  {
+    bool b;
+  public:
+    gnu_t(bool arg = 0): b(arg) { }
+    bool operator==(const gnu_t& rhs) const { return b == rhs.b; }
+    bool operator<(const gnu_t& rhs) const { return int(b) < int(rhs.b); }
+  };
+
+// const&
+void test04()
+{
+  bool test __attribute__((unused)) = true;
+  const gnu_obj& obj1 = gnu_obj(5);
+  const std::pair<const char*, gnu_obj> p_sg_1("enlightenment", obj1);
+  const std::pair<const char*, gnu_obj> p_sg_2 = 
+    std::make_pair("enlightenment", obj1);
+  VERIFY( p_sg_1 == p_sg_2 );
+  VERIFY( !(p_sg_1 < p_sg_2) );
+
+  const gnu_t<long>& tmpl1 = gnu_t<long>(false);
+  const std::pair<gnu_t<long>, gnu_obj> p_st_1(tmpl1, obj1);
+  const std::pair<gnu_t<long>, gnu_obj> p_st_2 = std::make_pair(tmpl1, obj1);
+  VERIFY( p_st_1 == p_st_2 );
+  VERIFY( !(p_st_1 < p_st_2) );
+}
+
+int main() 
+{ 
+  test04();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/performance/ifstream_extract_float.cc b/libstdc++-v3/testsuite/performance/ifstream_extract_float.cc
new file mode 100644 (file)
index 0000000..5c6b421
--- /dev/null
@@ -0,0 +1,61 @@
+// 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.
+
+// 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.
+
+#include <fstream>
+#include <testsuite_performance.h>
+
+int main() 
+{
+  using namespace std;
+  using namespace __gnu_test;
+
+  time_counter time;
+  resource_counter resource;
+  const int iterations = 10000000;
+
+  {
+    ofstream out("tmp_perf_float.txt");
+    for (int i = 0; i < iterations; ++i)
+      {
+       float f = i * 3.14159265358979323846;
+       out << f << "\n";
+      }
+  }
+
+  {
+    ifstream in("tmp_perf_float.txt");
+    float f;
+    start_counters(time, resource);  
+    for (int j, i = 0; i < iterations; ++i)
+      in >> f;
+    stop_counters(time, resource);
+    report_performance(__FILE__, "", time, resource);
+  }
+
+  unlink("tmp_perf_int.txt");
+  return 0;
+};
index 6e51041..57e8c0e 100644 (file)
@@ -42,7 +42,7 @@ int main()
   start_counters(time, resource);
   for (int i = 0; i < iterations; ++i)
     {
-      float f = static_cast<float>(i);
+      float f = i * 3.14159265358979323846;
       out << f << "\n";
     }
   stop_counters(time, resource);