summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2007-05-24 14:21:14 +0000
committerhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2007-05-24 14:21:14 +0000
commit60ad3b0ebe854dee275302eb74126ceaa8ce9b16 (patch)
treefa0c13cb0e70d6ed10a21b63a57adb511b304704
parent639eef5b9d68b45e3579d67bd4146a4efe088c57 (diff)
downloadgcc-60ad3b0ebe854dee275302eb74126ceaa8ce9b16.tar.gz
* doc/invoke.texi (-fdump-unnumbered): Update docs when line number
notes are gone. * print-rtl.c (flag_dump_unnumbered): Update comments. (print_rtl): Fix my previous change. * emit-rtl.c (emit_note_before, emit_note_after): Clear out note specific data. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@125026 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/doc/invoke.texi2
-rw-r--r--gcc/emit-rtl.c2
-rw-r--r--gcc/gengenrtl.c19
-rw-r--r--gcc/print-rtl.c12
5 files changed, 37 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 5b4258a9894..88096ccf226 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,12 @@
+2007-05-24 Jan Hubicka <jh@suse.cz>
+
+ * doc/invoke.texi (-fdump-unnumbered): Update docs when line number
+ notes are gone.
+ * print-rtl.c (flag_dump_unnumbered): Update comments.
+ (print_rtl): Fix my previous change.
+ * emit-rtl.c (emit_note_before, emit_note_after): Clear out note
+ specific data.
+
2007-05-24 Zdenek Dvorak <dvorakz@suse.cz>
PR middle-end/32018
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index a057a0cbc7f..47b68d73a75 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -4495,7 +4495,7 @@ different text / bss / data / heap / stack / dso start locations.
@item -fdump-unnumbered
@opindex fdump-unnumbered
When doing debugging dumps (see @option{-d} option above), suppress instruction
-numbers, line number note and address output. This makes it more feasible to
+numbers and address output. This makes it more feasible to
use diff on debugging dumps for compiler invocations with different
options, in particular with and without @option{-g}.
diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c
index afd3a401a25..17f8c2d8446 100644
--- a/gcc/emit-rtl.c
+++ b/gcc/emit-rtl.c
@@ -3881,6 +3881,7 @@ emit_note_before (enum insn_note subtype, rtx before)
INSN_UID (note) = cur_insn_uid++;
NOTE_KIND (note) = subtype;
BLOCK_FOR_INSN (note) = NULL;
+ memset (&NOTE_DATA (note), 0, sizeof (NOTE_DATA (note)));
add_insn_before (note, before);
return note;
@@ -4078,6 +4079,7 @@ emit_note_after (enum insn_note subtype, rtx after)
INSN_UID (note) = cur_insn_uid++;
NOTE_KIND (note) = subtype;
BLOCK_FOR_INSN (note) = NULL;
+ memset (&NOTE_DATA (note), 0, sizeof (NOTE_DATA (note)));
add_insn_after (note, after);
return note;
}
diff --git a/gcc/gengenrtl.c b/gcc/gengenrtl.c
index fd4a0218eb2..5088df5cab6 100644
--- a/gcc/gengenrtl.c
+++ b/gcc/gengenrtl.c
@@ -191,7 +191,7 @@ gendecl (const char *format)
const char *p;
int i, pos;
- printf ("extern rtx gen_rtx_fmt_%s\t (RTX_CODE, ", format);
+ printf ("extern rtx gen_rtx_fmt_%s_stat\t (RTX_CODE, ", format);
printf ("enum machine_mode mode");
/* Write each parameter that is needed and start a new line when the line
@@ -208,8 +208,18 @@ gendecl (const char *format)
printf (" %sarg%d", type_from_format (*p), i++);
pos += ourlen;
}
+ printf (" MEM_STAT_DECL");
printf (");\n");
+ printf ("#define gen_rtx_fmt_%s(c, m", format);
+ for (p = format, i = 0; *p != 0; p++)
+ if (*p != '0')
+ printf (", p%i",i++);
+ printf (")\\\n gen_rtx_fmt_%s_stat (c, m", format);
+ for (p = format, i = 0; *p != 0; p++)
+ if (*p != '0')
+ printf (", p%i",i++);
+ printf (" MEM_STAT_INFO)\n\n");
}
/* Generate macros to generate RTL of code IDX using the functions we
@@ -257,18 +267,18 @@ gendef (const char *format)
/* Start by writing the definition of the function name and the types
of the arguments. */
- printf ("rtx\ngen_rtx_fmt_%s (RTX_CODE code, enum machine_mode mode", format);
+ printf ("rtx\ngen_rtx_fmt_%s_stat (RTX_CODE code, enum machine_mode mode", format);
for (p = format, i = 0; *p != 0; p++)
if (*p != '0')
printf (",\n\t%sarg%d", type_from_format (*p), i++);
- puts (")");
+ puts (" MEM_STAT_DECL)");
/* Now write out the body of the function itself, which allocates
the memory and initializes it. */
puts ("{");
puts (" rtx rt;");
- puts (" rt = rtx_alloc (code);\n");
+ puts (" rt = rtx_alloc_stat (code PASS_MEM_STAT);\n");
puts (" PUT_MODE (rt, mode);");
@@ -299,6 +309,7 @@ genheader (void)
puts ("#ifndef GCC_GENRTL_H");
puts ("#define GCC_GENRTL_H\n");
+ puts ("#include \"statistics.h\"\n");
for (fmt = formats; *fmt; ++fmt)
gendecl (*fmt);
diff --git a/gcc/print-rtl.c b/gcc/print-rtl.c
index 7301b08d03e..a47a02b87fe 100644
--- a/gcc/print-rtl.c
+++ b/gcc/print-rtl.c
@@ -56,8 +56,8 @@ static void print_rtx (rtx);
the assembly output file. */
const char *print_rtx_head = "";
-/* Nonzero means suppress output of instruction numbers and line number
- notes in debugging dumps.
+/* Nonzero means suppress output of instruction numbers
+ in debugging dumps.
This must be defined here so that programs like gencodes can be linked. */
int flag_dump_unnumbered = 0;
@@ -705,6 +705,8 @@ debug_rtx_find (rtx x, int uid)
void
print_rtl (FILE *outf, rtx rtx_first)
{
+ rtx tmp_rtx;
+
outfile = outf;
sawclose = 0;
@@ -722,6 +724,12 @@ print_rtl (FILE *outf, rtx rtx_first)
case NOTE:
case CODE_LABEL:
case BARRIER:
+ for (tmp_rtx = rtx_first; tmp_rtx != 0; tmp_rtx = NEXT_INSN (tmp_rtx))
+ {
+ fputs (print_rtx_head, outfile);
+ print_rtx (tmp_rtx);
+ fprintf (outfile, "\n");
+ }
break;
default: