blob: d047c4bc2acb5853d9efe65bedc63a61d76e1506 [file] [log] [blame]
/* { dg-do compile } */
/* { dg-options "-O2 -fdump-tree-optimized" } */
#if __SIZEOF_INT__ == 4
unsigned int foo(unsigned int a, unsigned int b)
{
return (a >> 31) * b;
}
int bar(int a, int b)
{
return -(a >> 31) * b;
}
int baz(int a, int b)
{
int c = a >> 31;
int d = -c;
return d * b;
}
unsigned int pin(int a, unsigned int b)
{
unsigned int t = a & 1;
return t * b;
}
#endif
#if __SIZEOF_LONG_LONG__ == 8
unsigned long long fool(unsigned long long a, unsigned long long b)
{
return (a >> 63) * b;
}
long long barl (long long a, long long b)
{
return -(a >> 63) * b;
}
long long bazl (long long a, long long b)
{
long long c = a >> 63;
long long d = -c;
return d * b;
}
unsigned long long pinl(long long a, unsigned long long b)
{
unsigned long long t = a & 1;
return t * b;
}
#endif
/* { dg-final { scan-assembler-not "imul" } } */