This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
The attached patch is the culmination of the effort I described in
<http://gcc.gnu.org/ml/gcc/2002-11/msg00396.html>. There are some
slight deviations from the plan laid out there. Most importantly, I
have not moved the definition of enum machine_mode, as I said I would.
That change proved to have more ramifications than I had anticipated,
and this set of changes is useful enough without it. Also, the fake
definitions of rtx etc for use by libgcc files appear in coretypes.h,
not tconfig.h; this is because I decided it was cleaner to have both
variants in one place. There is no difference from the compiler's
point of view.
The changes to treelang, fixinc, and several Make-lang.in files, are a
bit more invasive than strictly necessary. Allow me to climb on a
soapbox for a moment:
If you include system headers directly in source files that are
components of GCC you are probably doing something wrong. It is
system.h's responsibility to include most of these for you. Only
include system headers if you have verified that system.h does
not. The same goes for headers provided by libiberty.
Do not defeat the 'poisoning' of certain identifiers by system.h.
We did that for a reason. Something else is wrong if it appears
to be necessary. (in this case, there was a bug in system.h)
Unless there is a special need to do otherwise (and I am not
presently aware of any such), config.h and system.h should always
be the first two headers included in source files that are
components of GCC. Rules are naturally different for the genfoo
utilities and libgcc.
It is unnecessary to prefix header file names with $(srcdir)/ in
.o:.h dependency rules.
It is necessary to list all of the headers included by any given
source file in such rules. When there is a $(FOO_H) variable for
that header, it is necessary to use that variable instead of the
bare name of the header.
End soapbox.
I tested this patch as follows: a complete bootstrap of all languages,
including Ada and treelang, on i686-linux; "make -j all" from scratch
for all languages, again on i686-linux, on a very fast machine
(unfortunately not a multiprocessor); and I attempted to build cross
compilers to a wide selection of architectures in tree: arm h8300 m32r
m68hc11 mcore mips mips64 mn10300 powerpc sh sparc sparc64 v850. This
last was not entirely successful, due to unrelated breakage in newlib
and/or GCC. However, cc1 does build for all of them. I merely do not
vouch for its working afterward.
If your reaction to reading this patch is "wait, why on earth do all
these files need to include tm.h?" your suspicions are correct. At
least half of them do not. Understand that all of them were including
tm.h before, it was just buried inside config.h. My patch merely
drags this dependency out into the open so that we can get at it. I
made no attempt to identify files that do not need tm.h, except for
certain components of the Ada runtime library where it was blatantly
obvious. I intend to weed out unnecessary inclusions of tm.h in
future patches, incrementally. Y'all are cordially invited to lend a
hand. Unlike this patch, such weeding is parallelizable.
zw
328 files changed, 1311 insertions, 669 deletions
* configure.in: Don't put ${tm_file} into host_xm_file,
build_xm_file, or xm_file. Do put tm-preds.h into tm_p_file.
Take location of tm-preds.h into account when calculating
tm_p_file_list.
* configure: Regenerate.
* mkconfig.sh: No need for separate TM_DEFINES and XM_DEFINES
arguments. Do not provide rtx, rtvec, tree, or GTY here.
Remove special case code for tm_p.h and *config.h; add new
special case code for tm.h and tconfig.h. Clean up a bit.
* coretypes.h: New file.
* system.h: #define malloc to xmalloc and realloc to xrealloc
when FLEX_SCANNER or YYBISON is defined, independent of the
value of GCC_VERSION.
* Makefile.in (tm_file, tm_file_list): New variables set from
@-substitutions.
(GCONFIG_H): Deleted.
(GTM_H, TM_H): New.
(CONFIG_H): Is now just config.h $(host_xm_file_list).
(TM_P_H): Move up with the other mkconfig.sh-generated
headers; don't mention tm-preds.h explicitly.
(tm.h, cs-tm.h): New rule.
(cs-config.h, cs-hconfig.h, cs-tconfig.h, cs-tm_p.h): Adjust
invocations of mkconfig.sh for changes to that program.
(mostlyclean): Delete print-rtl1.c.
(clean): Delete tm.h.
* Makefile.in, ada/Make-lang.in, cp/Make-lang.in,
f/Make-lang.in, java/Make-lang.in, objc/Make-lang.in,
treelang/Make-lang.in: Update dependencies for the files
listed below.
* mklibgcc.in: Add 'coretypes.h $(TM_H)' to libgcc2_c_dep.
* alias.c, attribs.c, bb-reorder.c, bitmap.c, builtins.c,
c-aux-info.c, c-common.c, c-convert.c, c-decl.c, c-dump.c,
c-errors.c, c-format.c, c-lang.c, c-lex.c, c-objc-common.c,
c-opts.c, c-parse.in, c-pragma.c, c-pretty-print.c,
c-semantics.c, c-typeck.c, caller-save.c, calls.c, cfg.c,
cfganal.c, cfgbuild.c, cfgcleanup.c, cfglayout.c, cfgloop.c,
cfgrtl.c, collect2.c, combine.c, conflict.c, convert.c,
cppdefault.c, cpperror.c, cppexp.c, cppfiles.c, cpphash.c,
cppinit.c, cpplex.c, cpplib.c, cppmacro.c, cppmain.c,
cppspec.c, cpptrad.c, crtstuff.c, cse.c, cselib.c, dbxout.c,
debug.c, df.c, diagnostic.c, doloop.c, dominance.c,
dummy-conditions.c, dwarf2asm.c, dwarf2out.c, dwarfout.c,
emit-rtl.c, errors.c, et-forest.c, except.c, explow.c,
expmed.c, expr.c, final.c, fix-header.c, flow.c, fold-const.c,
function.c, gcc.c, gccspec.c, gcov-dump.c, gcov-iov.c, gcov.c,
gcse.c, gen-protos.c, genattr.c, genattrtab.c, genautomata.c,
gencheck.c, gencodes.c, genconditions.c, genconfig.c,
genconstants.c, genemit.c, genextract.c, genflags.c,
gengenrtl.c, gengtype-lex.l, gengtype-yacc.y, gengtype.c,
genopinit.c, genoutput.c, genpeep.c, genpreds.c, genrecog.c,
gensupport.c, ggc-common.c, ggc-none.c, ggc-page.c,
ggc-simple.c, global.c, graph.c, haifa-sched.c, hashtable.c,
hooks.c, ifcvt.c, integrate.c, intl.c, jump.c, langhooks.c,
lcm.c, libgcc2.c, line-map.c, lists.c, local-alloc.c, loop.c,
main.c, mbchar.c, mips-tdump.c, mips-tfile.c, mkdeps.c,
optabs.c, params.c, predict.c, prefix.c, print-rtl.c,
print-tree.c, profile.c, protoize.c, ra-build.c,
ra-colorize.c, ra-debug.c, ra-rewrite.c, ra.c, read-rtl.c,
real.c, recog.c, reg-stack.c, regclass.c, regmove.c,
regrename.c, reload.c, reload1.c, reorg.c, resource.c,
rtl-error.c, rtl.c, rtlanal.c, sbitmap.c, scan-decls.c,
scan.c, sched-deps.c, sched-ebb.c, sched-rgn.c, sched-vis.c,
sdbout.c, sibcall.c, simplify-rtx.c, ssa-ccp.c, ssa-dce.c,
ssa.c, stmt.c, stor-layout.c, stringpool.c, timevar.c,
tlink.c, toplev.c, tracer.c, tree-dump.c, tree-inline.c,
tree.c, unroll.c, varasm.c, varray.c, varray.h, vmsdbgout.c,
xcoffout.c, config/darwin-c.c, config/darwin.c,
config/fp-bit.c, config/alpha/alpha.c, config/alpha/vms-cc.c,
config/alpha/vms-ld.c, config/arc/arc.c, config/arm/arm.c,
config/arm/pe.c, config/avr/avr.c, config/c4x/c4x-c.c,
config/c4x/c4x.c, config/cris/cris.c, config/d30v/d30v.c,
config/dsp16xx/dsp16xx.c, config/fr30/fr30.c,
config/frv/frv.c, config/h8300/h8300.c, config/i370/i370-c.c,
config/i370/i370.c, config/i386/i386.c, config/i386/winnt.c,
config/i960/i960-c.c, config/i960/i960.c,
config/ia64/ia64-c.c, config/ia64/ia64.c, config/ip2k/ip2k.c,
config/m32r/m32r.c, config/m68hc11/m68hc11.c,
config/m68k/m68k.c, config/m88k/m88k.c, config/mcore/mcore.c,
config/mips/irix6-libc-compat.c, config/mips/mips.c,
config/mmix/mmix.c, config/mn10200/mn10200.c,
config/mn10300/mn10300.c, config/ns32k/ns32k.c,
config/pa/pa.c, config/pdp11/pdp11.c, config/romp/romp.c,
config/rs6000/rs6000-c.c, config/rs6000/rs6000.c,
config/s390/s390.c, config/sh/sh.c, config/sparc/gmon-sol2.c,
config/sparc/sparc.c, config/stormy16/stormy16.c,
config/v850/v850-c.c, config/v850/v850.c, config/vax/vax.c,
config/xtensa/xtensa.c, objc/objc-act.c, objc/objc-lang.c:
Include coretypes.h and tm.h.
* genattrtab.c, genconditions.c, genemit.c, genextract.c,
gengenrtl.c, gengtype.c, genopinit.c, genoutput.c, genpeep.c,
genrecog.c: Include coretypes.h and tm.h from the file
generated by this program.
* unwind-dw2-fde-darwin.c, unwind-dw2-fde-glibc.c,
unwind-dw2-fde.c, unwind-dw2.c, unwind-sjlj.c: Include
coretypes.h and tm.h, and tsystem.h when not already included.
No need to include stddef.h nor stdlib.h.
* ada/cuintp.c, ada/decl.c, ada/deftarg.c, ada/misc.c,
ada/targtyps.c, ada/trans.c, ada/utils.c, ada/utils2.c:
Include coretypes.h and tm.h, and system.h when not already
included.
* cp/call.c, cp/class.c, cp/cp-lang.c, cp/cvt.c, cp/cxxfilt.c,
cp/decl.c, cp/decl2.c, cp/dump.c, cp/error.c, cp/except.c,
cp/expr.c, cp/friend.c, cp/g++spec.c, cp/init.c, cp/lex.c,
cp/mangle.c, cp/method.c, cp/optimize.c, cp/parse.y, cp/pt.c,
cp/ptree.c, cp/repo.c, cp/rtti.c, cp/search.c, cp/semantics.c,
cp/spew.c, cp/tree.c, cp/typeck.c, cp/typeck2.c:
Include coretypes.h and tm.h.
* f/proj.h, f/ansify.c, f/g77spec.c, f/intdoc.c:
Include coretypes.h and tm.h.
* fixinc/fixlib.h: Include coretypes.h and tm.h. Do not
include auto-host.h or ansidecl.h/
* fixinc/server.h: Do not include stdio.h, unistd.h, or fixlib.h.
* fixinc/procopen.c: Include server.h after fixlib.h. Do not
include auto-host.h, ansidecl.h, or system.h.
* fixinc/server.c: Likewise. Also, do not include signal.h,
and do not redefine volatile.
* java/boehm.c, java/buffer.c, java/builtins.c,
java/check-init.c, java/class.c, java/constants.c,
java/decl.c, java/except.c, java/expr.c, java/gjavah.c,
java/jcf-depend.c, java/jcf-dump.c, java/jcf-io.c,
java/jcf-parse.c, java/jcf-path.c, java/jcf-write.c,
java/jv-scan.c, java/jvgenmain.c, java/jvspec.c, java/lang.c,
java/mangle.c, java/mangle_name.c, java/parse-scan.y,
java/parse.y, java/typeck.c, java/verify.c, java/xref.c,
java/zextract.c: Include coretypes.h and tm.h.
* treelang/lex.l: Move "%{" below copyright notice; get rid of
"/*" embedded in comment. Do not #undef IN_GCC; do not
include stdio.h, memory.h, or ansidecl.h; do not include
config.h twice. Do include coretypes.h and tm.h.
* treelang/parse.y: Do not #undef IN_GCC, provide bogus
definitions of tree and rtx typedefs, or include stdio.h,
stdlib.h, string.h, or ansidecl.h. Do include coretypes.h and
tm.h.
* treelang/tree1.c: Do not include ansidecl.h, stdlib.h,
unistd.h, ctype.h, stdarg.h, string.h, or stdio.h. Do include
coretypes.h and tm.h.
* treelang/treetree.c: Do not include stdlib.h, unistd.h,
safe-ctype.h, errno.h. stdarg.h, limits.h, string.h, fcntl.h,
getopt.h. stdio.h, or ansidecl.h. Do include coretypes.h and
tm.h.
Attachment:
diffs.gz
Description: the patch
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |