| /* { dg-do compile } */ |
| /* { dg-options "-O2 -fdump-ipa-whole-program" } */ |
| double foo (); |
| struct B |
| { |
| bool b1 () { return b3 (); } |
| void b2 (); |
| virtual bool b3 (); |
| }; |
| struct C |
| { |
| C () {} |
| bool |
| c1 (float x, float y) |
| { |
| if (x != c3 || y != c4) |
| c2.b2 (); |
| return c2.b1 (); |
| } |
| B c2; |
| float c3, c4; |
| }; |
| |
| void |
| bar () |
| { |
| static C c; |
| c.c1 (60, (int) foo ()); |
| } |
| /* We optimize out this call just after early passes. Unfortunately |
| this unreachable removal is not logged in dump file. */ |
| /* { dg-final { scan-ipa-dump-not "OBJ_TYPE_REF" "whole-program" } } */ |