1 // { dg-do compile { target c++11 } }
2 // { dg-options "-Wall" }
3 
4 #define A asm volatile ("" : : : "memory")
foo()5 void foo () throw () {}
6 extern void f1 (decltype (foo) *);	// { dg-bogus "mangled name" }
7 void f2 (decltype (foo) *);		// { dg-bogus "mangled name" }
8 extern void f3 (decltype (foo) *);	// { dg-warning "mangled name" "" { target c++14_down } }
9 void f4 (decltype (foo) *);		// { dg-warning "mangled name" "" { target c++14_down } }
f5(decltype (foo)*)10 void f5 (decltype (foo) *) { A; }	// { dg-warning "mangled name" "" { target c++14_down } }
f6(decltype (foo)*)11 static void f6 (decltype (foo) *) { A; }// { dg-bogus "mangled name" }
12 namespace N {
f7(decltype (foo)*)13 void f7 (decltype (foo) *) { A; }	// { dg-warning "mangled name" "" { target c++14_down } }
14 }
15 namespace {
f8(decltype (foo)*)16 void f8 (decltype (foo) *) { A; }	// { dg-bogus "mangled name" }
17 }
bar()18 void bar ()
19 {
20   f3 (foo);
21   f4 (foo);
22   f5 (foo);
23   f6 (foo);
24   N::f7 (foo);
25   f8 (foo);
26 }
27