123353Sdfr// { dg-do run } 223353Sdfrvoid *vp; 323353Sdfr 423353Sdfrclass silly { 523353Sdfrpublic: 623353Sdfr virtual int b() { return 1; } 723353Sdfr}; 823353Sdfrclass solly : silly { 923353Sdfrpublic: 1023353Sdfr virtual int b() { return 2; } 1123353Sdfr}; 1223353Sdfrclass thing { 1323353Sdfrpublic: 1423353Sdfr virtual int a() { return 3; } 1523353Sdfr}; 1623353Sdfrclass thong : public solly, public thing { 1723353Sdfrpublic: 1823353Sdfr virtual int a() { 1923353Sdfr if (this != vp) return 4; 2023353Sdfr else return 0; 2123353Sdfr } 2223353Sdfr}; 2323353Sdfr 2423353Sdfrtypedef int(thing::*ping)(); 2523353Sdfrping qq = &thing::a; 2623353Sdfr 2723353Sdfrint main() { 2823353Sdfr thong b; 2950476Speter vp = &b; 3023353Sdfr return (b.*qq)(); 3123353Sdfr} 32206622Suqs