gcc/ChangeLog:
[official-gcc.git] / gcc / testsuite / gcc.target / i386 / badshift.c
blobddbf6130b8ea1a8652f40f28cc2513d7b3a315be
1 /* PR rtl-optimization/20532 */
3 /* { dg-do run } */
4 /* { dg-options "-m32 -march=i386 -O1" } */
6 /* We used to optimize the DImode shift-by-32 to zero because in combine
7 we turned:
9 (v << 31) * (v << 31)
11 into:
13 (v * (((HOST_WIDE_INT)1 << 31) + ((HOST_WIDE_INT)1 << 31)))
15 With a 32-bit HOST_WIDE_INT, the coefficient overflowed to zero. */
17 unsigned long long int badshift(unsigned long long int v)
19 return v << 31 << 1;
22 extern void abort ();
24 int main() {
25 if (badshift (1) == 0)
26 abort ();
27 return 0;