diff options
author | Jason Merrill <jason@gcc.gnu.org> | 1999-01-16 11:34:32 -0500 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 1999-01-16 11:34:32 -0500 |
commit | 9e3685d5f463193242bece7e381f467165adf66c (patch) | |
tree | 0b06473c6be625a394a50a3a05418f1191cae403 | |
parent | a7a7710d423cba8feb795c3e626df5ce4075cebb (diff) | |
download | gcc-9e3685d5f463193242bece7e381f467165adf66c.zip gcc-9e3685d5f463193242bece7e381f467165adf66c.tar.gz gcc-9e3685d5f463193242bece7e381f467165adf66c.tar.bz2 |
new
From-SVN: r24702
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.other/mutable1.C | 43 | ||||
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.pt/memtemp82.C | 13 |
2 files changed, 56 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.other/mutable1.C b/gcc/testsuite/g++.old-deja/g++.other/mutable1.C new file mode 100644 index 0000000..3fd0c3e --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.other/mutable1.C @@ -0,0 +1,43 @@ +// Copyright (C) 1999 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 14 Jan 1999 <nathan@acm.org> + +// 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; +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp82.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp82.C new file mode 100644 index 0000000..9abd390 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp82.C @@ -0,0 +1,13 @@ +// Build don't link: +// excess errors test - XFAIL *-*-* + +struct foo { + template<typename T> T bar() { return staticbar<T>( this ); } + template<typename T> static T staticbar( foo* ) { return 0; } +}; + +void f() +{ + foo t; + int k = t.bar<int>(); +} |