view gcc/testsuite/g++.dg/opt/static3.C @ 158:494b0b89df80 default tip

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 18:13:55 +0900
parents 04ced10e8804
children
line wrap: on
line source

// { 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);
}