diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1995-06-08 18:58:06 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1995-06-08 18:58:06 -0400 |
commit | f737b1326e7bd0c786c1d3a49b22e7a2feff6c11 (patch) | |
tree | 55e2ccfd8b1e05ed5cd8c486d7e3028ca25a5a3a /gcc/expmed.c | |
parent | cd5b346969cbe1799f10575533ace379cdb75652 (diff) | |
download | gcc-f737b1326e7bd0c786c1d3a49b22e7a2feff6c11.zip gcc-f737b1326e7bd0c786c1d3a49b22e7a2feff6c11.tar.gz gcc-f737b1326e7bd0c786c1d3a49b22e7a2feff6c11.tar.bz2 |
(expand_divmod): Always check result of emit_store_flag.
From-SVN: r9905
Diffstat (limited to 'gcc/expmed.c')
-rw-r--r-- | gcc/expmed.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/gcc/expmed.c b/gcc/expmed.c index b6f6d82..e2d31be 100644 --- a/gcc/expmed.c +++ b/gcc/expmed.c @@ -2858,7 +2858,6 @@ expand_divmod (rem_flag, code, mode, op0, op1, target, unsignedp) result. */ quotient = emit_store_flag (tquotient, GEU, op0, op1, compute_mode, 1, 1); - /* Can emit_store_flag have failed? */ if (quotient == 0) goto fail1; } @@ -2957,10 +2956,14 @@ expand_divmod (rem_flag, code, mode, op0, op1, target, unsignedp) else if (d == -1) quotient = expand_unop (compute_mode, neg_optab, op0, tquotient, 0); - else if (INTVAL (op1) == (HOST_WIDE_INT) 1 << (size - 1)) - /* This case is not handled correctly below. */ - quotient = emit_store_flag (tquotient, EQ, op0, op1, - compute_mode, 1, 1); + else if (abs_d == (unsigned HOST_WIDE_INT) 1 << (size - 1)) + { + /* This case is not handled correctly below. */ + quotient = emit_store_flag (tquotient, EQ, op0, op1, + compute_mode, 1, 1); + if (quotient == 0) + goto fail1; + } else if (EXACT_POWER_OF_2_OR_ZERO_P (d) && (rem_flag ? smod_pow2_cheap : sdiv_pow2_cheap)) ; |