https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109869
Bug ID: 109869 Summary: comparing SCHAR_MIN and SCHAR_MAX but with widden type could be optimized better 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 (for most targets): ``` bool f1 (signed char i) { unsigned long long _1 = i; bool _5 = _1 == 127; bool _6 = _1 == 18446744073709551488ull; return _5 | _6; } bool f2 (signed char i) { return i == -128 || i == 127; __SIZE_TYPE__ _1 = i; } ``` These two functions should produce the same code. I noticed this while looking at PR 77899 .