/* { dg-do compile } */ /* { dg-require-effective-target int32plus } */ /* { dg-options "-fdump-tree-gimple" } */ int f (int a) { return (a << 31) << 6; } unsigned int g (unsigned int a) { return (a >> 7) >> 25; } int h (int b) { return (b >> 30) >> 30; } long long j (long long c) { return (c >> 35) << 35; } /* { dg-final { scan-tree-dump-times "= 0" 2 "gimple" } } */ /* { dg-final { scan-tree-dump "b >> 31" "gimple" } } */ /* { dg-final { scan-tree-dump "c & -(34359738368|0x800000000)" "gimple" } } */ /* { dg-final { cleanup-tree-dump "gimple" } } */