f()
{
long l2;
unsigned short us;
unsigned long ul;
short s2;
ul = us = l2 = s2 = -1;
return ul;
}
main()
{
if (f()!=(unsigned short)-1)
abort();
exit(0);
}
f (x)
unsigned x;
{
return (unsigned) (((unsigned long long) x * 0xAAAAAAAB) >> 32) >> 1;
}
main ()
{
unsigned i;
for (i = 0; i < 10000; i++)
if (f (i) != i / 3)
abort ();
exi