1 /* Verify that final methods are devirtualized */ 2 /* { dg-do compile { target c++11 } } */ 3 /* { dg-options "-fdump-tree-original" } */ 4 5 struct A final 6 { foofinal7 virtual void foo () 8 { 9 } 10 }; 11 12 struct B 13 { fooB14 virtual void foo () final 15 { 16 } 17 }; 18 fun(A * a,B * b)19void fun(A* a, B* b) 20 { 21 a->foo(); 22 b->foo(); 23 } 24 25 /* { dg-final { scan-tree-dump-times "A::foo" 2 "original" } } */ 26 /* { dg-final { scan-tree-dump-times "B::foo" 2 "original" } } */ 27