aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog10
-rw-r--r--gcc/Makefile.in17
-rw-r--r--gcc/diagnostic.c132
-rw-r--r--gcc/rtl-error.c162
4 files changed, 182 insertions, 139 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3b0b23c..0611404 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,13 @@
+2001-08-14 Gabriel Dos Reis <gdr@codesourcery.com>
+
+ * Makefile.in (OBJS): Add rtl-error.o
+ (rtl-error.o): New rule.
+ (diagnostic.o): Adjust dependency.
+ diagnostic.c (file_and_line_for_asm, diagnostic_for_asm,
+ error_for_asm, _fatal_insn, _fatal_insn_not_found,
+ warning_for_asm): Move to...
+ rtl-error.c: ...here. New file.
+
2001-08-14 Richard Henderson <rth@redhat.com>
* dwarf2out.c (dwarf2out_frame_finish): Never emit .eh_frame
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index ba8ca46..8ae2536 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -743,10 +743,10 @@ OBJS = \
local-alloc.o loop.o mbchar.o optabs.o params.o predict.o print-rtl.o \
print-tree.o profile.o real.o recog.o reg-stack.o regclass.o regmove.o \
regrename.o reload.o reload1.o reorg.o resource.o rtl.o rtlanal.o \
- sbitmap.o sched-deps.o sched-ebb.o sched-rgn.o sched-vis.o sdbout.o \
- sibcall.o simplify-rtx.o splay-tree.o ssa.o ssa-ccp.o ssa-dce.o \
- stmt.o stor-layout.o stringpool.o timevar.o toplev.o tree.o unroll.o \
- varasm.o varray.o version.o xcoffout.o \
+ rtl-error.o sbitmap.o sched-deps.o sched-ebb.o sched-rgn.o sched-vis.o \
+ sdbout.o sibcall.o simplify-rtx.o splay-tree.o ssa.o ssa-ccp.o \
+ ssa-dce.o stmt.o stor-layout.o stringpool.o timevar.o toplev.o tree.o \
+ unroll.o varasm.o varray.o version.o xcoffout.o \
$(GGC) $(out_object_file) $(EXTRA_OBJS)
BACKEND = main.o libbackend.a
@@ -1347,9 +1347,9 @@ stor-layout.o : stor-layout.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) flags.h \
function.h $(EXPR_H) $(RTL_H) toplev.h $(GGC_H) $(TM_P_H)
fold-const.o : fold-const.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) flags.h toplev.h \
$(EXPR_H) $(RTL_H) $(GGC_H) $(TM_P_H)
-diagnostic.o : diagnostic.c diagnostic.h diagnostic.def \
- $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) $(TM_P_H) flags.h \
- $(GGC_H) input.h $(INSN_ATTR_H) insn-config.h toplev.h intl.h
+diagnostic.o : diagnostic.c diagnostic.h real.h diagnostic.def \
+ $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(TM_P_H) flags.h $(GGC_H) \
+ input.h toplev.h intl.h
toplev.o : toplev.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) function.h \
flags.h xcoffout.h input.h $(INSN_ATTR_H) output.h diagnostic.h \
debug.h insn-config.h intl.h $(RECOG_H) Makefile toplev.h \
@@ -1361,6 +1361,9 @@ toplev.o : toplev.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) function.h \
-c $(srcdir)/toplev.c
main.o : main.c toplev.h
+rtl-error.o: rtl-error.c system.h $(RTL_H) $(INSN_ATTR_H) insn-config.h \
+ input.h toplev.h intl.h diagnostic.h
+
rtl.o : rtl.c $(GCONFIG_H) $(SYSTEM_H) $(RTL_H) real.h $(GGC_H) errors.h
$(CC) -c $(ALL_CFLAGS) -DGENERATOR_FILE $(ALL_CPPFLAGS) $(INCLUDES) $< $(OUTPUT_OPTION)
diff --git a/gcc/diagnostic.c b/gcc/diagnostic.c
index 0efcfd6..a23c836 100644
--- a/gcc/diagnostic.c
+++ b/gcc/diagnostic.c
@@ -27,14 +27,10 @@ Boston, MA 02111-1307, USA. */
#undef FLOAT /* This is for hpux. They should change hpux. */
#undef FFS /* Some systems define this in param.h. */
#include "system.h"
-
#include "tree.h"
-#include "rtl.h"
#include "tm_p.h"
#include "flags.h"
#include "input.h"
-#include "insn-attr.h"
-#include "insn-config.h"
#include "toplev.h"
#include "intl.h"
#include "diagnostic.h"
@@ -73,8 +69,6 @@ static char *build_message_string PARAMS ((const char *, ...))
static void output_do_printf PARAMS ((output_buffer *, const char *))
ATTRIBUTE_PRINTF (2, 0);
static void format_with_decl PARAMS ((output_buffer *, tree));
-static void file_and_line_for_asm PARAMS ((rtx, const char **, int *));
-static void diagnostic_for_asm PARAMS ((rtx, const char *, va_list *, int));
static void diagnostic_for_decl PARAMS ((tree, const char *, va_list *, int));
static void set_real_maximum_length PARAMS ((output_buffer *));
@@ -904,61 +898,6 @@ format_with_decl (buffer, decl)
}
}
-/* Figure file and line of the given INSN. */
-
-static void
-file_and_line_for_asm (insn, pfile, pline)
- rtx insn;
- const char **pfile;
- int *pline;
-{
- rtx body = PATTERN (insn);
- rtx asmop;
-
- /* Find the (or one of the) ASM_OPERANDS in the insn. */
- if (GET_CODE (body) == SET && GET_CODE (SET_SRC (body)) == ASM_OPERANDS)
- asmop = SET_SRC (body);
- else if (GET_CODE (body) == ASM_OPERANDS)
- asmop = body;
- else if (GET_CODE (body) == PARALLEL
- && GET_CODE (XVECEXP (body, 0, 0)) == SET)
- asmop = SET_SRC (XVECEXP (body, 0, 0));
- else if (GET_CODE (body) == PARALLEL
- && GET_CODE (XVECEXP (body, 0, 0)) == ASM_OPERANDS)
- asmop = XVECEXP (body, 0, 0);
- else
- asmop = NULL;
-
- if (asmop)
- {
- *pfile = ASM_OPERANDS_SOURCE_FILE (asmop);
- *pline = ASM_OPERANDS_SOURCE_LINE (asmop);
- }
- else
- {
- *pfile = input_filename;
- *pline = lineno;
- }
-}
-
-/* Report a diagnostic MESSAGE (an errror or a WARNING) at the line number
- of the insn INSN. This is used only when INSN is an `asm' with operands,
- and each ASM_OPERANDS records its own source file and line. */
-
-static void
-diagnostic_for_asm (insn, msg, args_ptr, warn)
- rtx insn;
- const char *msg;
- va_list *args_ptr;
- int warn;
-{
- diagnostic_context dc;
-
- set_diagnostic_context (&dc, msg, args_ptr, NULL, 0, warn);
- file_and_line_for_asm (insn, &diagnostic_file_location (&dc),
- &diagnostic_line_location (&dc));
- report_diagnostic (&dc);
-}
/* Report a diagnostic MESSAGE at the declaration DECL.
MSG is a format string which uses %s to substitute the declaration
@@ -1295,25 +1234,6 @@ error_with_decl VPARAMS ((tree decl, const char *msgid, ...))
va_end (ap);
}
-void
-error_for_asm VPARAMS ((rtx insn, const char *msgid, ...))
-{
-#ifndef ANSI_PROTOTYPES
- rtx insn;
- const char *msgid;
-#endif
- va_list ap;
-
- VA_START (ap, msgid);
-
-#ifndef ANSI_PROTOTYPES
- insn = va_arg (ap, rtx);
- msgid = va_arg (ap, const char *);
-#endif
-
- diagnostic_for_asm (insn, msgid, &ap, /* warn = */ 0);
- va_end (ap);
-}
/* Report an error message. The arguments are like that of printf. */
@@ -1417,38 +1337,6 @@ See %s for instructions.\n", GCCBUGURL);
}
void
-_fatal_insn (msgid, insn, file, line, function)
- const char *msgid;
- rtx insn;
- const char *file;
- int line;
- const char *function;
-{
- error ("%s", _(msgid));
-
- /* The above incremented error_count, but isn't an error that we want to
- count, so reset it here. */
- errorcount--;
-
- debug_rtx (insn);
- fancy_abort (file, line, function);
-}
-
-void
-_fatal_insn_not_found (insn, file, line, function)
- rtx insn;
- const char *file;
- int line;
- const char *function;
-{
- if (INSN_CODE (insn) < 0)
- _fatal_insn ("Unrecognizable insn:", insn, file, line, function);
- else
- _fatal_insn ("Insn does not satisfy its constraints:",
- insn, file, line, function);
-}
-
-void
warning_with_file_and_line VPARAMS ((const char *file, int line,
const char *msgid, ...))
{
@@ -1494,26 +1382,6 @@ warning_with_decl VPARAMS ((tree decl, const char *msgid, ...))
}
void
-warning_for_asm VPARAMS ((rtx insn, const char *msgid, ...))
-{
-#ifndef ANSI_PROTOTYPES
- rtx insn;
- const char *msgid;
-#endif
- va_list ap;
-
- VA_START (ap, msgid);
-
-#ifndef ANSI_PROTOTYPES
- insn = va_arg (ap, rtx);
- msgid = va_arg (ap, const char *);
-#endif
-
- diagnostic_for_asm (insn, msgid, &ap, /* warn = */ 1);
- va_end (ap);
-}
-
-void
warning VPARAMS ((const char *msgid, ...))
{
#ifndef ANSI_PROTOTYPES
diff --git a/gcc/rtl-error.c b/gcc/rtl-error.c
new file mode 100644
index 0000000..d9b9bb6
--- /dev/null
+++ b/gcc/rtl-error.c
@@ -0,0 +1,162 @@
+/* RTL specific diagnostic subroutines for the GNU C compiler
+ Copyright (C) 2001 Free Software Foundation, Inc.
+ Contributed by Gabriel Dos Reis <gdr@codesourcery.com>
+
+This file is part of GNU CC.
+
+GNU CC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU CC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU CC; see the file COPYING. If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+#include "config.h"
+#undef FLOAT /* This is for hpux. They should change hpux. */
+#undef FFS /* Some systems define this in param.h. */
+#include "system.h"
+#include "rtl.h"
+#include "insn-attr.h"
+#include "insn-config.h"
+#include "input.h"
+#include "toplev.h"
+#include "intl.h"
+#include "diagnostic.h"
+
+static void file_and_line_for_asm PARAMS ((rtx, const char **, int *));
+static void diagnostic_for_asm PARAMS ((rtx, const char *, va_list *, int));
+
+/* Figure file and line of the given INSN. */
+static void
+file_and_line_for_asm (insn, pfile, pline)
+ rtx insn;
+ const char **pfile;
+ int *pline;
+{
+ rtx body = PATTERN (insn);
+ rtx asmop;
+
+ /* Find the (or one of the) ASM_OPERANDS in the insn. */
+ if (GET_CODE (body) == SET && GET_CODE (SET_SRC (body)) == ASM_OPERANDS)
+ asmop = SET_SRC (body);
+ else if (GET_CODE (body) == ASM_OPERANDS)
+ asmop = body;
+ else if (GET_CODE (body) == PARALLEL
+ && GET_CODE (XVECEXP (body, 0, 0)) == SET)
+ asmop = SET_SRC (XVECEXP (body, 0, 0));
+ else if (GET_CODE (body) == PARALLEL
+ && GET_CODE (XVECEXP (body, 0, 0)) == ASM_OPERANDS)
+ asmop = XVECEXP (body, 0, 0);
+ else
+ asmop = NULL;
+
+ if (asmop)
+ {
+ *pfile = ASM_OPERANDS_SOURCE_FILE (asmop);
+ *pline = ASM_OPERANDS_SOURCE_LINE (asmop);
+ }
+ else
+ {
+ *pfile = input_filename;
+ *pline = lineno;
+ }
+}
+
+/* Report a diagnostic MESSAGE (an errror or a WARNING) at the line number
+ of the insn INSN. This is used only when INSN is an `asm' with operands,
+ and each ASM_OPERANDS records its own source file and line. */
+static void
+diagnostic_for_asm (insn, msg, args_ptr, warn)
+ rtx insn;
+ const char *msg;
+ va_list *args_ptr;
+ int warn;
+{
+ diagnostic_context dc;
+
+ set_diagnostic_context (&dc, msg, args_ptr, NULL, 0, warn);
+ file_and_line_for_asm (insn, &diagnostic_file_location (&dc),
+ &diagnostic_line_location (&dc));
+ report_diagnostic (&dc);
+}
+
+void
+error_for_asm VPARAMS ((rtx insn, const char *msgid, ...))
+{
+#ifndef ANSI_PROTOTYPES
+ rtx insn;
+ const char *msgid;
+#endif
+ va_list ap;
+
+ VA_START (ap, msgid);
+
+#ifndef ANSI_PROTOTYPES
+ insn = va_arg (ap, rtx);
+ msgid = va_arg (ap, const char *);
+#endif
+
+ diagnostic_for_asm (insn, msgid, &ap, /* warn = */ 0);
+ va_end (ap);
+}
+
+void
+warning_for_asm VPARAMS ((rtx insn, const char *msgid, ...))
+{
+#ifndef ANSI_PROTOTYPES
+ rtx insn;
+ const char *msgid;
+#endif
+ va_list ap;
+
+ VA_START (ap, msgid);
+
+#ifndef ANSI_PROTOTYPES
+ insn = va_arg (ap, rtx);
+ msgid = va_arg (ap, const char *);
+#endif
+
+ diagnostic_for_asm (insn, msgid, &ap, /* warn = */ 1);
+ va_end (ap);
+}
+
+void
+_fatal_insn (msgid, insn, file, line, function)
+ const char *msgid;
+ rtx insn;
+ const char *file;
+ int line;
+ const char *function;
+{
+ error ("%s", _(msgid));
+
+ /* The above incremented error_count, but isn't an error that we want to
+ count, so reset it here. */
+ errorcount--;
+
+ debug_rtx (insn);
+ fancy_abort (file, line, function);
+}
+
+void
+_fatal_insn_not_found (insn, file, line, function)
+ rtx insn;
+ const char *file;
+ int line;
+ const char *function;
+{
+ if (INSN_CODE (insn) < 0)
+ _fatal_insn ("Unrecognizable insn:", insn, file, line, function);
+ else
+ _fatal_insn ("Insn does not satisfy its constraints:",
+ insn, file, line, function);
+}
+