summaryrefslogtreecommitdiff
path: root/gcc/expmed.c
diff options
context:
space:
mode:
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>1995-06-08 22:58:06 +0000
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>1995-06-08 22:58:06 +0000
commit7676164ce20b35250cbb8c3f017415bc244d2922 (patch)
tree55e2ccfd8b1e05ed5cd8c486d7e3028ca25a5a3a /gcc/expmed.c
parent8815f4dabdd4fd23459d1f0a4fcd42b2e590fa7c (diff)
downloadgcc-7676164ce20b35250cbb8c3f017415bc244d2922.tar.gz
(expand_divmod): Always check result of emit_store_flag.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@9905 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/expmed.c')
-rw-r--r--gcc/expmed.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/gcc/expmed.c b/gcc/expmed.c
index b6f6d82748a..e2d31bef155 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))
;