mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-08 19:31:06 +08:00
re PR middle-end/42099 (Error in 64-bit division for 32-bit target)
./: PR middle-end/42099 * expmed.c (expand_divmod): Don't shift HOST_WIDE_INT value more than HOST_BITS_PER_WIDE_INT. testsuite/: PR middle-end/42099 * gcc.c-torture/execute/20091229-1.c: New test. From-SVN: r155516
This commit is contained in:
parent
53bc54ecc0
commit
f6c1336cbe
@ -1,3 +1,9 @@
|
||||
2009-12-29 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-29 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* config/i386/i386.c (ix86_expand_int_vcond): Reformat.
|
||||
|
@ -4194,7 +4194,8 @@ expand_divmod (int rem_flag, enum tree_code code, enum machine_mode mode,
|
||||
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,
|
||||
|
@ -1,3 +1,8 @@
|
||||
2009-12-29 Ian Lance Taylor <iant@google.com>
|
||||
|
||||
PR middle-end/42099
|
||||
* gcc.c-torture/execute/20091229-1.c: New test.
|
||||
|
||||
2009-12-29 Janus Weil <janus@gcc.gnu.org>
|
||||
|
||||
PR fortran/42517
|
||||
|
2
gcc/testsuite/gcc.c-torture/execute/20091229-1.c
Normal file
2
gcc/testsuite/gcc.c-torture/execute/20091229-1.c
Normal file
@ -0,0 +1,2 @@
|
||||
long long foo(long long v) { return v / -0x080000000LL; }
|
||||
void main() { if (foo(0x080000000LL) != -1) abort(); exit (0); }
|
Loading…
x
Reference in New Issue
Block a user