https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114003
Bug ID: 114003 Summary: Missing MIN/MAX 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 f(short a, short b) { if (a > b) { int aa = a; int bb = b; bb++; int t = aa > bb ? aa : bb; return t; } return 0; } ``` This should be optimized to just: ``` int f0(short a, short b) { if (a > b) { return a; } return 0; } ``` As if a is equal b+1 (that is the only case where a>b matters), then `extend<a>` and `extend<b>+1` are still equal.