summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsegher <segher@138bc75d-0d04-0410-961f-82ee72b054a4>2015-04-08 22:52:24 +0000
committersegher <segher@138bc75d-0d04-0410-961f-82ee72b054a4>2015-04-08 22:52:24 +0000
commit1e4f4b179ecf986d2c4aa93add29d30f6ca6bf25 (patch)
treedf44cad531a1ebe974d2645445b6b0ef26dcfd8d
parent8579ea8fa4f588ae177b3ff9c01975c88f6aa49b (diff)
downloadgcc-1e4f4b179ecf986d2c4aa93add29d30f6ca6bf25.tar.gz
PR rtl-optimization/65693
* combine.c (is_parallel_of_n_reg_sets): Change first argument from an rtx_insn * to an rtx. (try_combine): Adjust both callers. Use it once more. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@221937 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/combine.c15
2 files changed, 12 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 14e57c3c93c..e246510b3f6 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2015-04-08 Segher Boessenkool <segher@kernel.crashing.org>
+
+ PR rtl-optimization/65693
+ * combine.c (is_parallel_of_n_reg_sets): Change first argument
+ from an rtx_insn * to an rtx.
+ (try_combine): Adjust both callers. Use it once more.
+
2015-04-08 Ilya Enkovich <ilya.enkovich@intel.com>
* tree-chkp.c (chkp_find_const_bounds_var): Remove.
diff --git a/gcc/combine.c b/gcc/combine.c
index 71e5690459d..6f4a8da9761 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -2493,13 +2493,11 @@ update_cfg_for_uncondjump (rtx_insn *insn)
}
#ifndef HAVE_cc0
-/* Return whether INSN is a PARALLEL of exactly N register SETs followed
+/* Return whether PAT is a PARALLEL of exactly N register SETs followed
by an arbitrary number of CLOBBERs. */
static bool
-is_parallel_of_n_reg_sets (rtx_insn *insn, int n)
+is_parallel_of_n_reg_sets (rtx pat, int n)
{
- rtx pat = PATTERN (insn);
-
if (GET_CODE (pat) != PARALLEL)
return false;
@@ -2907,7 +2905,7 @@ try_combine (rtx_insn *i3, rtx_insn *i2, rtx_insn *i1, rtx_insn *i0,
decrement insn. */
if (i1 == 0
- && is_parallel_of_n_reg_sets (i2, 2)
+ && is_parallel_of_n_reg_sets (PATTERN (i2), 2)
&& (GET_MODE_CLASS (GET_MODE (SET_DEST (XVECEXP (PATTERN (i2), 0, 0))))
== MODE_CC)
&& GET_CODE (SET_SRC (XVECEXP (PATTERN (i2), 0, 0))) == COMPARE
@@ -2939,7 +2937,7 @@ try_combine (rtx_insn *i3, rtx_insn *i2, rtx_insn *i1, rtx_insn *i0,
make those two SETs separate I1 and I2 insns, and make an I0 that is
the original I1. */
if (i0 == 0
- && is_parallel_of_n_reg_sets (i2, 2)
+ && is_parallel_of_n_reg_sets (PATTERN (i2), 2)
&& can_split_parallel_of_n_reg_sets (i2, 2)
&& !reg_used_between_p (SET_DEST (XVECEXP (PATTERN (i2), 0, 0)), i2, i3)
&& !reg_used_between_p (SET_DEST (XVECEXP (PATTERN (i2), 0, 1)), i2, i3))
@@ -3460,10 +3458,7 @@ try_combine (rtx_insn *i3, rtx_insn *i2, rtx_insn *i1, rtx_insn *i0,
debug info less accurate. */
if (!(added_sets_2 && i1 == 0)
- && GET_CODE (newpat) == PARALLEL
- && XVECLEN (newpat, 0) == 2
- && GET_CODE (XVECEXP (newpat, 0, 0)) == SET
- && GET_CODE (XVECEXP (newpat, 0, 1)) == SET
+ && is_parallel_of_n_reg_sets (newpat, 2)
&& asm_noperands (newpat) < 0)
{
rtx set0 = XVECEXP (newpat, 0, 0);