http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55157
Bug #: 55157 Summary: Missing VRP Classification: Unclassified Product: gcc Version: 4.8.0 Status: UNCONFIRMED Severity: enhancement Priority: P3 Component: tree-optimization AssignedTo: unassig...@gcc.gnu.org ReportedBy: pins...@gcc.gnu.org Blocks: 55155 Testcase: void gg(void); int f(unsigned t) { unsigned g = t*16; if (g==0) return 1; gg(); gg(); gg(); gg(); gg(); gg(); if (g<=4) return 1; return 0; } In the end there should only be one check for t == 0. Yes this shows up in real code (well with the autovectorizer); See PR 55155