// { dg-do compile { target c++11 } } // { dg-options "-Wall" } #define A asm volatile ("" : : : "memory") void foo () throw () {} extern void f1 (decltype (foo) *); // { dg-bogus "mangled name" } void f2 (decltype (foo) *); // { dg-bogus "mangled name" } extern void f3 (decltype (foo) *); // { dg-warning "mangled name" "" { target c++14_down } } void f4 (decltype (foo) *); // { dg-warning "mangled name" "" { target c++14_down } } void f5 (decltype (foo) *) { A; } // { dg-warning "mangled name" "" { target c++14_down } } static void f6 (decltype (foo) *) { A; }// { dg-bogus "mangled name" } namespace N { void f7 (decltype (foo) *) { A; } // { dg-warning "mangled name" "" { target c++14_down } } } namespace { void f8 (decltype (foo) *) { A; } // { dg-bogus "mangled name" } } void bar () { f3 (foo); f4 (foo); f5 (foo); f6 (foo); N::f7 (foo); f8 (foo); }