From: Richard Kenner Date: Fri, 21 Aug 1992 11:52:57 +0000 (-0400) Subject: (subst): Move up test for too many restarts. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=eeb43d32dbbddfdbccc863f6194093b64eef0f51;p=gcc.git (subst): Move up test for too many restarts. If we restart, clear OP0_MODE since we don't know it. From-SVN: r1926 --- diff --git a/gcc/combine.c b/gcc/combine.c index 75ef97ac796..5b9b9a446f5 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -2580,6 +2580,18 @@ subst (x, from, to, in_dest, unique_copy) restart: + /* If we have restarted more than 4 times, we are probably looping, so + give up. */ + if (++n_restarts > 4) + return x; + + /* If we are restarting at all, it means that we no longer know the + original mode of operand 0 (since we have probably changed the + form of X). */ + + if (n_restarts > 1) + op0_mode = VOIDmode; + code = GET_CODE (x); /* If this is a commutative operation, put a constant last and a complex @@ -2663,11 +2675,6 @@ subst (x, from, to, in_dest, unique_copy) if (temp) x = temp, code = GET_CODE (temp); - /* If we have restarted more than 4 times, we are probably looping, so - give up. */ - if (++n_restarts > 4) - return x; - /* First see if we can apply the inverse distributive law. */ if (code == PLUS || code == MINUS || code == IOR || code == XOR) {