/* { dg-do compile } */ /* { dg-options "-O2" } */ unsigned int test_0(const void *addr) { unsigned int n = (unsigned int)addr; const unsigned int *a = (const unsigned int*)(n & ~3); n = (n & 3) * 8; return (a[0] >> n) | (a[1] << (32 - n)); } unsigned int test_1(unsigned int a, unsigned int b) { return (a >> 16) + (b << 16); } /* { dg-final { scan-assembler-times "src" 2 } } */