diff options
Diffstat (limited to 'gcc/testsuite/g++.old-deja/g++.brendan/new2.C')
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.brendan/new2.C | 67 |
1 files changed, 0 insertions, 67 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/new2.C b/gcc/testsuite/g++.old-deja/g++.brendan/new2.C deleted file mode 100644 index 64b3d51e08a..00000000000 --- a/gcc/testsuite/g++.old-deja/g++.brendan/new2.C +++ /dev/null @@ -1,67 +0,0 @@ -// GROUPS passed operator-new -// Check that if there is a user defined class-specific operator -// new for a given class, that operator is invoked when a new -// object of the class is requested, regardless of whether or not -// there is also a constructor for the given class, and regardless -// of whether or not the constructor for the given class is defined -// before or after the new operator is even declared. - -extern "C" void printf (char *, ...); - -typedef __SIZE_TYPE__ size_t; - -struct base { - int i; - - base () - { - i = 7; - } - - void * operator new (size_t size); - void operator delete (void*); -}; - -class derived : public base { - int j; -}; - -int new_call_count = 0; -int expected_size = 0; -int errors = 0; - -int main () -{ - base* base_ptr; - derived* derived_ptr; - - expected_size = 4; - base_ptr = new base; - expected_size = 8; - derived_ptr = new derived (); - - if ((new_call_count != 2) || (errors != 0)) - printf ("FAIL\n"); - else - printf ("PASS\n"); - - return 0; -} - -char allocation_space[1000]; -char* allocation_ptr = allocation_space; - -void base::operator delete (void* p) -{ -} - -void *base::operator new (size_t size) -{ - char* return_value = allocation_ptr; - - new_call_count++; - if (size != expected_size) - errors++; - allocation_ptr = allocation_ptr + size; - return (void*) return_value; -} |