OSDN Git Service

* regclass.c (regclass): Use SECONDARY_RELOAD_CLASS if it's
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 17 Dec 1995 17:17:23 +0000 (17:17 +0000)
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 17 Dec 1995 17:17:23 +0000 (17:17 +0000)
        defined to avoid useless work.

        * combine.c (find_split_point): Try to split SET_DEST
        just like we do for SET_SRC.

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

gcc/combine.c
gcc/regclass.c

index f861921..9f1086b 100644 (file)
@@ -2542,6 +2542,11 @@ find_split_point (loc, insn)
       if (split && split != &SET_SRC (x))
        return split;
 
+      /* See if we can split SET_DEST as it stands.  */
+      split = find_split_point (&SET_DEST (x), insn);
+      if (split && split != &SET_DEST (x))
+       return split;
+
       /* See if this is a bitfield assignment with everything constant.  If
         so, this is an IOR of an AND, so split it into that.  */
       if (GET_CODE (SET_DEST (x)) == ZERO_EXTRACT
index 9b9a4d5..964cd59 100644 (file)
@@ -674,6 +674,10 @@ regclass (f, nregs)
                     being used in such addresses.  */
 
                  if ((0
+#ifdef SECONDARY_RELOAD_CLASS
+                      || (SECONDARY_RELOAD_CLASS (BASE_REG_CLASS, m, r)
+                          != NO_REGS)
+#else
 #ifdef SECONDARY_INPUT_RELOAD_CLASS
                       || (SECONDARY_INPUT_RELOAD_CLASS (BASE_REG_CLASS, m, r)
                           != NO_REGS)
@@ -682,6 +686,7 @@ regclass (f, nregs)
                       || (SECONDARY_OUTPUT_RELOAD_CLASS (BASE_REG_CLASS, m, r)
                           != NO_REGS)
 #endif
+#endif
                       )
                      && ! auto_inc_dec_reg_p (r, m))
                    forbidden_inc_dec_class[i] = 1;