blob: 1435a320334df5ebcb5bdd4d8ad6646a5373b590 [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" } */
/* { 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" } } */