view gcc/testsuite/g++.dg/opt/static3.C @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
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);
}