The following 2 functions should be compiled to the same assembly. This is one of Briggs' compiler benchmarks.
void vnum_test10(int *data) { int i = data[0]; int m = i + 1; int j = data[1]; int n = j + 1; data[2] = m + n; if (i == j) data[3] = (m - n) * 21; } void vnum_result10(int *data) { int i = data[0]; int m = i + 1; int j = data[1]; int n = j + 1; data[2] = m + n; if (i == j) data[3] = 0; } -- Summary: missed value numbering optimization (conditional-based assertions) Product: gcc Version: 4.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: dann at godzilla dot ics dot uci dot edu GCC target triplet: i686-pc-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30099