/* PR target/107627 */ /* { dg-do compile { target ia32 } } */ /* { dg-options "-O2 -masm=att" } */ /* { dg-final { scan-assembler-not "\torl\t" } } */ static inline unsigned long long qux (unsigned int x, unsigned int y) { return ((unsigned long long) x << 32) | y; } static inline unsigned int corge (unsigned int x, unsigned int y, unsigned z) { return qux (x, y) >> (z % 32); } void garply (unsigned int *x, const unsigned int *y, unsigned z) { x[0] = corge (0xdeadbeefU, y[1], z); } void fred (unsigned int *x, const unsigned int *y, unsigned z) { x[0] = corge (y[0], 0xcafebabeU, z); }