[PATCH] Improve dumping CALL_INSN_FUNCTION_USAGE

Jakub Jelinek jakub@redhat.com
Fri Jan 24 21:20:00 GMT 2014


Hi!

This is something that has annyoed me for quite some time, but never got
around to do anything about it.  The EXPR_LIST mode in
CALL_INSN_FUNCTION_USAGE never means the various REG_DEAD/REG_CFA* etc.
note names, always normal mode, so e.g. when one is looking for REG_CFA*
notes, the calls can confuse it, and when looking at calls, one has to
look up the REG_* values and convert them to enum machine_mode in the
debugger.

Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?

2014-01-22  Jakub Jelinek  <jakub@redhat.com>

	* print-rtl.c (in_call_function_usage): New var.
	(print_rtx): When in CALL_INSN_FUNCTION_USAGE, always print
	EXPR_LIST mode as mode and not as reg note name.

--- gcc/print-rtl.c.jj	2014-01-03 11:40:57.000000000 +0100
+++ gcc/print-rtl.c	2014-01-22 18:50:59.094605279 +0100
@@ -51,6 +51,8 @@ static int sawclose = 0;
 
 static int indent;
 
+static bool in_call_function_usage;
+
 static void print_rtx (const_rtx);
 
 /* String printed at beginning of each RTL when it is dumped.
@@ -153,7 +155,8 @@ print_rtx (const_rtx in_rtx)
       if ((GET_CODE (in_rtx) == EXPR_LIST
 	   || GET_CODE (in_rtx) == INSN_LIST
 	   || GET_CODE (in_rtx) == INT_LIST)
-	  && (int)GET_MODE (in_rtx) < REG_NOTE_MAX)
+	  && (int)GET_MODE (in_rtx) < REG_NOTE_MAX
+	  && !in_call_function_usage)
 	fprintf (outfile, ":%s",
 		 GET_REG_NOTE_NAME (GET_MODE (in_rtx)));
 
@@ -350,7 +353,14 @@ print_rtx (const_rtx in_rtx)
 		   print_rtx_head, indent * 2, "");
 	if (!sawclose)
 	  fprintf (outfile, " ");
-	print_rtx (XEXP (in_rtx, i));
+	if (i == 8 && CALL_P (in_rtx))
+	  {
+	    in_call_function_usage = true;
+	    print_rtx (XEXP (in_rtx, i));
+	    in_call_function_usage = false;
+	  }
+	else
+	  print_rtx (XEXP (in_rtx, i));
 	indent -= 2;
 	break;
 

	Jakub



More information about the Gcc-patches mailing list