https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114547
Bug ID: 114547 Summary: missed-optimization: use sign flag Product: gcc Version: 14.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: middle-end Assignee: unassigned at gcc dot gnu.org Reporter: goon.pri.low at gmail dot com Target Milestone: --- Example functions int s(int *v, int n) { *v -= n; return *v < 0; } int ns(int *v, int n) { *v -= n; return *v >= 0; } Generated assembly s: mov eax, DWORD PTR [rdi] sub eax, esi mov DWORD PTR [rdi], eax shr eax, 31 ret ns: mov eax, DWORD PTR [rdi] sub eax, esi mov DWORD PTR [rdi], eax not eax shr eax, 31 ret Optimal assembly s: xor eax, eax sub DWORD PTR [rdi], esi sets al ret ns: xor eax, eax sub DWORD PTR [rdi], esi setns al ret