summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>2000-09-18 11:08:19 -0700
committerRichard Henderson <rth@gcc.gnu.org>2000-09-18 11:08:19 -0700
commitd340408c13f21efcbf7b012cfa7ccd3653b31281 (patch)
tree4c45aaf3ca9235ed0b2aeacb4d26f8fa29af56e9 /gcc
parenta191f0ee83fb815187657cadac361e883f496f01 (diff)
downloadgcc-d340408c13f21efcbf7b012cfa7ccd3653b31281.tar.gz
* combine.c (try_combine): Allow split to create a single insn.
From-SVN: r36504
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog2
-rw-r--r--gcc/combine.c16
2 files changed, 13 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 403109833e7..a4612dd21a4 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,7 @@
2000-09-18 Richard Henderson <rth@cygnus.com>
+ * combine.c (try_combine): Allow split to create a single insn.
+
* machmode.def: Add BImode. Add a column for bitsize.
* machmode.h (DEF_MACHMODE): Adjust for extra column.
(GET_MODE_BITSIZE): Use it.
diff --git a/gcc/combine.c b/gcc/combine.c
index be73be30d7c..07c7e6733f4 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -2107,11 +2107,17 @@ try_combine (i3, i2, i1, new_direct_jump_p)
i3);
}
- if (m_split && GET_CODE (m_split) == SEQUENCE
- && XVECLEN (m_split, 0) == 2
- && (next_real_insn (i2) == i3
- || ! use_crosses_set_p (PATTERN (XVECEXP (m_split, 0, 0)),
- INSN_CUID (i2))))
+ if (m_split && GET_CODE (m_split) != SEQUENCE)
+ {
+ insn_code_number = recog_for_combine (&m_split, i3, &new_i3_notes);
+ if (insn_code_number >= 0)
+ newpat = m_split;
+ }
+ else if (m_split && GET_CODE (m_split) == SEQUENCE
+ && XVECLEN (m_split, 0) == 2
+ && (next_real_insn (i2) == i3
+ || ! use_crosses_set_p (PATTERN (XVECEXP (m_split, 0, 0)),
+ INSN_CUID (i2))))
{
rtx i2set, i3set;
rtx newi3pat = PATTERN (XVECEXP (m_split, 0, 1));