gcc/ 2011-10-30 Mikael Pettersson PR middle-end/50708 * double-int.c (rshift_double): Avoid infinite recursion with lshift_double when negating count would overflow. --- gcc-4.6.2/gcc/double-int.c.~1~ 2010-11-30 17:36:19.000000000 +0100 +++ gcc-4.6.2/gcc/double-int.c 2011-10-30 17:31:30.000000000 +0100 @@ -264,8 +264,14 @@ rshift_double (unsigned HOST_WIDE_INT l1 if (count < 0) { - lshift_double (l1, h1, -count, prec, lv, hv, arith); - return; + if (count == INTTYPE_MINIMUM (HOST_WIDE_INT)) + /* Avoid infinite recursion with lshift_double. */ + count = 2 * HOST_BITS_PER_WIDE_INT; + else + { + lshift_double (l1, h1, -count, prec, lv, hv, arith); + return; + } } signmask = (arith