From: Doug Evans Date: Tue, 26 Jan 1993 00:30:34 +0000 (+0000) Subject: Added debugging utilities debug_rtx_list to print several rtx's and... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=716f003f91219c1a6997a7fcc960c796ca73a82e;p=gcc.git Added debugging utilities debug_rtx_list to print several rtx's and... Added debugging utilities debug_rtx_list to print several rtx's and debug_rtx_find to look up an rtx in a list given a uid. From-SVN: r3343 --- diff --git a/gcc/print-rtl.c b/gcc/print-rtl.c index 60e3ca929b3..651659eb924 100644 --- a/gcc/print-rtl.c +++ b/gcc/print-rtl.c @@ -230,6 +230,64 @@ debug_rtx (x) fprintf (stderr, "\n"); } +/* Count of rtx's to print with debug_rtx_list. + This global exists because gdb user defined commands have no arguments. */ + +int debug_rtx_count = 0; /* 0 is treated as equivalent to 1 */ + +/* Call this function to print list from X on. + + N is a count of the rtx's to print. Positive values print from the specified + rtx on. Negative values print a window around the rtx. + EG: -5 prints 2 rtx's on either side (in addition to the specified rtx). */ + +void +debug_rtx_list (x, n) + rtx x; + int n; +{ + int i,count; + rtx insn; + + count = n == 0 ? 1 : n < 0 ? -n : n; + + /* If we are printing a window, back up to the start. */ + + if (n < 0) + for (i = count / 2; i > 0; i--) + { + if (PREV_INSN (x) == 0) + break; + x = PREV_INSN (x); + } + + for (i = count, insn = x; i > 0 && insn != 0; i--, insn = NEXT_INSN (insn)) + debug_rtx (insn); +} + +/* Call this function to search an rtx list to find one with insn uid UID, + and then call debug_rtx_list to print it, using DEBUG_RTX_COUNT. + The found insn is returned to enable further debugging analysis. */ + +rtx +debug_rtx_find(x, uid) + rtx x; + int uid; +{ + while (x != 0 && INSN_UID (x) != uid) + x = NEXT_INSN (x); + if (x != 0) + { + debug_rtx_list (x, debug_rtx_count); + return x; + } + else + { + fprintf (stderr, "insn uid %d not found\n", uid); + return 0; + } +} + /* External entry point for printing a chain of insns starting with RTX_FIRST onto file OUTF. A blank line separates insns.