https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107991
Bug ID: 107991 Summary: Extra mov instructions with ternary on x86 Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: rtl-optimization Assignee: unassigned at gcc dot gnu.org Reporter: denis.campredon at gmail dot com Target Milestone: --- Compiled with -O2 on x86, gcc trunk produces 3 mov instructions for each of the following functions: int foo(bool b, int i, int j) { return b ? i - j : i; } int bar(bool b, int i, int j) { return i + (b ? -j : 0); } int baz(bool b, int i, int j) { return i - (b ? j : 0); } ------------- Whearas with gcc 7.5, only 1 mov was produced for foo and bar, and two for baz