* gcc.dg/float-range-3.c: Use "dg-do compile" dejagnu directive
[official-gcc/alias-decl.git] / gcc / testsuite / g++.dg / tree-ssa / pr14703.C
blob58705277ec553f220a3ca30f18ae55356a3f7b07
1 /* { dg-do compile } */
2 /* { dg-options "-O2 -fdump-tree-optimized -fno-ipa-reference" } */
3 #include <iostream>
5 namespace {
6 template <unsigned long long L> class fib {
7  public:
8    static const unsigned long long value = fib<L - 1>::value + fib<L - 2>::value;
9 };
11 template <> class fib<0> {
12  public:
13    static const unsigned long long value = 1;
16 template <> class fib<1> {
17  public:
18    static const unsigned long long value = 1;
21 template<unsigned long long L> inline unsigned long long fibconst()
23    return fibconst<L - 1>() + fibconst<L - 2>();
26 template <> inline unsigned long long fibconst<0>()
28    return 1ull;
31 template <> inline unsigned long long fibconst<1>()
33    return 1ull;
36 template <> inline unsigned long long fibconst<2>()
38    return 2ull;
43 int main()
45    ::std::cerr << "fib<90>::value == " << fib<90>::value << "\n";
46    ::std::cerr << "fibcst<90>() == " << fibconst<90>() << "\n";
48 // { dg-final { scan-tree-dump-not "fibconst" "optimized" } }
49 // { dg-final { cleanup-tree-dump "optimized" } }