aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorStephane Carrez <Stephane.Carrez@worldnet.fr>2000-09-13 21:34:05 +0200
committerStephane Carrez <ciceron@gcc.gnu.org>2000-09-13 21:34:05 +0200
commitc349e40b5bd6e44ed3afb6a91633f736ddc668d6 (patch)
tree9f0163da7788dbdbf5f9158a769923ef406ce1d1 /gcc
parent2856c3e3f58327d111a846d4351c3c9568384944 (diff)
downloadgcc-c349e40b5bd6e44ed3afb6a91633f736ddc668d6.zip
gcc-c349e40b5bd6e44ed3afb6a91633f736ddc668d6.tar.gz
gcc-c349e40b5bd6e44ed3afb6a91633f736ddc668d6.tar.bz2
flags.h (flag_dump_rtl_in_asm): Declare.
* flags.h (flag_dump_rtl_in_asm): Declare. * toplev.c (flag_dump_rtl_in_asm): Define. (decode_d_option): Set flag_dump_rtl_in_asm and flag_print_asm_name if -dP is specified. * rtl.h (print_rtx_head): Declare. * print-rtl.c (print_rtx_head): Define. (print_rtx): Print the string pointed to by print_rtx_head at beginning of each dump line. (print_rtl): Likewise. (print_rtl_single): Likewise. * final.c (final_scan_insn): Dump the insn in the assembly file for debugging. * gcc.1: Document -dP option. * invoke.texi (Debugging Options): Likewise. From-SVN: r36394
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog17
-rw-r--r--gcc/final.c8
-rw-r--r--gcc/flags.h2
-rw-r--r--gcc/gcc.18
-rw-r--r--gcc/print-rtl.c24
-rw-r--r--gcc/rtl.h1
-rw-r--r--gcc/toplev.c8
7 files changed, 62 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 39e07b2..b4a8d56 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,22 @@
2000-09-13 Stephane Carrez <Stephane.Carrez@worldnet.fr>
+ * flags.h (flag_dump_rtl_in_asm): Declare.
+ * toplev.c (flag_dump_rtl_in_asm): Define.
+ (decode_d_option): Set flag_dump_rtl_in_asm and flag_print_asm_name
+ if -dP is specified.
+ * rtl.h (print_rtx_head): Declare.
+ * print-rtl.c (print_rtx_head): Define.
+ (print_rtx): Print the string pointed to by print_rtx_head
+ at beginning of each dump line.
+ (print_rtl): Likewise.
+ (print_rtl_single): Likewise.
+ * final.c (final_scan_insn): Dump the insn in the assembly
+ file for debugging.
+ * gcc.1: Document -dP option.
+ * invoke.texi (Debugging Options): Likewise.
+
+2000-09-13 Stephane Carrez <Stephane.Carrez@worldnet.fr>
+
* md.texi (Machine Constraints): Document the 68HC11 constraints.
* install.texi (Configurations): Document the 68HC11&68HC12 port.
* invoke.texi (Option Summary, M68hc1x Options): Document the options.
diff --git a/gcc/final.c b/gcc/final.c
index 404fcc3..c22df2f 100644
--- a/gcc/final.c
+++ b/gcc/final.c
@@ -2922,6 +2922,14 @@ final_scan_insn (insn, file, optimize, prescan, nopeepholes)
extract_insn (insn);
cleanup_subreg_operands (insn);
+ /* Dump the insn in the assembly for debugging. */
+ if (flag_dump_rtl_in_asm)
+ {
+ print_rtx_head = ASM_COMMENT_START;
+ print_rtl_single (asm_out_file, insn);
+ print_rtx_head = "";
+ }
+
if (! constrain_operands (1))
fatal_insn_not_found (insn);
diff --git a/gcc/flags.h b/gcc/flags.h
index 59778c6..8fa2e87 100644
--- a/gcc/flags.h
+++ b/gcc/flags.h
@@ -474,6 +474,8 @@ extern int flag_verbose_asm;
extern int flag_debug_asm;
+extern int flag_dump_rtl_in_asm;
+
/* -fgnu-linker specifies use of the GNU linker for initializations.
-fno-gnu-linker says that collect will be used. */
extern int flag_gnu_linker;
diff --git a/gcc/gcc.1 b/gcc/gcc.1
index 2da279b..e6a5e41 100644
--- a/gcc/gcc.1
+++ b/gcc/gcc.1
@@ -20,7 +20,7 @@
.if n .sp
.if t .sp 0.4
..
-.Id $Id: gcc.1,v 1.15 2000/05/17 08:15:25 cagney Exp $
+.Id $Id: gcc.1,v 1.16 2000/09/11 06:10:30 ciceron Exp $
.TH GCC 1 "\*(Dt" "GNU Tools" "GNU Tools"
.SH NAME
gcc, g++ \- GNU project C and C++ Compiler (gcc-2.96)
@@ -2311,6 +2311,12 @@ standard error.
Annotate the assembler output with a comment indicating which
pattern and alternative was used.
.TP
+.B \-dP
+Dump the RTL in the assembler output as a comment before each instruction.
+Also turns on
+.B \-dp
+annotation.
+.TP
.B \-fpretend\-float
When running a cross-compiler, pretend that the target machine uses the
same floating point format as the host machine. This causes incorrect
diff --git a/gcc/print-rtl.c b/gcc/print-rtl.c
index 31eac81..25f7e01 100644
--- a/gcc/print-rtl.c
+++ b/gcc/print-rtl.c
@@ -55,6 +55,11 @@ static int indent;
static void print_rtx PARAMS ((rtx));
+/* String printed at beginning of each RTL when it is dumped.
+ This string is set to ASM_COMMENT_START when the RTL is dumped in
+ the assembly output file. */
+char *print_rtx_head = "";
+
/* Nonzero means suppress output of instruction numbers and line number
notes in debugging dumps.
This must be defined here so that programs like gencodes can be linked. */
@@ -80,8 +85,9 @@ print_rtx (in_rtx)
if (sawclose)
{
- fprintf (outfile, "\n%s",
- (xspaces + (sizeof xspaces - 1 - indent * 2)));
+ fprintf (outfile, "\n%s%s",
+ print_rtx_head,
+ (xspaces + (sizeof xspaces - 1 - indent * 2)));
sawclose = 0;
}
@@ -256,7 +262,8 @@ print_rtx (in_rtx)
indent += 2;
if (sawclose)
{
- fprintf (outfile, "\n%s",
+ fprintf (outfile, "\n%s%s",
+ print_rtx_head,
(xspaces + (sizeof xspaces - 1 - indent * 2)));
sawclose = 0;
}
@@ -273,7 +280,8 @@ print_rtx (in_rtx)
indent -= 2;
}
if (sawclose)
- fprintf (outfile, "\n%s",
+ fprintf (outfile, "\n%s%s",
+ print_rtx_head,
(xspaces + (sizeof xspaces - 1 - indent * 2)));
fputs ("] ", outfile);
@@ -600,7 +608,10 @@ print_rtl (outf, rtx_first)
sawclose = 0;
if (rtx_first == 0)
- fputs ("(nil)\n", outf);
+ {
+ fputs (print_rtx_head, outf);
+ fputs ("(nil)\n", outf);
+ }
else
switch (GET_CODE (rtx_first))
{
@@ -614,12 +625,14 @@ print_rtl (outf, rtx_first)
if (! flag_dump_unnumbered
|| GET_CODE (tmp_rtx) != NOTE || NOTE_LINE_NUMBER (tmp_rtx) < 0)
{
+ fputs (print_rtx_head, outfile);
print_rtx (tmp_rtx);
fprintf (outfile, "\n");
}
break;
default:
+ fputs (print_rtx_head, outfile);
print_rtx (rtx_first);
}
}
@@ -637,6 +650,7 @@ print_rtl_single (outf, x)
if (! flag_dump_unnumbered
|| GET_CODE (x) != NOTE || NOTE_LINE_NUMBER (x) < 0)
{
+ fputs (print_rtx_head, outfile);
print_rtx (x);
putc ('\n', outf);
return 1;
diff --git a/gcc/rtl.h b/gcc/rtl.h
index 37acbd5..d1d7696 100644
--- a/gcc/rtl.h
+++ b/gcc/rtl.h
@@ -1747,6 +1747,7 @@ extern void schedule_insns PARAMS ((FILE *));
extern void fix_sched_param PARAMS ((const char *, const char *));
/* In print-rtl.c */
+extern char *print_rtx_head;
extern void debug_rtx PARAMS ((rtx));
extern void debug_rtx_list PARAMS ((rtx, int));
extern void debug_rtx_range PARAMS ((rtx, rtx));
diff --git a/gcc/toplev.c b/gcc/toplev.c
index 5e819fb..95ef7a2 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -795,6 +795,10 @@ int flag_verbose_asm = 0;
int flag_debug_asm = 0;
+/* -dP causes the rtl to be emitted as a comment in assembly. */
+
+int flag_dump_rtl_in_asm = 0;
+
/* -fgnu-linker specifies use of the GNU linker for initializations.
(Or, more generally, a linker that handles initializations.)
-fno-gnu-linker says that collect2 will be used. */
@@ -3970,6 +3974,10 @@ decode_d_option (arg)
case 'p':
flag_print_asm_name = 1;
break;
+ case 'P':
+ flag_dump_rtl_in_asm = 1;
+ flag_print_asm_name = 1;
+ break;
case 'v':
graph_dump_format = vcg;
break;