Commit 3d985316 by Segher Boessenkool Committed by Segher Boessenkool

combine: Print to dump if some insn cannot be combined into i3

Eventually we should print the reason that any combination fails.
This is a good start (these happen often).


	* combine.c (try_combine): Print a message to dump file whenever
	I0, I1, or I2 cannot be combined into I3.

From-SVN: r255261
parent 4a016178
2017-11-29 Segher Boessenkool <segher@kernel.crashing.org> 2017-11-29 Segher Boessenkool <segher@kernel.crashing.org>
* combine.c (try_combine): Print a message to dump file whenever
I0, I1, or I2 cannot be combined into I3.
2017-11-29 Segher Boessenkool <segher@kernel.crashing.org>
PR rtl-optimization/83156 PR rtl-optimization/83156
PR rtl-optimization/82621 PR rtl-optimization/82621
* combine.c (try_combine): Don't split an I2 if one of the dests is * combine.c (try_combine): Don't split an I2 if one of the dests is
...@@ -3035,13 +3035,25 @@ try_combine (rtx_insn *i3, rtx_insn *i2, rtx_insn *i1, rtx_insn *i0, ...@@ -3035,13 +3035,25 @@ try_combine (rtx_insn *i3, rtx_insn *i2, rtx_insn *i1, rtx_insn *i0,
SUBST (PATTERN (i2), XVECEXP (PATTERN (i2), 0, 1)); SUBST (PATTERN (i2), XVECEXP (PATTERN (i2), 0, 1));
} }
/* Verify that I2 and I1 are valid for combining. */ /* Verify that I2 and maybe I1 and I0 can be combined into I3. */
if (! can_combine_p (i2, i3, i0, i1, NULL, NULL, &i2dest, &i2src) if (!can_combine_p (i2, i3, i0, i1, NULL, NULL, &i2dest, &i2src))
|| (i1 && ! can_combine_p (i1, i3, i0, NULL, i2, NULL,
&i1dest, &i1src))
|| (i0 && ! can_combine_p (i0, i3, NULL, NULL, i1, i2,
&i0dest, &i0src)))
{ {
if (dump_file)
fprintf (dump_file, "Can't combine i2 into i3\n");
undo_all ();
return 0;
}
if (i1 && !can_combine_p (i1, i3, i0, NULL, i2, NULL, &i1dest, &i1src))
{
if (dump_file)
fprintf (dump_file, "Can't combine i1 into i3\n");
undo_all ();
return 0;
}
if (i0 && !can_combine_p (i0, i3, NULL, NULL, i1, i2, &i0dest, &i0src))
{
if (dump_file)
fprintf (dump_file, "Can't combine i0 into i3\n");
undo_all (); undo_all ();
return 0; return 0;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment