/* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-optimized -fno-ipa-reference" } */ #include namespace { template class fib { public: static const unsigned long long value = fib::value + fib::value; }; template <> class fib<0> { public: static const unsigned long long value = 1; }; template <> class fib<1> { public: static const unsigned long long value = 1; }; template inline unsigned long long fibconst() { return fibconst() + fibconst(); } template <> inline unsigned long long fibconst<0>() { return 1ull; } template <> inline unsigned long long fibconst<1>() { return 1ull; } template <> inline unsigned long long fibconst<2>() { return 2ull; } } int main() { ::std::cerr << "fib<90>::value == " << fib<90>::value << "\n"; ::std::cerr << "fibcst<90>() == " << fibconst<90>() << "\n"; } // { dg-final { scan-tree-dump-not "fibconst" "optimized" } } // { dg-final { cleanup-tree-dump "optimized" } }