Commit 67c55b22 by Paul Brook Committed by Paul Brook

re PR c++/2123 (Array initializer)

	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.

From-SVN: r80440
parent 268d3b18
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> 2004-04-05 Nathan Sidwell <nathan@codesourcery.com>
PR c++/3518 PR c++/3518
......
// { 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. // PR 11228: array operator new, with zero-initialization and a variable sized array.
// Regression test for PR // Regression test for PR
// Author: Matt Austern <austern@apple.com> // Author: Matt Austern <austern@apple.com>
#include <new>
#include <stdlib.h>
#include <string.h>
int* allocate(int n) 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() int main()
...@@ -15,6 +23,6 @@ int main() ...@@ -15,6 +23,6 @@ int main()
int* p = allocate(n); int* p = allocate(n);
for (int i = 0; i < n; ++i) for (int i = 0; i < n; ++i)
if (p[i] != 0) if (p[i] != 0)
return 1; abort ();
return 0; exit (0);
} }
// { 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. // PR 11228: array operator new, with zero-initialization and a variable sized array.
// Regression test for PR // Regression test for PR
// Author: Matt Austern <austern@apple.com> // Author: Matt Austern <austern@apple.com>
#include <new>
#include <stdlib.h>
#include <string.h>
double* allocate(int n) 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() int main()
...@@ -15,6 +23,6 @@ int main() ...@@ -15,6 +23,6 @@ int main()
double* p = allocate(n); double* p = allocate(n);
for (int i = 0; i < n; ++i) for (int i = 0; i < n; ++i)
if (p[i] != 0.0) if (p[i] != 0.0)
return 1; abort ();
return 0; exit (0);
} }
// { 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. // PR 11228: array operator new, with zero-initialization and a variable sized array.
// Regression test for PR // Regression test for PR
// Author: Matt Austern <austern@apple.com> // Author: Matt Austern <austern@apple.com>
#include <new>
#include <stdlib.h>
#include <string.h>
struct X struct X
{ {
int a; int a;
...@@ -11,7 +16,10 @@ struct X ...@@ -11,7 +16,10 @@ struct X
X* allocate(int n) 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() int main()
...@@ -20,6 +28,6 @@ int main() ...@@ -20,6 +28,6 @@ int main()
X* p = allocate(n); X* p = allocate(n);
for (int i = 0; i < n; ++i) for (int i = 0; i < n; ++i)
if (p[i].a != 0 || p[i].b != 0.0) if (p[i].a != 0 || p[i].b != 0.0)
return 1; abort ();
return 0; exit (0);
} }
// { 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. // PR 11228: array operator new, with zero-initialization and a variable sized array.
// Regression test for PR // Regression test for PR
// Author: Matt Austern <austern@apple.com> // Author: Matt Austern <austern@apple.com>
#include <new>
#include <stdlib.h>
#include <string.h>
struct B struct B
{ {
B(); B();
...@@ -23,7 +28,10 @@ struct D : public B ...@@ -23,7 +28,10 @@ struct D : public B
D* allocate(int n) 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() int main()
...@@ -32,6 +40,6 @@ int main() ...@@ -32,6 +40,6 @@ int main()
D* p = allocate(n); D* p = allocate(n);
for (int i = 0; i < n; ++i) for (int i = 0; i < n; ++i)
if (p[i].n != 137 || p[i].x != 0) if (p[i].n != 137 || p[i].x != 0)
return 1; abort ();
return 0; exit (0);
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment