diff options
Diffstat (limited to 'gcc/testsuite/g++.dg/opt/static3.C')
-rw-r--r-- | gcc/testsuite/g++.dg/opt/static3.C | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/opt/static3.C b/gcc/testsuite/g++.dg/opt/static3.C new file mode 100644 index 000000000..4f8f7a9ba --- /dev/null +++ b/gcc/testsuite/g++.dg/opt/static3.C @@ -0,0 +1,36 @@ +// { dg-do link } +// { dg-options "-O2" } + +class Foo { +public: + // No out-of-class definition is provided for these class members. + // That's technically a violation of the standard, but no diagnostic + // is required, and, as a QOI issue, we should optimize away all + // references. + static const int erf = 0; + static const int foo = 1; +}; + +int one() +{ + return Foo::foo; +} + +int two() +{ + return Foo::foo + Foo::erf; +} + +int three(int x) +{ + return x ? Foo::erf : Foo::foo; +} + +int i; + +int main () +{ + one (); + two (); + three (i); +} |