summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/opt/static3.C
blob: 4f8f7a9ba682f401930f11f46404fb19d8ecb6ba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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);
}