http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52157
Bug #: 52157 Summary: Missing FRE because of sign change Classification: Unclassified Product: gcc Version: 4.7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization AssignedTo: unassig...@gcc.gnu.org ReportedBy: pins...@gcc.gnu.org Take: int f(int a) { unsigned int t = a; t-=100; if (t <= 200 ) return a-100; else return t; } --- CUT --- We should able to simplify this function just to: int f(int a) { unsigned int t = a; t-=100; return t; }