aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1993-09-17 18:19:59 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1993-09-17 18:19:59 -0400
commit974f41466fc8df4f204a1fc0495171acd1e8986f (patch)
treed5d53c371d79ee3b6452f8071397971e531dcf8c
parentf3becefd609e2ea009838ca4d68a6f2c6645cb19 (diff)
downloadgcc-974f41466fc8df4f204a1fc0495171acd1e8986f.zip
gcc-974f41466fc8df4f204a1fc0495171acd1e8986f.tar.gz
gcc-974f41466fc8df4f204a1fc0495171acd1e8986f.tar.bz2
(recog_for_combine): Always reject a PARALLEL containing our special
CLOBBER. From-SVN: r5348
-rw-r--r--gcc/combine.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/combine.c b/gcc/combine.c
index d833b59..ece5020 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -7875,6 +7875,15 @@ recog_for_combine (pnewpat, insn, pnotes)
int i;
rtx notes = 0;
+ /* If PAT is a PARALLEL, check to see if it contains the CLOBBER
+ we use to indicate that something didn't match. If we find such a
+ thing, force rejection. */
+ if (GET_CODE (pat) == CLOBBER)
+ for (i = XVECLEN (pat, 0) - 1; i >= 0; i--)
+ if (GET_CODE (XVECEXP (pat, i, 0)) == CLOBBER
+ && XEXP (XVECEXP (pat, i, 0), 0) == const0_rtx)
+ return -1;
+
/* Is the result of combination a valid instruction? */
insn_code_number = recog (pat, insn, &num_clobbers_to_add);