+++ /dev/null
-// { dg-do run { xfail *-*-* } }
-
-// Copyright 2002 Free Software Foundation
-// Contributed by Jason Merrill and Alexandre Oliva
-
-// Test zero-initialization of pointers to data members. Their NULL
-// value is represented with -1, not 0.
-
-#include <stdlib.h>
-
-struct A
-{
- int i;
-};
-
-int A::* gp;
-
-typedef int A::* iApm;
-
-iApm gp_zero = 0;
-iApm gp_dflt = iApm();
-iApm gp_cast = (iApm)0;
-iApm gp_func = iApm(0);
-iApm gp_stat = static_cast<iApm>(0);
-
-struct AD : A {};
-
-int AD::* gp_impl = gp_dflt;
-int AD::* gp_down = static_cast<int AD::*>(gp_stat);
-
-int A::* ga[2];
-
-// Test use in a simple struct.
-struct B
-{
- int A::* mp;
-};
-
-B gb;
-
-struct D;
-struct C;
-extern D gd;
-extern C gc;
-
-// Test that in a class with a constructor, the pointer to member is
-// zero-initialized until the constructor is run.
-struct C
-{
- int A::* mp;
- inline C ();
-};
-
-int fail;
-struct D
-{
- int count;
- inline D ();
-};
-
-C::C() : mp (&A::i) { gd.count++; }
-
-D::D() : count (0)
-{
- if (gc.mp != 0)
- abort ();
-}
-
-// The D must come first for this to work.
-D gd;
-C gc;
-
-int main()
-{
- static int A::* slp;
- static int A::* sla[2];
- static B slb;
-
- if (gp != 0 || slp != 0
- || gp_zero != 0 || gp_dflt != 0 || gp_cast != 0
- || gp_func != 0 || gp_stat != 0
- || gp_impl != 0 || gp_down != 0)
- abort ();
- if (ga[1] != 0 || sla[1] != 0)
- abort ();
- if (gb.mp != 0 || slb.mp != 0)
- abort ();
-}