gcc/:
PR middle-end/42099
* expmed.c (expand_divmod): Don't shift HOST_WIDE_INT value more
than HOST_BITS_PER_WIDE_INT.
gcc/testsuite/:
PR middle-end/42099
* gcc.c-torture/execute/
20091229-1.c: New test.
From-SVN: r155525
+2009-12-30 Ian Lance Taylor <iant@google.com>
+
+ PR middle-end/42099
+ * expmed.c (expand_divmod): Don't shift HOST_WIDE_INT value more
+ than HOST_BITS_PER_WIDE_INT.
+
2009-12-30 Uros Bizjak <ubizjak@gmail.com>
PR target/42549
else if (d == -1)
quotient = expand_unop (compute_mode, neg_optab, op0,
tquotient, 0);
- else if (abs_d == (unsigned HOST_WIDE_INT) 1 << (size - 1))
+ else if (HOST_BITS_PER_WIDE_INT >= size
+ && abs_d == (unsigned HOST_WIDE_INT) 1 << (size - 1))
{
/* This case is not handled correctly below. */
quotient = emit_store_flag (tquotient, EQ, op0, op1,
+2009-12-30 Ian Lance Taylor <iant@google.com>
+
+ PR middle-end/42099
+ * gcc.c-torture/execute/20091229-1.c: New test.
+
2009-12-30 Uros Bizjak <ubizjak@gmail.com>
PR target/42549
--- /dev/null
+long long foo(long long v) { return v / -0x080000000LL; }
+void main() { if (foo(0x080000000LL) != -1) abort(); exit (0); }