blob: 89132acb713a7efdf76d2a0cc6442f88ffcf9f87 [file]
/* { dg-do compile } */
/* { dg-options "-O2" } */
/* PR target/109657: (a ? -1 : 0) | b could be better */
/* Both functions should have the same assembly of:
cmp w1, 0
csinv w0, w0, wzr, eq
We should not get:
cmp w1, 0
csetm w1, ne
orr w0, w1, w0
*/
/* { dg-final { scan-assembler-times "csinv\tw\[0-9\]" 2 } } */
/* { dg-final { scan-assembler-not "csetm\tw\[0-9\]" } } */
unsigned b(unsigned a, unsigned b)
{
if(b)
return -1;
return a;
}
unsigned b1(unsigned a, unsigned b)
{
unsigned t = b ? -1 : 0;
return a | t;
}