https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113380
Bug ID: 113380 Summary: `(a CMP CST) | (a*a CMP CST1)` is not optimized as decent as with `||` Product: gcc Version: 14.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: ``` int foo(int a) { return (a < 4) | (a * a > 7); } int bar(int a) { return (a < 4) | (a * a < 7); } int baz(int a) { return (a > -4) | (a * a > 7); } int qux(int a) { return (a > -4) | (a * a < 7); } ``` This is not as optimized as: ``` int foo(int a) { return (a < 4) || (a * a > 7); } int bar(int a) { return (a < 4) || (a * a < 7); } int baz(int a) { return (a > -4) || (a * a > 7); } int qux(int a) { return (a > -4) || (a * a < 7); } ```