1 // PR c++/53186
2 // { dg-do compile { target c++11 } }
3 // { dg-options "-fdump-tree-original" }
4
5 struct F1
6 {
7 virtual void operator()() final;
8 virtual operator int() final;
9 virtual int operator++() final;
10 };
11
12 struct F2 final
13 {
14 virtual void operator()();
15 virtual operator int();
16 virtual int operator++();
17 };
18
fooF1(F1 & a)19 void fooF1(F1& a) { a(); int m = a; ++a; }
fooF2(F2 & a)20 void fooF2(F2& a) { a(); int m = a; ++a; }
21
22 // { dg-final { scan-tree-dump-times "F1::operator\\(\\)" 1 "original" } }
23 // { dg-final { scan-tree-dump-times "F1::operator int" 1 "original" } }
24 // { dg-final { scan-tree-dump-times "F1::operator\\+\\+" 1 "original" } }
25 // { dg-final { scan-tree-dump-times "F2::operator\\(\\)" 1 "original" } }
26 // { dg-final { scan-tree-dump-times "F2::operator int" 1 "original" } }
27 // { dg-final { scan-tree-dump-times "F2::operator\\+\\+" 1 "original" } }
28