diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 2d088b68b5e806a53fe85b3f7aac87925103c5af..0fcc366c937cfb488bcee804c340105311795503 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,12 @@ +2004-04-05 Paul Brook <paul@codesourcery.com> + + PR2123 + * g++.gd/expr/anew1.C: XFAIL and make reproducible. Call abort on + failure and exit(0) on success. + * g++.gd/expr/anew2.C: Ditto. + * g++.gd/expr/anew3.C: Ditto. + * g++.gd/expr/anew4.C: Ditto. + 2004-04-05 Nathan Sidwell <nathan@codesourcery.com> PR c++/3518 diff --git a/gcc/testsuite/g++.dg/expr/anew1.C b/gcc/testsuite/g++.dg/expr/anew1.C index a14408ace0ab23b2f2197cb5c010d3f458c9be8d..9e0d0ec601f9512c50426152307fc9c6cb9243f1 100644 --- a/gcc/testsuite/g++.dg/expr/anew1.C +++ b/gcc/testsuite/g++.dg/expr/anew1.C @@ -1,12 +1,20 @@ -// { dg-do run } +// { dg-do run { xfail *-*-* } } +// XFAILed until PR2123 is fixed // PR 11228: array operator new, with zero-initialization and a variable sized array. // Regression test for PR // Author: Matt Austern <austern@apple.com> +#include <new> +#include <stdlib.h> +#include <string.h> + int* allocate(int n) { - return new int[n](); + void *p; + p = malloc(n * sizeof (int)); + memset (p, 0xff, n * sizeof(int)); + return new (p) int[n](); } int main() @@ -15,6 +23,6 @@ int main() int* p = allocate(n); for (int i = 0; i < n; ++i) if (p[i] != 0) - return 1; - return 0; + abort (); + exit (0); } diff --git a/gcc/testsuite/g++.dg/expr/anew2.C b/gcc/testsuite/g++.dg/expr/anew2.C index b8681897577b0cf5113a23f1166a38306393b0b9..aa11eef149ca50057f8038bdc6f5bca0760f1264 100644 --- a/gcc/testsuite/g++.dg/expr/anew2.C +++ b/gcc/testsuite/g++.dg/expr/anew2.C @@ -1,12 +1,20 @@ -// { dg-do run } +// { dg-do run { xfail *-*-* } } +// XFAILed until PR2123 is fixed // PR 11228: array operator new, with zero-initialization and a variable sized array. // Regression test for PR // Author: Matt Austern <austern@apple.com> +#include <new> +#include <stdlib.h> +#include <string.h> + double* allocate(int n) { - return new double[n](); + void *p; + p = malloc(n * sizeof (double)); + memset (p, 0xff, n * sizeof(double)); + return new (p) double[n](); } int main() @@ -15,6 +23,6 @@ int main() double* p = allocate(n); for (int i = 0; i < n; ++i) if (p[i] != 0.0) - return 1; - return 0; + abort (); + exit (0); } diff --git a/gcc/testsuite/g++.dg/expr/anew3.C b/gcc/testsuite/g++.dg/expr/anew3.C index 3223546d4c8da8f780f76b3a964c847e8aa7c04b..c8ab44183ca5fa0a84347251b82de43719e7cfcf 100644 --- a/gcc/testsuite/g++.dg/expr/anew3.C +++ b/gcc/testsuite/g++.dg/expr/anew3.C @@ -1,8 +1,13 @@ -// { dg-do run } +// { dg-do run { xfail *-*-* } } +// XFAILed until PR2123 is fixed // PR 11228: array operator new, with zero-initialization and a variable sized array. // Regression test for PR // Author: Matt Austern <austern@apple.com> +#include <new> +#include <stdlib.h> +#include <string.h> + struct X { int a; @@ -11,7 +16,10 @@ struct X X* allocate(int n) { - return new X[n](); + void *p; + p = malloc(n * sizeof (X)); + memset (p, 0xff, n * sizeof(X)); + return new (p) X[n](); } int main() @@ -20,6 +28,6 @@ int main() X* p = allocate(n); for (int i = 0; i < n; ++i) if (p[i].a != 0 || p[i].b != 0.0) - return 1; - return 0; + abort (); + exit (0); } diff --git a/gcc/testsuite/g++.dg/expr/anew4.C b/gcc/testsuite/g++.dg/expr/anew4.C index 8999ffb53c6d7162f2b5f597d1697ea9c8e28953..d86d52514121768447eda7b542a0fe30c612ed87 100644 --- a/gcc/testsuite/g++.dg/expr/anew4.C +++ b/gcc/testsuite/g++.dg/expr/anew4.C @@ -1,8 +1,13 @@ -// { dg-do run } +// { dg-do run { xfail *-*-* } } +// XFAILed until PR2123 is fixed // PR 11228: array operator new, with zero-initialization and a variable sized array. // Regression test for PR // Author: Matt Austern <austern@apple.com> +#include <new> +#include <stdlib.h> +#include <string.h> + struct B { B(); @@ -23,7 +28,10 @@ struct D : public B D* allocate(int n) { - return new D[n](); + void *p; + p = malloc(n * sizeof (D)); + memset (p, 0xff, n * sizeof(D)); + return new (p) D[n](); } int main() @@ -32,6 +40,6 @@ int main() D* p = allocate(n); for (int i = 0; i < n; ++i) if (p[i].n != 137 || p[i].x != 0) - return 1; - return 0; + abort (); + exit (0); }