Take the following code: int g(int i, int j) { int t = 0; if (i == j) t = 3; if (t != 5) return 0; else return 1; }
We should be able to in VRP find that t can never be in 5 as t should have the range [0,3] instead of changing the range to varying. We do optimize this in DOM via jump threading but we don't need jump threading here at all. More complex code can be shown which gives ranges instead of just values. -- Summary: VRP does not merge discontinuous ranges of PHIs Product: gcc Version: 4.1.0 Status: UNCONFIRMED Keywords: missed-optimization Severity: enhancement Priority: P2 Component: tree-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: pinskia at gcc dot gnu dot org CC: gcc-bugs at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23744