diff options
Diffstat (limited to 'gcc/testsuite/g++.old-deja/g++.bugs/900520_06.C')
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.bugs/900520_06.C | 78 |
1 files changed, 0 insertions, 78 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.bugs/900520_06.C b/gcc/testsuite/g++.old-deja/g++.bugs/900520_06.C deleted file mode 100644 index aa4ec9a320e..00000000000 --- a/gcc/testsuite/g++.old-deja/g++.bugs/900520_06.C +++ /dev/null @@ -1,78 +0,0 @@ -// g++ 1.37.1 bug 900520_06 - -// When an object of a class type is passed into a formal parameter of the -// same class type (in a function call) the language definition calls for -// this action to be treated like any other form of an initialization of -// an object of the given class type. - -// g++ fails however to invoke the (compiler-supplied) copy constructor for -// the class type when a parameter of the class type is passed as an -// actual parameter. - -// This causes the following program to exit with a non-zero exit status. - -// cfront 2.0 passes this test. - -int base_copy_ctor_called = 0; -int member_copy_ctor_called = 0; - -struct struct_0 { - struct_0 (); - struct_0 (const struct_0&); -}; - -struct_0::struct_0 () -{ -} - -struct_0::struct_0 (const struct_0&) -{ - base_copy_ctor_called++; -} - -struct struct_1 { - struct_1 (); - struct_1 (const struct_1&); -}; - -struct_1::struct_1 () -{ -} - -struct_1::struct_1 (const struct_1&) -{ - member_copy_ctor_called++; -} - -struct struct_2 : public struct_0 { - struct_2 (); - struct_1 struct_1_member; -#ifdef MAKE_COPY_CONSTRUCTOR_EXPLICIT - struct_2 (const struct_2&); -#endif -}; - -struct_2::struct_2 () -{ -} - -#ifdef MAKE_COPY_CONSTRUCTOR_EXPLICIT -struct_2::struct_2 (const struct_2& arg) : - struct_0 ((struct_0&)arg), - struct_1_member (arg.struct_1_member) -{ -} -#endif - -void take_struct_2 (struct_2 arg) -{ -} - -int test () -{ - struct_2 struct_2_object0; - take_struct_2 (struct_2_object0); - return (base_copy_ctor_called != 1 || member_copy_ctor_called != 1); -} - -int main () { return test (); } |