From 29d40fa4d84c0ad8389798f95c97e763f9f522aa Mon Sep 17 00:00:00 2001 From: Richard Stallman Date: Wed, 10 Nov 1993 21:28:27 +0000 Subject: [PATCH] (expand_divmod): If rem_flag, always force op0 to a register. From-SVN: r6053 --- gcc/expmed.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/gcc/expmed.c b/gcc/expmed.c index fb4b9f0598a..aff18612f99 100644 --- a/gcc/expmed.c +++ b/gcc/expmed.c @@ -2403,8 +2403,9 @@ expand_divmod (rem_flag, code, mode, op0, op1, target, unsignedp) || code == ROUND_MOD_EXPR || code == ROUND_DIV_EXPR) { /* If we want the remainder, we may need to use OP0, so make sure - it and ADJUSTED_OP0 are in different registers. If we want to - preserve subexpressions, make sure OP0 is in a register. + it and ADJUSTED_OP0 are in different registers. We force OP0 + to a register in case it has any queued subexpressions, because + emit_cmp_insn will call emit_queue. If we don't want the remainder, we aren't going to use OP0 anymore. However, if we cannot clobber OP0 (and hence ADJUSTED_OP0), we must @@ -2414,7 +2415,7 @@ expand_divmod (rem_flag, code, mode, op0, op1, target, unsignedp) CAN_CLOBBER_OP0 will be zero and we know that OP0 cannot equal TARGET. */ - if (rem_flag && preserve_subexpressions_p ()) + if (rem_flag) op0 = force_reg (compute_mode, op0); if (! can_clobber_op0) -- 2.30.2