https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94877
Bug ID: 94877 Summary: Failure to simplify ~(x + 1) to -2 - x Product: gcc Version: 10.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: gabravier at gmail dot com Target Milestone: --- int f(int x) { return ~(x + 1); } With -O3, LLVM outputs this : f(int): # @f(int) mov eax, -2 sub eax, edi ret GCC outputs this : f(int): lea eax, [rdi+1] not eax ret `~x - 1` is already simplified to `-2 - x`, so optimizing this looks like it would make sense too.