https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71336

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Last reconfirmed|2021-07-19 00:00:00         |2023-4-9

--- Comment #9 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Take:
```
int test(int a) {
    return a & 1 ? 7 : 3;
}
int test1(int a) {
    int t = (a & 1) ? 4 : 0;
    return t+3;
}
int test2(int a) {
  int t = a & 1;
    t *= 4;
    return t+3;
}
```
these 3 all produce different code on x86_64. test2 produces the best though.
For aarch64, test1/test2 produce the same decent code; the and/shift has been
merged. for riscv, test1/test2 produce the same decent code too, 3 instructions
and no branches.

Reply via email to