diff mbox series

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

Message ID e850aed851e1edd3999ffcfd892a42b89c9524b2.1511995476.git.segher@kernel.crashing.org
State New
Headers show
Series combine: Print to dump if some insn cannot be combined into i3 | expand

Commit Message

Segher Boessenkool Nov. 29, 2017, 10:49 p.m. UTC
Eventually we should print the reason that any combination fails.
This is a good start (these happen often).

Applying to trunk.


Segher


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.

---
 gcc/combine.c | 24 ++++++++++++++++++------
 1 file changed, 18 insertions(+), 6 deletions(-)
diff mbox series

Patch

diff --git a/gcc/combine.c b/gcc/combine.c
index c578e47..22a382d 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -3061,13 +3061,25 @@  try_combine (rtx_insn *i3, rtx_insn *i2, rtx_insn *i1, rtx_insn *i0,
       SUBST (PATTERN (i2), XVECEXP (PATTERN (i2), 0, 1));
     }
 
-  /* Verify that I2 and I1 are valid for combining.  */
-  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)))
+  /* 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 (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 ();
       return 0;
     }