https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98026
Bug ID: 98026 Summary: optimization dependant on condition order Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: denis.campredon at gmail dot com Target Milestone: --- In all the following functions gcc should recognize that j can't be greater than 100, and link_error should not appear in assembly. Currently only f3 is optimized. ------------------- void link_error(); void f1(int i, int j) { if (j > i || i > 100) return; if (j > 100) link_error(); } void f2(int i, int j) { if (i > 100 || j > i) return; if (j > 100) link_error(); } void f3(int i, int j) { if (i > 100) return; if (j > i) return; if (j > 100) link_error(); } void f4(signed int i,unsigned int j) { if (i > 100) return; if (j > i) return; if (j > 100) link_error(); } ------------------