diff options
author | Jeff Law <law@gcc.gnu.org> | 1995-12-17 10:17:23 -0700 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1995-12-17 10:17:23 -0700 |
commit | 041d71807974f04fc621367fe49b0bba6468bb5c (patch) | |
tree | b0c096d7839f2547e531c7f4727f4a374911bc64 | |
parent | a295d3317e3675c09de2b101e88f08eba04f26c5 (diff) | |
download | gcc-041d71807974f04fc621367fe49b0bba6468bb5c.tar.gz |
regclass.c (regclass): Use SECONDARY_RELOAD_CLASS if it's defined to avoid useless work.
* regclass.c (regclass): Use SECONDARY_RELOAD_CLASS if it's
defined to avoid useless work.
* combine.c (find_split_point): Try to split SET_DEST
just like we do for SET_SRC.
From-SVN: r10790
-rw-r--r-- | gcc/combine.c | 5 | ||||
-rw-r--r-- | gcc/regclass.c | 5 |
2 files changed, 10 insertions, 0 deletions
diff --git a/gcc/combine.c b/gcc/combine.c index f86192148e0..9f1086b1855 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -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 diff --git a/gcc/regclass.c b/gcc/regclass.c index 9b9a4d50ec7..964cd59b68e 100644 --- a/gcc/regclass.c +++ b/gcc/regclass.c @@ -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; |