URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [gnu-old/] [gcc-4.2.2/] [gcc/] [testsuite/] [g++.dg/] [init/] [pm1.C] - Rev 816
Compare with Previous | Blame | View Log
// { dg-do run }// 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 ();}
