This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH] Improve dumping CALL_INSN_FUNCTION_USAGE
- From: Jakub Jelinek <jakub at redhat dot com>
- To: gcc-patches at gcc dot gnu dot org
- Date: Fri, 24 Jan 2014 22:20:33 +0100
- Subject: [PATCH] Improve dumping CALL_INSN_FUNCTION_USAGE
- Authentication-results: sourceware.org; auth=none
- Reply-to: Jakub Jelinek <jakub at redhat dot com>
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