2 /* { dg-require-effective-target indirect_jumps } */
4 #define INLINE inline __attribute__((always_inline))
5 extern "C" void abort (void);
7 template<class> struct Foo {
8 inline bool isFalse() { return false; }
9 template <bool> void f1() {}
10 template <bool> INLINE void f2() { f1<false>(); }
11 template <bool> void f3() { f2<false>(); }
12 template <bool> INLINE void f4() { f3<false>(); }
18 template<class T> inline void Foo<T>::unused() {
22 static int counter = 0;
24 template<class T> int Foo<T>::exec2() {
25 static void* table[2] = { &&begin, &&end };
30 if (isFalse()) f1<false>();
35 template<class T> void Foo<T>::execute() {
37 while (r) { r = exec2(); }
40 template class Foo<int>;