blob: 8bd3b4434acc97d5bee691a66d502ad9c03cb453 [file] [log] [blame]
/* Check that btst/btstq other than a field starting at bit 0, is used. */
/* { dg-do compile } */
/* { dg-options "-O2" } */
/* { dg-final { scan-assembler-not "\tand" } } */
/* { dg-final { scan-assembler-not "\tcmp|\ttest" } } */
/* { dg-final { scan-assembler-times "\tbtstq" 3 } } */
/* { dg-final { scan-assembler-times "\tbtst " 3 } } */
void foo(void);
void f(int *a)
{
if ((*a & 32) != 0)
foo();
}
void g(short int *a)
{
if ((*a & 128) == 0)
foo();
}
void h(char *a)
{
if ((*a & 64) != 0)
foo();
}
void i(int *a, unsigned int n)
{
if ((*a & (1 << n)) != 0)
foo();
}
void j(short int *a, unsigned int n)
{
if ((*a & (1 << n)) == 0)
foo();
}
void k(char *a, unsigned int n)
{
if ((*a & (1 << n)) != 0)
foo();
}