2000-04-22 13:49:16 +02:00
|
|
|
/* Various declarations for language-independent diagnostics subroutines.
|
2006-01-18 21:02:42 +01:00
|
|
|
Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006
|
c-semantics.c, [...]: Update copyright.
* c-semantics.c, cfghooks.c, diagnostic.h, loop-iv.c,
loop-unswitch.c, modulo-sched.c, stor-layout.c, tree-gimple.h,
config/i386/cygwin1.c, doc/cfg.texi, doc/objc.texi: Update
copyright.
From-SVN: r96100
2005-03-08 13:49:01 +01:00
|
|
|
Free Software Foundation, Inc.
|
2000-04-22 13:49:16 +02:00
|
|
|
Contributed by Gabriel Dos Reis <gdr@codesourcery.com>
|
|
|
|
|
Makefile.in, [...]: replace "GNU CC" with "GCC".
* Makefile.in, alias.c, basic-block.h, bb-reorder.c, bitmap.c,
bitmap.h, builtin-types.def, builtins.c, builtins.def,
c-aux-info.c, c-common.c, c-common.def, c-common.h,
c-convert.c, c-decl.c, c-dump.c, c-dump.h, c-errors.c,
c-format.c, c-lang.c, c-lex.c, c-lex.h, c-parse.in,
c-pragma.c, c-pragma.h, c-semantics.c, c-tree.h, c-typeck.c,
caller-save.c, calls.c, collect2.c, collect2.h, combine.c,
conditions.h, config.gcc, configure.frag, configure.in,
conflict.c, convert.c, convert.h, cppspec.c, crtstuff.c,
cse.c, cselib.c, cselib.h, dbxout.c, dbxout.h, defaults.h,
dependence.c, df.c, df.h, diagnostic.c, diagnostic.h,
doloop.c, dominance.c, dwarf.h, dwarf2.h, dwarf2asm.c,
dwarf2asm.h, dwarf2out.c, dwarf2out.h, dwarfout.c,
emit-rtl.c, errors.c, errors.h, except.c, except.h,
exgettext, explow.c, expmed.c, expr.c, expr.h, final.c,
fixproto, flags.h, flow.c, fold-const.c, fp-test.c,
function.c, function.h, gbl-ctors.h, gcc.c, gcc.h, gcc.hlp,
gccspec.c, gcov-io.h, gcse.c, genattr.c, genattrtab.c,
gencheck.c, gencodes.c, genconfig.c, genemit.c,
genextract.c, genflags.c, gengenrtl.c, genmultilib,
genopinit.c, genoutput.c, genpeep.c, genrecog.c,
gensupport.c, gensupport.h, ggc-callbacks.c, ggc-common.c,
ggc-none.c, ggc-page.c, ggc-simple.c, ggc.h, global.c,
graph.c, graph.h, gthr-aix.h, gthr-dce.h, gthr-posix.h,
gthr-rtems.h, gthr-single.h, gthr-solaris.h, gthr-vxworks.h,
gthr-win32.h, gthr.h, haifa-sched.c, halfpic.c, halfpic.h,
hard-reg-set.h, hwint.h, ifcvt.c, input.h, insn-addr.h,
integrate.c, integrate.h, jump.c, lcm.c, libgcc2.c,
libgcc2.h, lists.c, local-alloc.c, loop.c, loop.h,
machmode.def, machmode.h, main.c, mbchar.c, mbchar.h,
mips-tdump.c, mips-tfile.c, mklibgcc.in, mkmap-flat.awk,
mkmap-symver.awk, optabs.c, output.h, params.c, params.def,
params.h, predict.c, predict.def, predict.h, prefix.c,
prefix.h, print-rtl.c, print-tree.c, profile.c, protoize.c,
read-rtl.c, real.c, real.h, recog.c, recog.h, reg-stack.c,
regclass.c, regmove.c, regrename.c, regs.h, reload.c,
reload.h, reload1.c, reorg.c, resource.c, resource.h, rtl.c,
rtl.def, rtl.h, rtlanal.c, sbitmap.c, sbitmap.h,
sched-deps.c, sched-ebb.c, sched-int.h, sched-rgn.c,
sched-vis.c, sdbout.c, sdbout.h, sibcall.c, simplify-rtx.c,
ssa-ccp.c, ssa-dce.c, ssa.c, ssa.h, stmt.c, stor-layout.c,
stringpool.c, system.h, timevar.c, timevar.def, timevar.h,
tlink.c, toplev.c, toplev.h, tree.c, tree.def, tree.h,
tsystem.h, unroll.c, unwind-dw2-fde.c, unwind-dw2-fde.h,
unwind-dw2.c, unwind-pe.h, unwind-sjlj.c, unwind.h,
unwind.inc, varasm.c, varray.c, varray.h, xcoffout.c,
xcoffout.h: replace "GNU CC" with "GCC".
From-SVN: r45105
2001-08-22 16:35:51 +02:00
|
|
|
This file is part of GCC.
|
2000-04-22 13:49:16 +02:00
|
|
|
|
Makefile.in, [...]: replace "GNU CC" with "GCC".
* Makefile.in, alias.c, basic-block.h, bb-reorder.c, bitmap.c,
bitmap.h, builtin-types.def, builtins.c, builtins.def,
c-aux-info.c, c-common.c, c-common.def, c-common.h,
c-convert.c, c-decl.c, c-dump.c, c-dump.h, c-errors.c,
c-format.c, c-lang.c, c-lex.c, c-lex.h, c-parse.in,
c-pragma.c, c-pragma.h, c-semantics.c, c-tree.h, c-typeck.c,
caller-save.c, calls.c, collect2.c, collect2.h, combine.c,
conditions.h, config.gcc, configure.frag, configure.in,
conflict.c, convert.c, convert.h, cppspec.c, crtstuff.c,
cse.c, cselib.c, cselib.h, dbxout.c, dbxout.h, defaults.h,
dependence.c, df.c, df.h, diagnostic.c, diagnostic.h,
doloop.c, dominance.c, dwarf.h, dwarf2.h, dwarf2asm.c,
dwarf2asm.h, dwarf2out.c, dwarf2out.h, dwarfout.c,
emit-rtl.c, errors.c, errors.h, except.c, except.h,
exgettext, explow.c, expmed.c, expr.c, expr.h, final.c,
fixproto, flags.h, flow.c, fold-const.c, fp-test.c,
function.c, function.h, gbl-ctors.h, gcc.c, gcc.h, gcc.hlp,
gccspec.c, gcov-io.h, gcse.c, genattr.c, genattrtab.c,
gencheck.c, gencodes.c, genconfig.c, genemit.c,
genextract.c, genflags.c, gengenrtl.c, genmultilib,
genopinit.c, genoutput.c, genpeep.c, genrecog.c,
gensupport.c, gensupport.h, ggc-callbacks.c, ggc-common.c,
ggc-none.c, ggc-page.c, ggc-simple.c, ggc.h, global.c,
graph.c, graph.h, gthr-aix.h, gthr-dce.h, gthr-posix.h,
gthr-rtems.h, gthr-single.h, gthr-solaris.h, gthr-vxworks.h,
gthr-win32.h, gthr.h, haifa-sched.c, halfpic.c, halfpic.h,
hard-reg-set.h, hwint.h, ifcvt.c, input.h, insn-addr.h,
integrate.c, integrate.h, jump.c, lcm.c, libgcc2.c,
libgcc2.h, lists.c, local-alloc.c, loop.c, loop.h,
machmode.def, machmode.h, main.c, mbchar.c, mbchar.h,
mips-tdump.c, mips-tfile.c, mklibgcc.in, mkmap-flat.awk,
mkmap-symver.awk, optabs.c, output.h, params.c, params.def,
params.h, predict.c, predict.def, predict.h, prefix.c,
prefix.h, print-rtl.c, print-tree.c, profile.c, protoize.c,
read-rtl.c, real.c, real.h, recog.c, recog.h, reg-stack.c,
regclass.c, regmove.c, regrename.c, regs.h, reload.c,
reload.h, reload1.c, reorg.c, resource.c, resource.h, rtl.c,
rtl.def, rtl.h, rtlanal.c, sbitmap.c, sbitmap.h,
sched-deps.c, sched-ebb.c, sched-int.h, sched-rgn.c,
sched-vis.c, sdbout.c, sdbout.h, sibcall.c, simplify-rtx.c,
ssa-ccp.c, ssa-dce.c, ssa.c, ssa.h, stmt.c, stor-layout.c,
stringpool.c, system.h, timevar.c, timevar.def, timevar.h,
tlink.c, toplev.c, toplev.h, tree.c, tree.def, tree.h,
tsystem.h, unroll.c, unwind-dw2-fde.c, unwind-dw2-fde.h,
unwind-dw2.c, unwind-pe.h, unwind-sjlj.c, unwind.h,
unwind.inc, varasm.c, varray.c, varray.h, xcoffout.c,
xcoffout.h: replace "GNU CC" with "GCC".
From-SVN: r45105
2001-08-22 16:35:51 +02:00
|
|
|
GCC 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.
|
2000-04-22 13:49:16 +02:00
|
|
|
|
Makefile.in, [...]: replace "GNU CC" with "GCC".
* Makefile.in, alias.c, basic-block.h, bb-reorder.c, bitmap.c,
bitmap.h, builtin-types.def, builtins.c, builtins.def,
c-aux-info.c, c-common.c, c-common.def, c-common.h,
c-convert.c, c-decl.c, c-dump.c, c-dump.h, c-errors.c,
c-format.c, c-lang.c, c-lex.c, c-lex.h, c-parse.in,
c-pragma.c, c-pragma.h, c-semantics.c, c-tree.h, c-typeck.c,
caller-save.c, calls.c, collect2.c, collect2.h, combine.c,
conditions.h, config.gcc, configure.frag, configure.in,
conflict.c, convert.c, convert.h, cppspec.c, crtstuff.c,
cse.c, cselib.c, cselib.h, dbxout.c, dbxout.h, defaults.h,
dependence.c, df.c, df.h, diagnostic.c, diagnostic.h,
doloop.c, dominance.c, dwarf.h, dwarf2.h, dwarf2asm.c,
dwarf2asm.h, dwarf2out.c, dwarf2out.h, dwarfout.c,
emit-rtl.c, errors.c, errors.h, except.c, except.h,
exgettext, explow.c, expmed.c, expr.c, expr.h, final.c,
fixproto, flags.h, flow.c, fold-const.c, fp-test.c,
function.c, function.h, gbl-ctors.h, gcc.c, gcc.h, gcc.hlp,
gccspec.c, gcov-io.h, gcse.c, genattr.c, genattrtab.c,
gencheck.c, gencodes.c, genconfig.c, genemit.c,
genextract.c, genflags.c, gengenrtl.c, genmultilib,
genopinit.c, genoutput.c, genpeep.c, genrecog.c,
gensupport.c, gensupport.h, ggc-callbacks.c, ggc-common.c,
ggc-none.c, ggc-page.c, ggc-simple.c, ggc.h, global.c,
graph.c, graph.h, gthr-aix.h, gthr-dce.h, gthr-posix.h,
gthr-rtems.h, gthr-single.h, gthr-solaris.h, gthr-vxworks.h,
gthr-win32.h, gthr.h, haifa-sched.c, halfpic.c, halfpic.h,
hard-reg-set.h, hwint.h, ifcvt.c, input.h, insn-addr.h,
integrate.c, integrate.h, jump.c, lcm.c, libgcc2.c,
libgcc2.h, lists.c, local-alloc.c, loop.c, loop.h,
machmode.def, machmode.h, main.c, mbchar.c, mbchar.h,
mips-tdump.c, mips-tfile.c, mklibgcc.in, mkmap-flat.awk,
mkmap-symver.awk, optabs.c, output.h, params.c, params.def,
params.h, predict.c, predict.def, predict.h, prefix.c,
prefix.h, print-rtl.c, print-tree.c, profile.c, protoize.c,
read-rtl.c, real.c, real.h, recog.c, recog.h, reg-stack.c,
regclass.c, regmove.c, regrename.c, regs.h, reload.c,
reload.h, reload1.c, reorg.c, resource.c, resource.h, rtl.c,
rtl.def, rtl.h, rtlanal.c, sbitmap.c, sbitmap.h,
sched-deps.c, sched-ebb.c, sched-int.h, sched-rgn.c,
sched-vis.c, sdbout.c, sdbout.h, sibcall.c, simplify-rtx.c,
ssa-ccp.c, ssa-dce.c, ssa.c, ssa.h, stmt.c, stor-layout.c,
stringpool.c, system.h, timevar.c, timevar.def, timevar.h,
tlink.c, toplev.c, toplev.h, tree.c, tree.def, tree.h,
tsystem.h, unroll.c, unwind-dw2-fde.c, unwind-dw2-fde.h,
unwind-dw2.c, unwind-pe.h, unwind-sjlj.c, unwind.h,
unwind.inc, varasm.c, varray.c, varray.h, xcoffout.c,
xcoffout.h: replace "GNU CC" with "GCC".
From-SVN: r45105
2001-08-22 16:35:51 +02:00
|
|
|
GCC 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.
|
2000-04-22 13:49:16 +02:00
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License
|
Makefile.in, [...]: replace "GNU CC" with "GCC".
* Makefile.in, alias.c, basic-block.h, bb-reorder.c, bitmap.c,
bitmap.h, builtin-types.def, builtins.c, builtins.def,
c-aux-info.c, c-common.c, c-common.def, c-common.h,
c-convert.c, c-decl.c, c-dump.c, c-dump.h, c-errors.c,
c-format.c, c-lang.c, c-lex.c, c-lex.h, c-parse.in,
c-pragma.c, c-pragma.h, c-semantics.c, c-tree.h, c-typeck.c,
caller-save.c, calls.c, collect2.c, collect2.h, combine.c,
conditions.h, config.gcc, configure.frag, configure.in,
conflict.c, convert.c, convert.h, cppspec.c, crtstuff.c,
cse.c, cselib.c, cselib.h, dbxout.c, dbxout.h, defaults.h,
dependence.c, df.c, df.h, diagnostic.c, diagnostic.h,
doloop.c, dominance.c, dwarf.h, dwarf2.h, dwarf2asm.c,
dwarf2asm.h, dwarf2out.c, dwarf2out.h, dwarfout.c,
emit-rtl.c, errors.c, errors.h, except.c, except.h,
exgettext, explow.c, expmed.c, expr.c, expr.h, final.c,
fixproto, flags.h, flow.c, fold-const.c, fp-test.c,
function.c, function.h, gbl-ctors.h, gcc.c, gcc.h, gcc.hlp,
gccspec.c, gcov-io.h, gcse.c, genattr.c, genattrtab.c,
gencheck.c, gencodes.c, genconfig.c, genemit.c,
genextract.c, genflags.c, gengenrtl.c, genmultilib,
genopinit.c, genoutput.c, genpeep.c, genrecog.c,
gensupport.c, gensupport.h, ggc-callbacks.c, ggc-common.c,
ggc-none.c, ggc-page.c, ggc-simple.c, ggc.h, global.c,
graph.c, graph.h, gthr-aix.h, gthr-dce.h, gthr-posix.h,
gthr-rtems.h, gthr-single.h, gthr-solaris.h, gthr-vxworks.h,
gthr-win32.h, gthr.h, haifa-sched.c, halfpic.c, halfpic.h,
hard-reg-set.h, hwint.h, ifcvt.c, input.h, insn-addr.h,
integrate.c, integrate.h, jump.c, lcm.c, libgcc2.c,
libgcc2.h, lists.c, local-alloc.c, loop.c, loop.h,
machmode.def, machmode.h, main.c, mbchar.c, mbchar.h,
mips-tdump.c, mips-tfile.c, mklibgcc.in, mkmap-flat.awk,
mkmap-symver.awk, optabs.c, output.h, params.c, params.def,
params.h, predict.c, predict.def, predict.h, prefix.c,
prefix.h, print-rtl.c, print-tree.c, profile.c, protoize.c,
read-rtl.c, real.c, real.h, recog.c, recog.h, reg-stack.c,
regclass.c, regmove.c, regrename.c, regs.h, reload.c,
reload.h, reload1.c, reorg.c, resource.c, resource.h, rtl.c,
rtl.def, rtl.h, rtlanal.c, sbitmap.c, sbitmap.h,
sched-deps.c, sched-ebb.c, sched-int.h, sched-rgn.c,
sched-vis.c, sdbout.c, sdbout.h, sibcall.c, simplify-rtx.c,
ssa-ccp.c, ssa-dce.c, ssa.c, ssa.h, stmt.c, stor-layout.c,
stringpool.c, system.h, timevar.c, timevar.def, timevar.h,
tlink.c, toplev.c, toplev.h, tree.c, tree.def, tree.h,
tsystem.h, unroll.c, unwind-dw2-fde.c, unwind-dw2-fde.h,
unwind-dw2.c, unwind-pe.h, unwind-sjlj.c, unwind.h,
unwind.inc, varasm.c, varray.c, varray.h, xcoffout.c,
xcoffout.h: replace "GNU CC" with "GCC".
From-SVN: r45105
2001-08-22 16:35:51 +02:00
|
|
|
along with GCC; see the file COPYING. If not, write to the Free
|
2005-06-25 04:02:01 +02:00
|
|
|
Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
|
|
|
|
02110-1301, USA. */
|
2000-04-22 13:49:16 +02:00
|
|
|
|
2001-05-26 03:31:47 +02:00
|
|
|
#ifndef GCC_DIAGNOSTIC_H
|
|
|
|
#define GCC_DIAGNOSTIC_H
|
2000-04-22 13:49:16 +02:00
|
|
|
|
2003-07-25 11:52:32 +02:00
|
|
|
#include "pretty-print.h"
|
2006-01-19 05:24:22 +01:00
|
|
|
#include "options.h"
|
2000-04-22 13:49:16 +02:00
|
|
|
|
2003-07-05 17:17:36 +02:00
|
|
|
/* Constants used to discriminate diagnostics. */
|
2001-05-01 10:19:45 +02:00
|
|
|
typedef enum
|
|
|
|
{
|
2004-02-05 21:44:49 +01:00
|
|
|
#define DEFINE_DIAGNOSTIC_KIND(K, msgid) K,
|
2001-05-01 10:19:45 +02:00
|
|
|
#include "diagnostic.def"
|
|
|
|
#undef DEFINE_DIAGNOSTIC_KIND
|
|
|
|
DK_LAST_DIAGNOSTIC_KIND
|
|
|
|
} diagnostic_t;
|
|
|
|
|
2002-06-05 21:35:45 +02:00
|
|
|
/* A diagnostic is described by the MESSAGE to send, the FILE and LINE of
|
|
|
|
its context and its KIND (ice, error, warning, note, ...) See complete
|
|
|
|
list in diagnostic.def. */
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
text_info message;
|
|
|
|
location_t location;
|
|
|
|
/* The kind of diagnostic it is about. */
|
|
|
|
diagnostic_t kind;
|
2005-05-03 19:55:46 +02:00
|
|
|
/* Which OPT_* directly controls this diagnostic. */
|
|
|
|
int option_index;
|
2002-06-05 21:35:45 +02:00
|
|
|
} diagnostic_info;
|
|
|
|
|
2001-05-01 10:19:45 +02:00
|
|
|
#define pedantic_error_kind() (flag_pedantic_errors ? DK_ERROR : DK_WARNING)
|
|
|
|
|
2002-07-29 10:26:45 +02:00
|
|
|
|
2002-06-05 21:35:45 +02:00
|
|
|
/* Forward declarations. */
|
|
|
|
typedef struct diagnostic_context diagnostic_context;
|
2003-06-08 16:21:54 +02:00
|
|
|
typedef void (*diagnostic_starter_fn) (diagnostic_context *,
|
|
|
|
diagnostic_info *);
|
2002-06-05 21:35:45 +02:00
|
|
|
typedef diagnostic_starter_fn diagnostic_finalizer_fn;
|
|
|
|
|
2000-12-01 20:31:01 +01:00
|
|
|
/* This data structure bundles altogether any information relevant to
|
c-errors.c (pedwarn_c99): Adjust call to report_diagnostic.
* c-errors.c (pedwarn_c99): Adjust call to report_diagnostic.
* diagnostic.c (default_diagnostic_starter,
default_diagnostic_finalizer): New functions.
(diagnostic_for_asm, diagnostic_for_decl): Tweak.
(pedwarn, pedwarn_with_file_and_line, error,
error_with_file_and_line, fatal, warning,
warning_with_file_and_line): Adjust call to report_diagnostic.
(report_diagnostic): Rework.
(set_diagnostic_context): New function.
* diagnostic.h (struct diagnostic_context): New data structure.
(diagnostic_message, diagnostic_argument_list,
diagnostic_file_location, diagnostic_line_location,
diagnostic_is_warning, diagnostic_starter, diagnostic_finalizer,
diagnostic_finalizer, diagnostic_auxiliary_data): New macros.
(set_diagnostic_context): Declare.
(report_diagnostic): Change prototype.
From-SVN: r35817
2000-08-20 11:50:12 +02:00
|
|
|
the context of a diagnostic message. */
|
|
|
|
struct diagnostic_context
|
|
|
|
{
|
2003-08-22 08:25:09 +02:00
|
|
|
/* Where most of the diagnostic formatting work is done. */
|
2003-07-25 11:52:32 +02:00
|
|
|
pretty_printer *printer;
|
2001-06-26 16:06:07 +02:00
|
|
|
|
2002-06-03 21:08:59 +02:00
|
|
|
/* The number of times we have issued diagnostics. */
|
|
|
|
int diagnostic_count[DK_LAST_DIAGNOSTIC_KIND];
|
|
|
|
|
2002-06-12 01:11:34 +02:00
|
|
|
/* True if we should display the "warnings are being tread as error"
|
|
|
|
message, usually displayed once per compiler run. */
|
2004-08-30 06:48:34 +02:00
|
|
|
bool issue_warnings_are_errors_message;
|
|
|
|
|
|
|
|
/* True if it has been requested that warnings be treated as errors. */
|
|
|
|
bool warning_as_error_requested;
|
2002-06-12 01:11:34 +02:00
|
|
|
|
2006-01-18 21:02:42 +01:00
|
|
|
/* For each option index that can be passed to warning() et all
|
|
|
|
(OPT_* from options.h), this array may contain a new kind that
|
|
|
|
the diagnostic should be changed to before reporting, or
|
|
|
|
DK_UNSPECIFIED to leave it as the reported kind, or DK_IGNORED to
|
|
|
|
not report it at all. N_OPTS is from <options.h>. */
|
|
|
|
char classify_diagnostic[N_OPTS];
|
|
|
|
|
2005-05-04 03:36:13 +02:00
|
|
|
/* True if we should print the command line option which controls
|
|
|
|
each diagnostic, if known. */
|
|
|
|
bool show_option_requested;
|
|
|
|
|
2003-02-12 02:05:47 +01:00
|
|
|
/* True if we should raise a SIGABRT on errors. */
|
|
|
|
bool abort_on_error;
|
|
|
|
|
c-errors.c (pedwarn_c99): Adjust call to report_diagnostic.
* c-errors.c (pedwarn_c99): Adjust call to report_diagnostic.
* diagnostic.c (default_diagnostic_starter,
default_diagnostic_finalizer): New functions.
(diagnostic_for_asm, diagnostic_for_decl): Tweak.
(pedwarn, pedwarn_with_file_and_line, error,
error_with_file_and_line, fatal, warning,
warning_with_file_and_line): Adjust call to report_diagnostic.
(report_diagnostic): Rework.
(set_diagnostic_context): New function.
* diagnostic.h (struct diagnostic_context): New data structure.
(diagnostic_message, diagnostic_argument_list,
diagnostic_file_location, diagnostic_line_location,
diagnostic_is_warning, diagnostic_starter, diagnostic_finalizer,
diagnostic_finalizer, diagnostic_auxiliary_data): New macros.
(set_diagnostic_context): Declare.
(report_diagnostic): Change prototype.
From-SVN: r35817
2000-08-20 11:50:12 +02:00
|
|
|
/* This function is called before any message is printed out. It is
|
2000-12-01 20:31:01 +01:00
|
|
|
responsible for preparing message prefix and such. For example, it
|
c-errors.c (pedwarn_c99): Adjust call to report_diagnostic.
* c-errors.c (pedwarn_c99): Adjust call to report_diagnostic.
* diagnostic.c (default_diagnostic_starter,
default_diagnostic_finalizer): New functions.
(diagnostic_for_asm, diagnostic_for_decl): Tweak.
(pedwarn, pedwarn_with_file_and_line, error,
error_with_file_and_line, fatal, warning,
warning_with_file_and_line): Adjust call to report_diagnostic.
(report_diagnostic): Rework.
(set_diagnostic_context): New function.
* diagnostic.h (struct diagnostic_context): New data structure.
(diagnostic_message, diagnostic_argument_list,
diagnostic_file_location, diagnostic_line_location,
diagnostic_is_warning, diagnostic_starter, diagnostic_finalizer,
diagnostic_finalizer, diagnostic_auxiliary_data): New macros.
(set_diagnostic_context): Declare.
(report_diagnostic): Change prototype.
From-SVN: r35817
2000-08-20 11:50:12 +02:00
|
|
|
might say:
|
|
|
|
In file included from "/usr/local/include/curses.h:5:
|
|
|
|
from "/home/gdr/src/nifty_printer.h:56:
|
|
|
|
...
|
|
|
|
*/
|
2002-06-05 21:35:45 +02:00
|
|
|
diagnostic_starter_fn begin_diagnostic;
|
c-errors.c (pedwarn_c99): Adjust call to report_diagnostic.
* c-errors.c (pedwarn_c99): Adjust call to report_diagnostic.
* diagnostic.c (default_diagnostic_starter,
default_diagnostic_finalizer): New functions.
(diagnostic_for_asm, diagnostic_for_decl): Tweak.
(pedwarn, pedwarn_with_file_and_line, error,
error_with_file_and_line, fatal, warning,
warning_with_file_and_line): Adjust call to report_diagnostic.
(report_diagnostic): Rework.
(set_diagnostic_context): New function.
* diagnostic.h (struct diagnostic_context): New data structure.
(diagnostic_message, diagnostic_argument_list,
diagnostic_file_location, diagnostic_line_location,
diagnostic_is_warning, diagnostic_starter, diagnostic_finalizer,
diagnostic_finalizer, diagnostic_auxiliary_data): New macros.
(set_diagnostic_context): Declare.
(report_diagnostic): Change prototype.
From-SVN: r35817
2000-08-20 11:50:12 +02:00
|
|
|
|
2001-10-11 14:43:43 +02:00
|
|
|
/* This function is called after the diagnostic message is printed. */
|
2002-06-05 21:35:45 +02:00
|
|
|
diagnostic_finalizer_fn end_diagnostic;
|
c-errors.c (pedwarn_c99): Adjust call to report_diagnostic.
* c-errors.c (pedwarn_c99): Adjust call to report_diagnostic.
* diagnostic.c (default_diagnostic_starter,
default_diagnostic_finalizer): New functions.
(diagnostic_for_asm, diagnostic_for_decl): Tweak.
(pedwarn, pedwarn_with_file_and_line, error,
error_with_file_and_line, fatal, warning,
warning_with_file_and_line): Adjust call to report_diagnostic.
(report_diagnostic): Rework.
(set_diagnostic_context): New function.
* diagnostic.h (struct diagnostic_context): New data structure.
(diagnostic_message, diagnostic_argument_list,
diagnostic_file_location, diagnostic_line_location,
diagnostic_is_warning, diagnostic_starter, diagnostic_finalizer,
diagnostic_finalizer, diagnostic_auxiliary_data): New macros.
(set_diagnostic_context): Declare.
(report_diagnostic): Change prototype.
From-SVN: r35817
2000-08-20 11:50:12 +02:00
|
|
|
|
2002-06-02 21:06:30 +02:00
|
|
|
/* Client hook to report an internal error. */
|
2003-06-08 16:21:54 +02:00
|
|
|
void (*internal_error) (const char *, va_list *);
|
2002-06-02 21:06:30 +02:00
|
|
|
|
2002-06-05 21:35:45 +02:00
|
|
|
/* Function of last diagnostic message; more generally, function such that
|
|
|
|
if next diagnostic message is in it then we don't have to mention the
|
|
|
|
function name. */
|
|
|
|
tree last_function;
|
|
|
|
|
|
|
|
/* Used to detect when input_file_stack has changed since last described. */
|
|
|
|
int last_module;
|
|
|
|
|
|
|
|
int lock;
|
c-errors.c (pedwarn_c99): Adjust call to report_diagnostic.
* c-errors.c (pedwarn_c99): Adjust call to report_diagnostic.
* diagnostic.c (default_diagnostic_starter,
default_diagnostic_finalizer): New functions.
(diagnostic_for_asm, diagnostic_for_decl): Tweak.
(pedwarn, pedwarn_with_file_and_line, error,
error_with_file_and_line, fatal, warning,
warning_with_file_and_line): Adjust call to report_diagnostic.
(report_diagnostic): Rework.
(set_diagnostic_context): New function.
* diagnostic.h (struct diagnostic_context): New data structure.
(diagnostic_message, diagnostic_argument_list,
diagnostic_file_location, diagnostic_line_location,
diagnostic_is_warning, diagnostic_starter, diagnostic_finalizer,
diagnostic_finalizer, diagnostic_auxiliary_data): New macros.
(set_diagnostic_context): Declare.
(report_diagnostic): Change prototype.
From-SVN: r35817
2000-08-20 11:50:12 +02:00
|
|
|
};
|
|
|
|
|
2001-06-27 20:03:03 +02:00
|
|
|
/* Client supplied function to announce a diagnostic. */
|
c-errors.c (pedwarn_c99): Adjust call to report_diagnostic.
* c-errors.c (pedwarn_c99): Adjust call to report_diagnostic.
* diagnostic.c (default_diagnostic_starter,
default_diagnostic_finalizer): New functions.
(diagnostic_for_asm, diagnostic_for_decl): Tweak.
(pedwarn, pedwarn_with_file_and_line, error,
error_with_file_and_line, fatal, warning,
warning_with_file_and_line): Adjust call to report_diagnostic.
(report_diagnostic): Rework.
(set_diagnostic_context): New function.
* diagnostic.h (struct diagnostic_context): New data structure.
(diagnostic_message, diagnostic_argument_list,
diagnostic_file_location, diagnostic_line_location,
diagnostic_is_warning, diagnostic_starter, diagnostic_finalizer,
diagnostic_finalizer, diagnostic_auxiliary_data): New macros.
(set_diagnostic_context): Declare.
(report_diagnostic): Change prototype.
From-SVN: r35817
2000-08-20 11:50:12 +02:00
|
|
|
#define diagnostic_starter(DC) (DC)->begin_diagnostic
|
2001-06-27 20:03:03 +02:00
|
|
|
|
|
|
|
/* Client supplied function called after a diagnostic message is
|
|
|
|
displayed. */
|
c-errors.c (pedwarn_c99): Adjust call to report_diagnostic.
* c-errors.c (pedwarn_c99): Adjust call to report_diagnostic.
* diagnostic.c (default_diagnostic_starter,
default_diagnostic_finalizer): New functions.
(diagnostic_for_asm, diagnostic_for_decl): Tweak.
(pedwarn, pedwarn_with_file_and_line, error,
error_with_file_and_line, fatal, warning,
warning_with_file_and_line): Adjust call to report_diagnostic.
(report_diagnostic): Rework.
(set_diagnostic_context): New function.
* diagnostic.h (struct diagnostic_context): New data structure.
(diagnostic_message, diagnostic_argument_list,
diagnostic_file_location, diagnostic_line_location,
diagnostic_is_warning, diagnostic_starter, diagnostic_finalizer,
diagnostic_finalizer, diagnostic_auxiliary_data): New macros.
(set_diagnostic_context): Declare.
(report_diagnostic): Change prototype.
From-SVN: r35817
2000-08-20 11:50:12 +02:00
|
|
|
#define diagnostic_finalizer(DC) (DC)->end_diagnostic
|
2001-06-27 20:03:03 +02:00
|
|
|
|
ChangeLog.0, [...]: Fix spelling errors.
* ChangeLog.0, ChangeLog.1, ChangeLog.2, ChangeLog.3, ChangeLog.4,
ChangeLog.5, ChangeLog, ChangeLog.lib, FSFChangeLog.10, ONEWS,
c-common.c, caller-save.c, cfg.c, cfgcleanup.c, cfgrtl.c,
collect2.c, df.h, diagnostic.h, final.c, gcse.c, gthr.h,
haifa-sched.c, jump.c, local-alloc.c, profile.c, protoize.c,
regmove.c, reload1.c, rtlanal.c, sched-vis.c, ssa.c, stmt.c,
system.h, toplev.c: Fix spelling errors.
From-SVN: r46580
2001-10-28 13:42:06 +01:00
|
|
|
/* Extension hook for client. */
|
c-errors.c (pedwarn_c99): Adjust call to report_diagnostic.
* c-errors.c (pedwarn_c99): Adjust call to report_diagnostic.
* diagnostic.c (default_diagnostic_starter,
default_diagnostic_finalizer): New functions.
(diagnostic_for_asm, diagnostic_for_decl): Tweak.
(pedwarn, pedwarn_with_file_and_line, error,
error_with_file_and_line, fatal, warning,
warning_with_file_and_line): Adjust call to report_diagnostic.
(report_diagnostic): Rework.
(set_diagnostic_context): New function.
* diagnostic.h (struct diagnostic_context): New data structure.
(diagnostic_message, diagnostic_argument_list,
diagnostic_file_location, diagnostic_line_location,
diagnostic_is_warning, diagnostic_starter, diagnostic_finalizer,
diagnostic_finalizer, diagnostic_auxiliary_data): New macros.
(set_diagnostic_context): Declare.
(report_diagnostic): Change prototype.
From-SVN: r35817
2000-08-20 11:50:12 +02:00
|
|
|
#define diagnostic_auxiliary_data(DC) (DC)->x_data
|
2001-06-27 20:03:03 +02:00
|
|
|
|
2003-07-25 11:52:32 +02:00
|
|
|
/* Same as pp_format_decoder. Works on 'diagnostic_context *'. */
|
2003-08-05 21:23:14 +02:00
|
|
|
#define diagnostic_format_decoder(DC) ((DC)->printer->format_decoder)
|
2001-06-27 20:03:03 +02:00
|
|
|
|
2002-04-15 01:35:36 +02:00
|
|
|
/* Same as output_prefixing_rule. Works on 'diagnostic_context *'. */
|
pretty-print.h (PP_NL_ARGMAX): New.
gcc:
* pretty-print.h (PP_NL_ARGMAX): New.
(text_info): Add locus.
(struct chunk_info): New.
(output_buffer): Add formatted_obstack, chunk_obstack, and
cur_chunk_array. Change obstack to a pointer.
(pp_wrapping_mode_t, pp_wrapping_mode, pp_set_verbatim_wrapping): New.
(struct pretty_print_info): Replace ideal_maximum_length and
prefixing_rule with wrapping.
(pp_line_cutoff, pp_prefixing_rule): Update to match.
Update prototypes and wrapper macros throughout.
* pretty-print.c (pp_formatted_text_data, pp_append_r)
(pp_base_clear_output_area, pp_construct, pp_base_formatted_text)
(pp_base_last_position_in_text, pp_base_newline, pp_base_character):
Update for changes to pp structure.
(pp_base_prepare_to_format, pp_base_format_text): Delete.
(pp_base_format, pp_base_output_formatted_text): New functions.
(pp_base_format_verbatim): Use pp_set_verbatim_wrapping.
(pp_verbatim): Clear text.locus.
(pp_printf): Likewise. Use pp_format and pp_output_formatted_text.
* c-objc-common.c (c_tree_printer): Update function signature.
* diagnostic.c (diagnostic_initialize): Update for changes to
pp structure.
(diagnostic_report_diagnostic): Call pp_format and then
pp_output_formatted_text.
(verbatim): Clear text.locus.
* diagnostic.h (diagnostic_prefixing_rule, diagnostic_line_cutoff):
Update for changes to pp structure.
* c-lang.c: No need to include c-pretty-print.h.
* Makefile.in: Remove bogus line containing only a tab.
(c-lang.o): Update dependencies.
* toplev.c (announce_function): Don't use verbatim.
(default_tree_printer): Update signature.
* objc/objc-lang.c: No need to include c-pretty-print.h.
* objc/Make-lang.in: Update dependencies.
gcc/cp:
* cp-lang.c: No need to include cxx-pretty-print.h.
* error.c (cp_printer): Update signature. No need to process
flags.
(print_instantiation_partial_context): Output last newline
with pp_base_newline.
* Make-lang.in: Update dependencies.
gcc/objcp:
* objcp-lang.c: No need to include cxx-pretty-print.h.
* Make-lang.in: Update dependencies.
Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
From-SVN: r101481
2005-07-01 01:09:06 +02:00
|
|
|
#define diagnostic_prefixing_rule(DC) ((DC)->printer->wrapping.rule)
|
c-errors.c (pedwarn_c99): Adjust call to report_diagnostic.
* c-errors.c (pedwarn_c99): Adjust call to report_diagnostic.
* diagnostic.c (default_diagnostic_starter,
default_diagnostic_finalizer): New functions.
(diagnostic_for_asm, diagnostic_for_decl): Tweak.
(pedwarn, pedwarn_with_file_and_line, error,
error_with_file_and_line, fatal, warning,
warning_with_file_and_line): Adjust call to report_diagnostic.
(report_diagnostic): Rework.
(set_diagnostic_context): New function.
* diagnostic.h (struct diagnostic_context): New data structure.
(diagnostic_message, diagnostic_argument_list,
diagnostic_file_location, diagnostic_line_location,
diagnostic_is_warning, diagnostic_starter, diagnostic_finalizer,
diagnostic_finalizer, diagnostic_auxiliary_data): New macros.
(set_diagnostic_context): Declare.
(report_diagnostic): Change prototype.
From-SVN: r35817
2000-08-20 11:50:12 +02:00
|
|
|
|
2001-06-26 21:18:37 +02:00
|
|
|
/* Maximum characters per line in automatic line wrapping mode.
|
2001-10-09 16:03:13 +02:00
|
|
|
Zero means don't wrap lines. */
|
pretty-print.h (PP_NL_ARGMAX): New.
gcc:
* pretty-print.h (PP_NL_ARGMAX): New.
(text_info): Add locus.
(struct chunk_info): New.
(output_buffer): Add formatted_obstack, chunk_obstack, and
cur_chunk_array. Change obstack to a pointer.
(pp_wrapping_mode_t, pp_wrapping_mode, pp_set_verbatim_wrapping): New.
(struct pretty_print_info): Replace ideal_maximum_length and
prefixing_rule with wrapping.
(pp_line_cutoff, pp_prefixing_rule): Update to match.
Update prototypes and wrapper macros throughout.
* pretty-print.c (pp_formatted_text_data, pp_append_r)
(pp_base_clear_output_area, pp_construct, pp_base_formatted_text)
(pp_base_last_position_in_text, pp_base_newline, pp_base_character):
Update for changes to pp structure.
(pp_base_prepare_to_format, pp_base_format_text): Delete.
(pp_base_format, pp_base_output_formatted_text): New functions.
(pp_base_format_verbatim): Use pp_set_verbatim_wrapping.
(pp_verbatim): Clear text.locus.
(pp_printf): Likewise. Use pp_format and pp_output_formatted_text.
* c-objc-common.c (c_tree_printer): Update function signature.
* diagnostic.c (diagnostic_initialize): Update for changes to
pp structure.
(diagnostic_report_diagnostic): Call pp_format and then
pp_output_formatted_text.
(verbatim): Clear text.locus.
* diagnostic.h (diagnostic_prefixing_rule, diagnostic_line_cutoff):
Update for changes to pp structure.
* c-lang.c: No need to include c-pretty-print.h.
* Makefile.in: Remove bogus line containing only a tab.
(c-lang.o): Update dependencies.
* toplev.c (announce_function): Don't use verbatim.
(default_tree_printer): Update signature.
* objc/objc-lang.c: No need to include c-pretty-print.h.
* objc/Make-lang.in: Update dependencies.
gcc/cp:
* cp-lang.c: No need to include cxx-pretty-print.h.
* error.c (cp_printer): Update signature. No need to process
flags.
(print_instantiation_partial_context): Output last newline
with pp_base_newline.
* Make-lang.in: Update dependencies.
gcc/objcp:
* objcp-lang.c: No need to include cxx-pretty-print.h.
* Make-lang.in: Update dependencies.
Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
From-SVN: r101481
2005-07-01 01:09:06 +02:00
|
|
|
#define diagnostic_line_cutoff(DC) ((DC)->printer->wrapping.line_cutoff)
|
2003-07-25 11:52:32 +02:00
|
|
|
|
2003-08-05 21:23:14 +02:00
|
|
|
#define diagnostic_flush_buffer(DC) pp_base_flush ((DC)->printer)
|
2002-04-15 01:35:36 +02:00
|
|
|
|
2002-06-05 21:35:45 +02:00
|
|
|
/* True if the last function in which a diagnostic was reported is
|
|
|
|
different from the current one. */
|
|
|
|
#define diagnostic_last_function_changed(DC) \
|
|
|
|
((DC)->last_function != current_function_decl)
|
|
|
|
|
|
|
|
/* Remember the current function as being the last one in which we report
|
|
|
|
a diagnostic. */
|
|
|
|
#define diagnostic_set_last_function(DC) \
|
|
|
|
(DC)->last_function = current_function_decl
|
|
|
|
|
|
|
|
/* True if the last module or file in which a diagnostic was reported is
|
|
|
|
different from the current one. */
|
|
|
|
#define diagnostic_last_module_changed(DC) \
|
|
|
|
((DC)->last_module != input_file_stack_tick)
|
2002-04-15 01:35:36 +02:00
|
|
|
|
2002-06-05 21:35:45 +02:00
|
|
|
/* Remember the current module or file as being the last one in which we
|
|
|
|
report a diagnostic. */
|
|
|
|
#define diagnostic_set_last_module(DC) \
|
|
|
|
(DC)->last_module = input_file_stack_tick
|
2000-06-06 22:11:40 +02:00
|
|
|
|
2003-02-12 02:05:47 +01:00
|
|
|
/* Raise SIGABRT on any diagnostic of severity DK_ERROR or higher. */
|
|
|
|
#define diagnostic_abort_on_error(DC) \
|
|
|
|
(DC)->abort_on_error = true
|
|
|
|
|
2002-06-03 21:08:59 +02:00
|
|
|
/* This diagnostic_context is used by front-ends that directly output
|
2000-06-06 22:11:40 +02:00
|
|
|
diagnostic messages without going through `error', `warning',
|
2001-06-27 20:03:03 +02:00
|
|
|
and similar functions. */
|
2001-06-26 16:06:07 +02:00
|
|
|
extern diagnostic_context *global_dc;
|
2000-06-06 22:11:40 +02:00
|
|
|
|
2003-02-12 02:05:47 +01:00
|
|
|
/* The total count of a KIND of diagnostics emitted so far. */
|
2002-06-03 21:08:59 +02:00
|
|
|
#define diagnostic_kind_count(DC, DK) (DC)->diagnostic_count[(int) (DK)]
|
2001-06-10 15:48:04 +02:00
|
|
|
|
|
|
|
/* The number of errors that have been issued so far. Ideally, these
|
2002-06-03 21:08:59 +02:00
|
|
|
would take a diagnostic_context as an argument. */
|
2001-06-27 20:03:03 +02:00
|
|
|
#define errorcount diagnostic_kind_count (global_dc, DK_ERROR)
|
2001-06-10 15:48:04 +02:00
|
|
|
/* Similarly, but for warnings. */
|
2001-06-27 20:03:03 +02:00
|
|
|
#define warningcount diagnostic_kind_count (global_dc, DK_WARNING)
|
2001-06-10 15:48:04 +02:00
|
|
|
/* Similarly, but for sorrys. */
|
2001-06-27 20:03:03 +02:00
|
|
|
#define sorrycount diagnostic_kind_count (global_dc, DK_SORRY)
|
2001-06-10 15:48:04 +02:00
|
|
|
|
2002-09-22 16:09:34 +02:00
|
|
|
/* Returns nonzero if warnings should be emitted. */
|
2001-06-10 15:48:04 +02:00
|
|
|
#define diagnostic_report_warnings_p() \
|
|
|
|
(!inhibit_warnings \
|
|
|
|
&& !(in_system_header && !warn_system_headers))
|
|
|
|
|
2002-06-05 21:35:45 +02:00
|
|
|
#define report_diagnostic(D) diagnostic_report_diagnostic (global_dc, D)
|
2001-06-10 15:48:04 +02:00
|
|
|
|
2003-01-18 03:26:43 +01:00
|
|
|
/* Diagnostic related functions. */
|
2003-06-08 16:21:54 +02:00
|
|
|
extern void diagnostic_initialize (diagnostic_context *);
|
|
|
|
extern void diagnostic_report_current_module (diagnostic_context *);
|
|
|
|
extern void diagnostic_report_current_function (diagnostic_context *);
|
2006-01-18 21:02:42 +01:00
|
|
|
|
|
|
|
/* Force diagnostics controlled by OPTIDX to be kind KIND. */
|
|
|
|
extern diagnostic_t diagnostic_classify_diagnostic (diagnostic_context *,
|
|
|
|
int /* optidx */,
|
|
|
|
diagnostic_t /* kind */);
|
2003-06-08 16:21:54 +02:00
|
|
|
extern void diagnostic_report_diagnostic (diagnostic_context *,
|
|
|
|
diagnostic_info *);
|
2005-07-23 17:22:46 +02:00
|
|
|
#ifdef ATTRIBUTE_GCC_DIAG
|
2003-06-08 16:21:54 +02:00
|
|
|
extern void diagnostic_set_info (diagnostic_info *, const char *, va_list *,
|
2005-07-23 17:22:46 +02:00
|
|
|
location_t, diagnostic_t) ATTRIBUTE_GCC_DIAG(2,0);
|
2005-11-04 00:08:18 +01:00
|
|
|
extern void diagnostic_set_info_translated (diagnostic_info *, const char *,
|
|
|
|
va_list *, location_t,
|
|
|
|
diagnostic_t)
|
|
|
|
ATTRIBUTE_GCC_DIAG(2,0);
|
2005-07-23 17:22:46 +02:00
|
|
|
#endif
|
2003-06-08 16:21:54 +02:00
|
|
|
extern char *diagnostic_build_prefix (diagnostic_info *);
|
2002-06-05 21:35:45 +02:00
|
|
|
|
|
|
|
/* Pure text formatting support functions. */
|
2003-06-08 16:21:54 +02:00
|
|
|
extern char *file_name_as_prefix (const char *);
|
2000-04-22 13:49:16 +02:00
|
|
|
|
2004-05-13 08:41:07 +02:00
|
|
|
/* In tree-pretty-print.c */
|
|
|
|
extern int dump_generic_node (pretty_printer *, tree, int, int, bool);
|
|
|
|
extern void print_generic_stmt (FILE *, tree, int);
|
|
|
|
extern void print_generic_stmt_indented (FILE *, tree, int, int);
|
|
|
|
extern void print_generic_expr (FILE *, tree, int);
|
|
|
|
extern void print_generic_decl (FILE *, tree, int);
|
|
|
|
|
|
|
|
extern void debug_generic_expr (tree);
|
|
|
|
extern void debug_generic_stmt (tree);
|
[multiple changes]
2006-01-18 Richard Henderson <rth@redhat.com>
Jakub Jelinek <jakub@redhat.com>
Diego Novillo <dnovillo@redhat.com>
* libgomp: New directory.
* Makefile.def: Add target_module libgomp.
* Makefile.in: Regenerate.
* configure.in (target_libraries): Add target-libgomp.
* configure: Regenerate.
contrib/
2006-01-18 Richard Henderson <rth@redhat.com>
Diego Novillo <dnovillo@redhat.com>
* gcc_update (files_and_dependencies): Add libgomp files.
gcc/
2006-01-18 Richard Henderson <rth@redhat.com>
Aldy Hernandez <aldyh@redhat.com>
Jakub Jelinek <jakub@redhat.com>
Diego Novillo <dnovillo@redhat.com>
* omp-low.c: New file.
* c-omp.c: New file.
2006-01-18 Richard Henderson <rth@redhat.com>
Jakub Jelinek <jakub@redhat.com>
Diego Novillo <dnovillo@redhat.com>
* doc/invoke.texi: Document -fopenmp.
* tree-dump.h (debug_function): Declare.
* hooks.c (hook_bool_tree_bool_false): New function.
(hook_tree_tree_null): Remove.
(hook_tree_tree_tree_null): New.
* hooks.h: Update to match.
* tree-pretty-print.c (debug_tree_chain): New.
(print_generic_expr): Handle TDF_CHAIN.
(dump_generic_node): Handle BLOCK.
Do not abort with incomplete SWITCH_EXPRs.
Do not dump body of an OpenMP directive if TDF_SLIM is given.
<case OMP_PARALLEL, OMP_FOR, OMP_SECTIONS>: Don't
print space after directive name.
<OMP_FOR>: Handle printing OMP_FOR_PRE_BODY.
Handle OMP_MASTER and OMP_ORDERED.
Handle printing of OMP_BODY just in one place, goto
dump_omp_body in the rest of OMP_* nodes that have
OMP_BODY.
Don't handle clause nodes here. Update omp statements to
use dump_omp_clauses.
Handle OMP_SINGLE, OMP_SECTIONS, OMP_SECTION,
OMP_CLAUSE_ORDERED, OMP_CLAUSE_SCHEDULE, OMP_ATOMIC,
OMP_CRITICAL, OMP_CLAUSE_NOWAIT, GOMP_CLAUSE_IF,
GOMP_CLAUSE_NUM_THREADS, GOMP_FOR, GOMP_CLAUSE_SHARED,
GOMP_CLAUSE_FIRSTPRIVATE, GOMP_CLAUSE_LASTPRIVATE,
GOMP_CLAUSE_COPYIN and GOMP_CLAUSE_COPYPRIVATE.
Adjust output for GOMP_PARALLEL.
(dump_omp_clauses): New.
(print_declaration): Dump DECL_VALUE_EXPR.
(op_symbol_1): Split out of op_symbol.
(dumping_stmts): Remove. Update all users.
* cgraph.c (cgraph_analyze_queue): New.
(cgraph_add_new_function): New.
* cgraph.h (cgraph_analyze_queue): Declare.
(cgraph_add_new_function): Declare.
(cgraph_lower_function): Remove.
* tree.c (walk_tree): Walk OMP_CLAUSE_CHAIN of OMP_CLAUSE_*
nodes. Use switch for all nodes, handle most of IS_EXPR_CODE_CLASS
and TYPE_P nodes in its default clause.
(empty_body_p): New.
(tree_range_check_failed): New.
(build5_stat): New.
* tree.h (OMP_CLAUSE_REDUCTION_INIT,
OMP_CLAUSE_REDUCTION_MERGE,
OMP_CLAUSE_REDUCTION_PLACEHOLDER,
OMP_CLAUSE_PRIVATE_DEBUG,
OMP_CLAUSE_LASTPRIVATE_FIRSTPRIVATE, OMP_FOR_PRE_BODY,
OMP_MASTER_BODY, OMP_ORDERED_BODY OMP_BODY,
OMP_CLAUSES, OMP_CLAUSE_DECL, OMP_CLAUSE_DEFAULT_KIND,
OMP_CLAUSE_CHAIN, OMP_CLAUSE_OUTER_DECL,
OMP_CLAUSE_INNER_DECL, OMP_CLAUSE_NUM_THREADS_EXPR,
OMP_CLAUSE_IF_EXPR, OMP_CLAUSE_SCHEDULE_CHUNK_EXPR,
OMP_CLAUSE_SCHEDULE_CHUNK_SIZE. OMP_PARALLEL_VAR_INIT,
OMP_PARALLEL_VAR_REDUC, OMP_FOR_VAR_INIT,
OMP_FOR_VAR_LAST, OMP_FOR_VAR_REDUC,
OMP_SECTIONS_VAR_INIT, OMP_SECTIONS_VAR_LAST,
OMP_SECTIONS_VAR_REDUC, OMP_CLAUSE_REDUCTION_CODE
OMP_SINGLE_CLAUSES, OMP_SINGLE_BODY,
OMP_CLAUSE_SCHEDULE_CHUNK_SIZE, OMP_SECTION_BODY,
OMP_CRITICAL_NAME, OMP_CRITICAL_BODY): New.
(TREE_RANGE_CHECK): New.
(empty_body_p): Declare.
(enum omp_clause_default_kind): New.
(build_string_literal): Declare.
(enum omp_clause_schedule_kind, OMP_CLAUSE_SCHEDULE_KIND): New.
(build5_stat, build5): Declare.
* tree-pass.h (TDF_CHAIN): Define.
* tree-pass.h (PROP_gimple_lomp): Define.
(pass_lower_omp): Declare.
* diagnostic.h (debug_tree_chain): Declare.
* builtins.c (get_builtin_sync_mode): Use 0 as last argument to
mode_for_size.
(expand_builtin): Handle sync BUILT_IN_*_16 builtins.
* builtins.c (build_string_literal): Make extern.
* gcc.c (include_spec_function): New.
(static_spec_functions): Add it.
(main): Move load of libgomp.spec ...
(LINK_COMMAND_SPEC): ... here.
(link_gomp_spec): New.
(static_specs): Include it.
(LINK_COMMAND_SPEC): Add link_gomp.
(GOMP_SELF_SPECS): New.
(driver_self_specs): Include it.
(switch_matches): Don't mark inline.
(main): Load libgomp.spec.
* tree-gimple.c (is_gimple_stmt): True for OMP_MASTER,
OMP_ORDERED, OMP_CRITICAL, OMP_SECTIONS, OMP_SECTION,
and OMP_SINGLE, OMP_FOR and OMP_PARALLEL.
* tree-gimple.h (enum omp_parallel): Declare.
(determine_parallel_type): Declare.
(omp_firstprivatize_variable): Declare.
(omp_reduction_init): Declare.
(diagnose_omp_structured_block_errors): Declare.
(struct walk_stmt_info): Add want_return_expr.
(struct walk_stmt_info): Add want_bind_expr, want_locations.
(find_omp_clause): Declare.
(insert_field_into_struct): Declare.
(struct walk_stmt_info): Move from tree-nested.c
(walk_stmts): Declare.
* c-cppbuiltin.c (c_cpp_builtins): If -fopenmp, #define _OPENMP
to 200505.
* cgraphunit.c (cgraph_lower_function): Make static.
(cgraph_finalize_pending_functions): New.
(cgraph_finalize_function): Call it.
(cgraph_finalize_compilation_unit): Likewise.
* builtin-types.def (BT_I16, BT_FN_I16_VPTR_I16,
BT_FN_BOOL_VPTR_I16_I16, BT_FN_I16_VPTR_I16_I16): Add.
(BT_FN_UINT_UINT): New.
(DEF_FUNCTION_TYPE_6, DEF_FUNCTION_TYPE_7,
DEF_FUNCTION_TYPE_VAR_4): Document.
(BT_PTR_LONG, BT_PTR_PTR, BT_FN_BOOL, BT_FN_INT,
BT_FN_VOID_PTRPTR, BT_PTR_FN_VOID_PTR,
BT_FN_BOOL_LONGPTR_LONGPTR, BT_FN_VOID_OMPFN_PTR_UINT,
BT_FN_VOID_OMPFN_PTR_UINT_UINT,
BT_FN_BOOL_LONG_LONG_LONG_LONGPTR_LONGPTR,
BT_FN_BOOL_LONG_LONG_LONG_LONG_LONGPTR_LONGPTR,
BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG,
BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG): New.
* builtins.def: Update DEF_BUILTIN comment to include COND argument.
Move all DEF_SYNC_BUILTIN () and DEF_GOMP_BUILTIN () builtins
into separate files.
(DEF_GOMP_BUILTIN): New.
(BUILT_IN_OMP_GET_THREAD_NUM, BUILT_IN_GOMP_BARRIER,
BUILT_IN_GOMP_CRITICAL_START, BUILT_IN_GOMP_CRITICAL_END,
BUILT_IN_GOMP_CRITICAL_NAME_START, BUILT_IN_GOMP_CRITICAL_NAME_END,
BUILT_IN_GOMP_LOOP_STATIC_START, BUILT_IN_GOMP_LOOP_DYNAMIC_START,
BUILT_IN_GOMP_LOOP_GUIDED_START, BUILT_IN_GOMP_LOOP_RUNTIME_START,
BUILT_IN_GOMP_LOOP_ORDERED_STATIC_START,
BUILT_IN_GOMP_LOOP_ORDERED_DYNAMIC_START,
BUILT_IN_GOMP_LOOP_ORDERED_GUIDED_START,
BUILT_IN_GOMP_LOOP_ORDERED_RUNTIME_START,
BUILT_IN_GOMP_LOOP_STATIC_NEXT, BUILT_IN_GOMP_LOOP_DYNAMIC_NEXT,
BUILT_IN_GOMP_LOOP_GUIDED_NEXT, BUILT_IN_GOMP_LOOP_RUNTIME_NEXT,
BUILT_IN_GOMP_LOOP_ORDERED_STATIC_NEXT,
BUILT_IN_GOMP_LOOP_ORDERED_DYNAMIC_NEXT,
BUILT_IN_GOMP_LOOP_ORDERED_GUIDED_NEXT,
BUILT_IN_GOMP_LOOP_ORDERED_RUNTIME_NEXT,
BUILT_IN_GOMP_PARALLEL_LOOP_STATIC_START,
BUILT_IN_GOMP_PARALLEL_LOOP_DYNAMIC_START,
BUILT_IN_GOMP_PARALLEL_LOOP_GUIDED_START,
BUILT_IN_GOMP_PARALLEL_LOOP_RUNTIME_START,
BUILT_IN_GOMP_LOOP_END, BUILT_IN_GOMP_LOOP_END_NOWAIT,
BUILT_IN_GOMP_ORDERED_START, BUILT_IN_GOMP_ORDERED_END,
BUILT_IN_GOMP_PARALLEL_START, BUILT_IN_GOMP_PARALLEL_END,
BUILT_IN_GOMP_SECTIONS_START, BUILT_IN_GOMP_SECTIONS_NEXT,
BUILT_IN_GOMP_PARALLEL_SECTIONS_START, BUILT_IN_GOMP_SECTIONS_END,
BUILT_IN_GOMP_SECTIONS_END_NOWAIT, BUILT_IN_GOMP_SINGLE_START,
BUILT_IN_GOMP_SINGLE_COPY_START, BUILT_IN_GOMP_SINGLE_COPY_END): New.
* sync-builtins.def: New file, moved from builtins.def.
* omp-builtins.def: New file, moved from builtins.def.
* c-objc-common.h (LANG_HOOKS_OMP_PREDETERMINED_SHARING): Redefine.
* gimple-low.c (lower_function_body): Clear data.
(lower_stmt): Do not handle COMPOUND_EXPR.
Remove call to print_node_brief.
* c-tree.h (c_finish_omp_clauses): New prototype.
(C_DECL_THREADPRIVATE_P): Define.
(lookup_name_no_remap, c_omp_remap_private): Remove
(c_begin_omp_parallel, c_finish_omp_parallel): Update.
(check_for_loop_decls): Update decl.
(lookup_name_no_remap, c_omp_remap_private): Declare.
(build_indirect_ref, build_modify_expr, pushdecl,
pushdecl_top_level): Move to c-common.h.
* dwarf2out.c (loc_descriptor_from_tree_1): Don't set unsignedp
before the switch, but just in the 2 places that need it.
* c-decl.c (diagnose_mismatched_decls): Do not check for
mismatched thread-local attributes when OLDDECL is marked
threadprivate and NEWDECL has no thread-local attributes.
(merge_decls): Merge C_DECL_THREADPRIVATE_P.
(c_gimple_diagnostics_recursively): Rename from
c_warn_unused_result_recursively. Invoke
diagnose_omp_structured_block_errors.
(check_for_loop_decls): Return a singular decl found.
* langhooks.c (lhd_omp_predetermined_sharing): Return
OMP_CLAUSE_DEFAULT_SHARED for DECL_ARTIFICIAL decls.
(lhd_omp_firstprivatize_type_sizes): New.
(lhd_omp_assignment): New.
(lhd_omp_predetermined_sharing): New.
* langhooks.h (struct gimplify_omp_ctx): Forward declare.
(struct lang_hooks_for_types): Add
omp_firstprivatize_type_sizes, omp_privatize_by_reference,
omp_predetermined_sharing, omp_disregard_value_expr,
omp_private_debug_clause, omp_clause_default_ctor,
omp_clause_copy_ctor, omp_clause_assign_op, omp_clause_dtor.
(c_finish_omp_clauses): New.
(c_finish_bc_stmt): Diagnose break within omp for.
(c_begin_omp_parallel, c_finish_omp_parallel): New.
(build_unary_op): Return error_mark after reporting
a readonly_error.
(build_modify_expr): Likewise.
* gimplify.c: Include optabs.h and pointer-set.h.
(enum gimplify_omp_var_data): Declare.
(struct gimplify_omp_ctx): Declare.
(struct gimplify_ctx): Add fields prev_context, combined_pre_p
and combined_ctxp.
(gimplify_ctxp, gimplify_omp_ctxp): New local variables.
(push_gimplify_context, pop_gimplify_context): Allow nesting.
(splay_tree_compare_decl_uid): New.
(new_omp_context): New.
(delete_omp_context): New.
(gimple_add_tmp_var): Call omp_add_variable.
(gimplify_bind_expr): Likewise.
(gimplify_var_or_parm_decl): If omp_notice_variable returned
true, disregard DECL_VALUE_EXPR on the decl if any.
(gimplify_expr_in_ctx): New.
(omp_firstprivatize_variable, omp_firstprivatize_type_sizes
omp_add_variable, omp_notice_variable, omp_is_private
gimplify_scan_omp_clauses, gimplify_adjust_omp_clauses_1
gimplify_adjust_omp_clauses, gimplify_omp_parallel
gimplify_omp_for, gimplify_omp_workshare, goa_lhs_expr_p
gimplify_omp_atomic_fetch_op, goa_stabilize_expr
gimplify_omp_atomic_pipeline, gimplify_omp_atomic_mutex
gimplify_omp_atomic): New.
(gimplify_expr): Handle OMP_PARALLEL, OMP_FOR, OMP_SECTIONS,
OMP_SINGLE, OMP_SECTION, OMP_MASTER, OMP_ORDERED,
OMP_CRITICAL and OMP_ATOMIC.
(gimplify_body): Verify gimplify_ctxp is empty after gimplification.
* c-pragma.h (enum pragma_kind): Add
PRAGMA_OMP_ATOMIC, PRAGMA_OMP_BARRIER,
PRAGMA_OMP_CRITICAL, PRAGMA_OMP_FLUSH, PRAGMA_OMP_FOR,
PRAGMA_OMP_MASTER, PRAGMA_OMP_ORDERED,
PRAGMA_OMP_PARALLEL, PRAGMA_OMP_PARALLEL_FOR,
PRAGMA_OMP_PARALLEL_SECTIONS, PRAGMA_OMP_SECTION,
PRAGMA_OMP_SECTIONS, PRAGMA_OMP_SINGLE,
PRAGMA_OMP_THREADPRIVATE.
* tree.def (OMP_PARALLEL, OMP_FOR, OMP_SECTIONS,
OMP_SINGLE, OMP_SECTION, OMP_MASTER, OMP_ORDERED,
OMP_CRITICAL, OMP_ATOMIC, OMP_CLAUSE_PRIVATE,
OMP_CLAUSE_SHARED, OMP_CLAUSE_FIRSTPRIVATE,
OMP_CLAUSE_LASTPRIVATE, OMP_CLAUSE_REDUCTION,
OMP_CLAUSE_COPYIN, OMP_CLAUSE_COPYPRIVATE,
OMP_CLAUSE_IF, OMP_CLAUSE_NUM_THREADS,
OMP_CLAUSE_SCHEDULE, OMP_CLAUSE_NOWAIT,
OMP_CLAUSE_ORDERED, OMP_CLAUSE_DEFAULT): Define.
* print-tree.c (print_node): Dump DECL_VALUE_EXPR.
* tree-ssa-dce.c (find_control_dependence): Do not assume that
ENTRY_BLOCK_PTR->next_bb == single_succ (ENTRY_BLOCK_PTR).
* tree-nested.c (convert_call_expr): Call walk_body on OMP_BODY for
OpenMP directives.
(struct nesting_info): Add field_map,
suppress_expansion, debug_var_chain.
(create_nesting_tree): Initialize them.
(lookup_field_for_decl): Use field_map.
(get_nonlocal_debug_decl, get_local_debug_decl): New.
(convert_local_omp_clauses): New.
(finalize_nesting_tree_1): Add debug_var_chain to toplevel block.
(walk_body): Split out of walk_function.
(convert_nonlocal_omp_clauses, convert_local_omp_clauses): New.
(convert_nonlocal_reference): Handle omp statements.
(convert_local_reference): Likewise.
(unnest_nesting_tree_1): Split out of finalize_nesting_tree_1.
(unnest_nesting_tree): New.
(lower_nested_functions): Call it.
(insert_field_into_struct): Make extern.
(struct walk_stmt_info): Move to tree-gimple.h.
(walk_stmts): Make extern.
* omp-builtins.def: New file.
* tree-iterator.c (expr_only): Clarify comment.
* c-common.h (pushdecl_top_level, pushdecl,
build_modify_expr, build_indirect_ref,
c_finish_omp_master, c_finish_omp_critical,
c_finish_omp_ordered, c_finish_omp_barrier,
c_finish_omp_atomic, c_finish_omp_flush,
c_finish_omp_for, c_split_parallel_clauses,
omp_clause_default_kind, c_omp_sharing_predetermined,
c_omp_remap_decl): Declare.
* Makefile.in (BUILTINS_DEF): Add omp-builtins.def.
(OBJS-common): Add omp-low.o.
(c-omp.o, omp-low.o): Add.
(gimplify.o): Add dependency on $(OPTABS_H).
(GTFILES): Add omp-low.c.
(gt-stringpool.h): Add.
* tree-cfg.c (set_bb_for_stmt): Do not update the
block-to-labels map if we are currently expanding to RTL.
(tree_node_can_be_shared): Remove unnecessary CONSTANT_CLASS_P
checks.
Handle IDENTIFIER_NODE.
(tree_verify_flow_info): Do not ICE when emitting error
messages about invalid labels.
(dump_function_to_file): Reset CFUN before emitting the body
of the function.
(debug_function): New.
* passes.c (init_optimization_passes): Schedule
pass_lower_omp.
* langhooks-def.h (lhd_omp_predetermined_sharing,
lhd_omp_assignment, lhd_omp_firstprivatize_type_sizes):
Declare.
(LANG_HOOKS_OMP_FIRSTPRIVATIZE_TYPE_SIZES): Define.
(LANG_HOOKS_FOR_TYPES_INITIALIZER): Use it.
(LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE,
LANG_HOOKS_OMP_PREDETERMINED_SHARING,
LANG_HOOKS_OMP_DISREGARD_VALUE_EXPR,
LANG_HOOKS_OMP_PRIVATE_DEBUG_CLAUSE,
LANG_HOOKS_OMP_CLAUSE_DEFAULT_CTOR,
LANG_HOOKS_OMP_CLAUSE_COPY_CTOR,
LANG_HOOKS_OMP_CLAUSE_ASSIGN_OP,
LANG_HOOKS_OMP_CLAUSE_DTOR): Define.
(LANG_HOOK_DECLS): Use them.
2006-01-18 Dmitry Kurochkin <dmitry.kurochkin@gmail.com>
Richard Henderson <rth@redhat.com>
Jakub Jelinek <jakub@redhat.com>
Diego Novillo <dnovillo@redhat.com>
* c-parser.c (pragma_omp_clause): Define.
(c_parser_declaration_or_fndef): Document OpenMP syntax.
(c_parser_compound_statement): Likewise.
(c_parser_statement): Likewise.
(c_parser_pragma): Handle omp pragmas.
(OMP_FOR_CLAUSE_MASK, OMP_SECTIONS_CLAUSE_MASK,
OMP_PARALLEL_CLAUSE_MASK, OMP_SINGLE_CLAUSE_MASK): Define.
(c_parser_omp_clause_name, check_no_duplicate_clause,
c_parser_omp_variable_list,
c_parser_omp_var_list_parens, c_parser_omp_clause_copyin,
c_parser_omp_clause_copyprivate,
c_parser_omp_clause_default,
c_parser_omp_clause_firstprivate, c_parser_omp_clause_if,
c_parser_omp_clause_lastprivate,
c_parser_omp_clause_nowait,
c_parser_omp_clause_num_threads,
c_parser_omp_clause_ordered, c_parser_omp_clause_private,
c_parser_omp_clause_reduction,
c_parser_omp_clause_schedule, c_parser_omp_clause_shared,
c_parser_omp_all_clauses, c_parser_omp_structured_block,
c_parser_omp_atomic, c_parser_omp_barrier,
c_parser_omp_critical, c_parser_omp_flush,
c_parser_omp_for_loop, c_parser_omp_for,
c_parser_omp_master, c_parser_omp_ordered,
c_parser_omp_sections_scope, c_parser_omp_sections,
c_parser_omp_parallel, c_parser_omp_single,
c_parser_omp_construct, c_parser_omp_threadprivate): New.
* c-pragma.c (init_pragma): Do omp pragma registration here.
* c.opt (fopenmp): New flag.
2006-01-18 Eric Christopher <echristo@apple.com>
* gcc.c (GOMP_SELF_SPECS): Bracket in #ifndef/#endif.
* config/darwin.h (GOMP_SELF_SPECS): Define.
testsuite/
2006-01-18 Richard Henderson <rth@redhat.com>
Aldy Hernandez <aldyh@redhat.com>
Jakub Jelinek <jakub@redhat.com>
Diego Novillo <dnovillo@redhat.com>
Uros Bizjak <uros@kss-loka.si>
* testsuite/gcc.dg/gomp: New directory.
From-SVN: r109902
2006-01-18 20:21:25 +01:00
|
|
|
extern void debug_tree_chain (tree);
|
2004-05-13 08:41:07 +02:00
|
|
|
extern void debug_c_tree (tree);
|
2001-05-26 03:31:47 +02:00
|
|
|
#endif /* ! GCC_DIAGNOSTIC_H */
|