Consider extern void g (void); extern void bar (int);
int foo (int a) { int i; for (i = 1; i < 100; i++) { if (i) g (); } /* Force VRP to run. */ if (a) bar (a); } VRP does not remove the first "if" statement. -- Summary: VRP does not remove a conditional in a loop Product: gcc Version: unknown Status: UNCONFIRMED Keywords: missed-optimization Severity: enhancement Priority: P2 Component: tree-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: kazu at cs dot umass dot edu CC: dnovillo at redhat dot com,gcc-bugs at gcc dot gnu dot org,steven at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21458