1 // { dg-additional-options "-dA -std=gnu++17 -gdwarf-4 -O1 -fdebug-types-section" } 2 // reject .pseudo label, but "label" is ok. 3 // { dg-final { scan-assembler-not "\[^\"\]_ZN3Foo4mfunEv" } } 4 // undefined ref to _ZN3Foo4mfunEv 5 6 struct Foo { mfunFoo7 void mfun () {} 8 }; 9 10 struct A { static constexpr bool Value = false; }; 11 12 template <bool> struct B { typedef int Type; }; 13 14 class Arg 15 { 16 template <typename Unused> struct Local : A {}; 17 18 public: 19 template <typename Init, typename = typename B<Local<Init>::Value>::Type> Arg(Init)20 Arg (Init) {} 21 }; 22 23 class Lambda { 24 static constexpr int Unused = 0; 25 26 public: 27 Lambda (Arg); 28 }; 29 30 // Generated ref to Foo::mfun in the type die of an instantiation of this 31 template <void (Foo::*unused)()> struct Callable {}; 32 33 class I { I()34 I() : lamb ([this] {}) {} 35 36 Lambda lamb; 37 38 Callable<&Foo::mfun> bm; 39 }; 40