https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101808
Bug ID: 101808 Summary: comparison0 < comparison1 should be transformed into comparison0` & comparison1; likewise for <= Product: gcc Version: 12.0 Status: UNCONFIRMED Keywords: missed-optimization Severity: enhancement Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: pinskia at gcc dot gnu.org Target Milestone: --- Take: bool f(int ai, int bi) { bool a = ai, b = bi; return a<b; } bool g(int ai, int bi) { bool a = ai, b = bi; return !a & b; } bool fe(int ai, int bi) { bool a = ai, b = bi; return a<=b; } bool ge(int ai, int bi) { bool a = ai, b = bi; return !a | b; } ---- CUT---- f and g should produce the same code fe and ge should too. So for aarch64, we should get cmp followed by a ccmp for all 4 functions.