// devirt.cc /* { dg-options "-O2 -fdump-ipa-profile_estimate -fdump-tree-optimized" } */ class A { public: virtual int foo() { return 1; } int i; }; class B : public A { public: virtual int foo() { return 2; } int b; } ; int main() { int i; A* ap = 0; for (i = 0; i < 1000000; i++) { if (i%7==0) { ap = new A(); } else ap = new B(); ap->foo(); delete ap; } return 0; } /* { dg-final-use { scan-ipa-dump "Indirect call -> direct call" "profile_estimate" } } */ /* { dg-final-use { scan-tree-dump-not "OBJ_TYPE_REF" "optimized" } } */