// { dg-do run } // Copyright (C) 1999 Free Software Foundation, Inc. // Contributed by Nathan Sidwell 14 Jan 1999 // Make sure objects with mutable members are never placed in a read only // section. // All these are POD structs, and hence do not need ctors struct A { mutable int i; }; struct B { A a; }; struct C { A a[1]; }; struct D { static A const a; }; // all these are static consts and hence naively suitable for a read only // section. But they contain a mutable, so must be in a writable section. static int const i = 0; static A const a = {0}; static B const b = {{0}}; static C const c = {{{0}}}; static A const aa[] = {{0}}; static B const bb[] = {{{0}}}; static C const cc[] = {{{{0}}}}; A const D::a = {0}; int main() { a.i = 05; b.a.i = 05; c.a[0].i = 05; aa[0].i = 05; bb[0].a.i = 05; cc[0].a[0].i = 05; D::a.i = 05; if(!a.i) return 1; if(!b.a.i) return 1; if(!c.a[0].i) return 1; if(!aa[0].i) return 1; if(!bb[0].a.i) return 1; if(!cc[0].a[0].i) return 1; if(!D::a.i) return 1; return 0; }