blob: 4389f8c04608eed106d5803759b1be2a954d11c6 [file] [log] [blame]
/* APPLE LOCAL file 4382996 */
/* Verify that the result of a binary operator != 0 doesn't generate a
redundant move instruction. */
/* { dg-do compile { target arm*-*-darwin* } } */
/* { dg-options "-Os -marm" } */
/* { dg-skip-if "Not valid with -mthumb" { *-*-* } { "-mthumb" } { "" } } */
int test_plus (int a, int b) { return (a + b) != 0; }
int test_and (int a, int b) { return (a & b) != 0; }
int test_minus (int a, int b) { return (a - b) != 0; }
int test_mult (int a, int b) { return (a * b) != 0; }
int test_ior (int a, int b) { return (a | b) != 0; }
int test_xor (int a, int b) { return (a ^ b) != 0; }
int test_ashift (int a, int b) { return (a << b) != 0; }
int test_ashiftrt (int a, int b) { return (a >> b) != 0; }
unsigned int test_lshiftrt (unsigned int a, unsigned int b) { return (a >> b) != 0; }
/* { dg-final { scan-assembler-times "movne" 9 } } */
/* { dg-final { scan-assembler-not "moveq" } } */