OSDN Git Service

* combine.c (try_combine): Before fixing up LOG_LINKS for the
authoramylaar <amylaar@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 2 Dec 1999 19:09:23 +0000 (19:09 +0000)
committeramylaar <amylaar@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 2 Dec 1999 19:09:23 +0000 (19:09 +0000)
i3_subst_into_i2 case, check that GET_CODE (PATTERN (i2)) == PARALLEL.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@30762 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/combine.c

index f16bf43..c7e9bb5 100644 (file)
@@ -1,3 +1,8 @@
+Thu Dec  2 18:59:48 1999  J"orn Rennecke <amylaar@cygnus.co.uk>
+
+       * combine.c (try_combine): Before fixing up LOG_LINKS for the
+       i3_subst_into_i2 case, check that GET_CODE (PATTERN (i2)) == PARALLEL.
+
 1999-12-02  Gavin Romig-Koch  <gavin@cygnus.com>
 
        * invoke.texi: Document the mips option -mno-crt0
index bc24ce9..f55bb66 100644 (file)
@@ -2448,19 +2448,22 @@ try_combine (i3, i2, i1)
 
     if (i3_subst_into_i2)
       {
-       for (i = 0; i < XVECLEN (PATTERN (i2), 0); i++)
-         if (GET_CODE (SET_DEST (XVECEXP (PATTERN (i2), 0, i))) == REG
-             && SET_DEST (XVECEXP (PATTERN (i2), 0, i)) != i2dest
-             && ! find_reg_note (i2, REG_UNUSED,
-                                 SET_DEST (XVECEXP (PATTERN (i2), 0, i))))
-           for (temp = NEXT_INSN (i2);
-                temp && (this_basic_block == n_basic_blocks - 1
-                         || BLOCK_HEAD (this_basic_block) != temp);
-                temp = NEXT_INSN (temp))
-             if (temp != i3 && GET_RTX_CLASS (GET_CODE (temp)) == 'i')
-               for (link = LOG_LINKS (temp); link; link = XEXP (link, 1))
-                 if (XEXP (link, 0) == i2)
-                   XEXP (link, 0) = i3;
+       if (GET_CODE (PATTERN (i2)) == PARALLEL)
+         {
+           for (i = 0; i < XVECLEN (PATTERN (i2), 0); i++)
+             if (GET_CODE (SET_DEST (XVECEXP (PATTERN (i2), 0, i))) == REG
+                 && SET_DEST (XVECEXP (PATTERN (i2), 0, i)) != i2dest
+                 && ! find_reg_note (i2, REG_UNUSED,
+                                     SET_DEST (XVECEXP (PATTERN (i2), 0, i))))
+               for (temp = NEXT_INSN (i2);
+                    temp && (this_basic_block == n_basic_blocks - 1
+                             || BLOCK_HEAD (this_basic_block) != temp);
+                    temp = NEXT_INSN (temp))
+                 if (temp != i3 && GET_RTX_CLASS (GET_CODE (temp)) == 'i')
+                   for (link = LOG_LINKS (temp); link; link = XEXP (link, 1))
+                     if (XEXP (link, 0) == i2)
+                       XEXP (link, 0) = i3;
+         }
 
        if (i3notes)
          {