]> oss.titaniummirror.com Git - msp430-gcc.git/blobdiff - gcc/testsuite/g++.old-deja/g++.martin/new1.C
Imported gcc-4.4.3
[msp430-gcc.git] / gcc / testsuite / g++.old-deja / g++.martin / new1.C
diff --git a/gcc/testsuite/g++.old-deja/g++.martin/new1.C b/gcc/testsuite/g++.old-deja/g++.martin/new1.C
deleted file mode 100644 (file)
index 9e37be8..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-//Lifetime of temporaries: 
-//egcs 2.92 performs cleanup for temporaries inside new expressions
-//after the new is complete, not at the end of the full expression.
-
-#include <new>
-#include <cstdlib>
-#include <cstdio>
-
-bool new_throws;
-bool ctor_throws;
-
-int new_done;
-int ctor_done;
-int func_done;
-int dtor_done;
-int delete_done;
-
-int count;
-
-void init()
-{
-  new_throws = ctor_throws = false;
-  new_done = ctor_done = func_done = dtor_done = delete_done = count = 0;
-}
-
-struct line_error{
-  int line;
-  line_error(int i):line(i){}
-};
-
-#define CHECK(cond)  if(!(cond))throw line_error(__LINE__);
-
-struct A{
-  A(int){
-    ctor_done = ++count;
-    if(ctor_throws)
-      throw 1;
-  }
-  A(const A&){
-    CHECK(false); //no copy constructors in this code
-  }
-  ~A(){
-    dtor_done = ++count;
-  }
-  A* addr(){return this;}
-};
-
-struct B{
-  B(A*){}
-  void* operator new(size_t s){
-    new_done = ++count;
-    if(new_throws)
-      throw 1;
-    return malloc(s);
-  }
-  void operator delete(void *){
-    delete_done = ++count;
-  }
-};
-
-void func(B* )
-{
-  func_done = ++count;
-}
-
-void test1()
-{
-  init();
-  try{
-    func(new B(A(10).addr()));
-  }catch(int){
-  }
-  CHECK(new_done==1);
-  CHECK(ctor_done==2);
-  CHECK(func_done==3);
-  CHECK(dtor_done==4);
-  CHECK(delete_done==0);
-}
-
-void test2()
-{
-  init();
-  new_throws = true;
-  try{
-    func(new B(A(10).addr()));
-  }catch(int){
-  }
-  CHECK(new_done==1);
-  CHECK(ctor_done==0);
-  CHECK(func_done==0);
-  CHECK(dtor_done==0);
-  CHECK(delete_done==0);
-}
-
-void test3()
-{
-  init();
-  ctor_throws = true;
-  try{
-    func(new B(A(10).addr()));
-  }catch(int){
-  }
-  CHECK(new_done==1);
-  CHECK(ctor_done==2);
-  CHECK(func_done==0);
-  CHECK(dtor_done==0);
-  CHECK(delete_done==3);
-}
-
-int main()
-{
-  try{
-    test1();
-    test2();
-    test3();
-  }catch(line_error e){
-    printf("Got error in line %d\n",e.line);
-    return 1;
-  }
-  return 0;
-}