/* PR rtl-optimization/62146 */ /* { dg-do compile } */ /* { dg-options "-O2 " } */ class F { public: virtual ~ F (); }; template < class CL > class G:public F { int *member_; public: G ( int *b): member_ (0) { } }; class D { public: template < class CL > void RegisterNonTagCallback (int, void (CL:: *p3) ()) { InternalRegisterNonTag (p3 ? new G < CL > ( 0) : 0); } void InternalRegisterNonTag (F *); }; void fn1 (); class C1 { void foo(); class TokenType { public: void AddToken () { } }; C1::TokenType bar_t; }; D a; void C1::foo() { if (&bar_t) fn1 (); for (int i = 0; i < sizeof 0; ++i) a.RegisterNonTagCallback (0, &TokenType::AddToken); } /* { dg-final { scan-assembler-not "mov.*_ZN2C19TokenType8AddTokenEv, .\\\(" } } */