]> gcc.gnu.org Git - gcc.git/commitdiff
* sched.c (update_flow_info) When looking if to set found_split_dest
authorJ"orn Rennecke <amylaar@cygnus.co.uk>
Fri, 5 Sep 1997 19:36:35 +0000 (19:36 +0000)
committerJeff Law <law@gcc.gnu.org>
Fri, 5 Sep 1997 19:36:35 +0000 (13:36 -0600)
        or found_orig_dest, look at all parts of a PARALLEL.
        * haifa-sched.c (update_flow_info): Likewise.

From-SVN: r15115

gcc/ChangeLog
gcc/haifa-sched.c
gcc/sched.c

index c151b8cbda9a94a910c173d5e617dc8343f0d031..b92e210cf848000625ff8e679295d10a0ca16f5a 100644 (file)
@@ -1,3 +1,9 @@
+Fri Sep  5 13:36:44 1997  J"orn Rennecke <amylaar@cygnus.co.uk>
+
+       * sched.c (update_flow_info) When looking if to set found_split_dest
+       or found_orig_dest, look at all parts of a PARALLEL.
+       * haifa-sched.c (update_flow_info): Likewise.
+
 Fri Sep  5 10:08:44 1997  Jeffrey A Law  (law@cygnus.com)
 
        * v850: New directory for v850 port.
index b439d90dd43b6527efe23916f7fea587e4f3994d..b4a674e977e8af6103bc6876b1e40ab3ebde7117 100644 (file)
@@ -8205,21 +8205,37 @@ update_flow_info (notes, first, last, orig_insn)
 
       for (insn = first;; insn = NEXT_INSN (insn))
        {
-         set = single_set (insn);
-         if (set)
+         rtx pat;
+         int i;
+
+         /* I'm not sure if this can happen, but let's be safe.  */
+         if (GET_RTX_CLASS (GET_CODE (insn)) != 'i')
+           continue;
+
+         pat = PATTERN (insn);
+         i = GET_CODE (pat) == PARALLEL ? XVECLEN (pat, 0) : 0;
+         set = pat;
+
+         for (;;)
            {
-             if (GET_CODE (SET_DEST (set)) == REG
-                 && REGNO (SET_DEST (set)) == REGNO (orig_dest))
-               {
-                 found_orig_dest = 1;
-                 break;
-               }
-             else if (GET_CODE (SET_DEST (set)) == SUBREG
-                      && SUBREG_REG (SET_DEST (set)) == orig_dest)
+             if (GET_CODE (set) == SET)
                {
-                 found_split_dest = 1;
-                 break;
+                 if (GET_CODE (SET_DEST (set)) == REG
+                     && REGNO (SET_DEST (set)) == REGNO (orig_dest))
+                   {
+                     found_orig_dest = 1;
+                     break;
+                   }
+                 else if (GET_CODE (SET_DEST (set)) == SUBREG
+                          && SUBREG_REG (SET_DEST (set)) == orig_dest)
+                   {
+                     found_split_dest = 1;
+                     break;
+                   }
                }
+             if (--i < 0)
+               break;
+             set = XVECEXP (pat, 0, i);
            }
 
          if (insn == last)
index 87f7293240706820445dd16e16d87f0590784424..477782b2c32a70b20392304a2477a260735e42c2 100644 (file)
@@ -4108,21 +4108,36 @@ update_flow_info (notes, first, last, orig_insn)
 
       for (insn = first; ; insn = NEXT_INSN (insn))
        {
-         set = single_set (insn);
-         if (set)
+         rtx pat;
+         int i;
+
+         /* I'm not sure if this can happen, but let's be safe.  */
+         if (GET_RTX_CLASS (GET_CODE (insn)) != 'i')
+           continue;
+
+         pat = PATTERN (insn);
+         i = GET_CODE (pat) == PARALLEL ? XVECLEN (pat, 0) : 0;
+         set = pat;
+         for (;;)
            {
-             if (GET_CODE (SET_DEST (set)) == REG
-                 && REGNO (SET_DEST (set)) == REGNO (orig_dest))
-               {
-                 found_orig_dest = 1;
-                 break;
-               }
-             else if (GET_CODE (SET_DEST (set)) == SUBREG
-                      && SUBREG_REG (SET_DEST (set)) == orig_dest)
+             if (GET_CODE (set) == SET)
                {
-                 found_split_dest = 1;
-                 break;
+                 if (GET_CODE (SET_DEST (set)) == REG
+                     && REGNO (SET_DEST (set)) == REGNO (orig_dest))
+                   {
+                     found_orig_dest = 1;
+                     break;
+                   }
+                 else if (GET_CODE (SET_DEST (set)) == SUBREG
+                          && SUBREG_REG (SET_DEST (set)) == orig_dest)
+                   {
+                     found_split_dest = 1;
+                     break;
+                   }
                }
+             if (--i < 0)
+               break;
+             set = XVECEXP (pat, 0, i);
            }
 
          if (insn == last)
This page took 0.071375 seconds and 5 git commands to generate.