From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 56686 invoked by alias); 24 May 2017 14:54:44 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 56675 invoked by uid 89); 24 May 2017 14:54:43 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-11.4 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_2,GIT_PATCH_3,KAM_ASCII_DIVIDERS,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: mail-wm0-f43.google.com Received: from mail-wm0-f43.google.com (HELO mail-wm0-f43.google.com) (74.125.82.43) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 24 May 2017 14:54:38 +0000 Received: by mail-wm0-f43.google.com with SMTP id 7so66757219wmo.1 for ; Wed, 24 May 2017 07:54:41 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:mail-followup-to:cc:subject:references :date:in-reply-to:message-id:user-agent:mime-version; bh=Nr0M7ELLa2i9r3HxPHwXGJAn8JQNOO9lWdeM1kAKqQo=; b=hhr3Ob0IEyMrxXjxYu/AJU08YE8uH00MJynYs7DE0XAPWmY5caNTSj6l5l3Hr8eX/E 84lFnzz1igYyp5nYRpV2n/o5/SevO+8snBpOO3lJQTTFuG9ofIsBZaR6p2f90n/PXcW2 DWPI9YtMzVI1F/ZDSICrz8VtQjS8HdG7dhdpV+J7VPiVJ8HEEkjbm72jLu5dVY/C4yYc ZxhmLGcLp0S/PRgjlxmHzZKksuj65dkNIuYAK5HYeRdkAfLasVzZdk8jszquV9M2fQFT 4rphnxTKXtcoEAgrCt0TtQGMjQW8aKYDiuWswyiqkmKUoViJn3pmTLBJRy5Ksq9ruz6Q lsIA== X-Gm-Message-State: AODbwcA93nNR391eLNzOpI5BZUYeaWg6p05L1OBMjsJkunC0B0mqe6VP IsidMCOPIp/T4cWo X-Received: by 10.28.56.198 with SMTP id f189mr6017765wma.111.1495637679397; Wed, 24 May 2017 07:54:39 -0700 (PDT) Received: from localhost (188.29.165.148.threembb.co.uk. [188.29.165.148]) by smtp.gmail.com with ESMTPSA id 203sm5003674wmv.18.2017.05.24.07.54.37 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 24 May 2017 07:54:38 -0700 (PDT) From: Richard Sandiford To: Jeff Law Mail-Followup-To: Jeff Law ,gcc-patches@gcc.gnu.org, richard.sandiford@linaro.org Cc: gcc-patches@gcc.gnu.org Subject: Re: Reorganise machmode.h headers References: <874m37s7vf.fsf@e105548-lin.cambridge.arm.com> <319770d3-c529-8f86-8cf8-f52b90dcfce0@redhat.com> Date: Wed, 24 May 2017 15:08:00 -0000 In-Reply-To: <319770d3-c529-8f86-8cf8-f52b90dcfce0@redhat.com> (Jeff Law's message of "Mon, 19 Dec 2016 16:30:04 -0700") Message-ID: <87zie2xq37.fsf@linaro.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-SW-Source: 2017-05/txt/msg01881.txt.bz2 Jeff Law writes: > On 11/16/2016 09:32 AM, Richard Sandiford wrote: >> Later patches will make machmode.h rely on wide-int.h and the >> new poly-int.h, so it needs to appear later in the coretypes.h >> include list. >> >> Previously machmode.h included insn-modes.h, which as well as >> the main mode enum contains configuration information like >> MAX_BITSIZE_MODE_ANY_INT. This still needs to come first, >> since files like wide-int.h depend on the configuration >> information. >> >> Similarly, later patches will make the auto-generated inline >> mode size functions use poly-int.h, so the patch splits them >> out into their own header file and includes it after the >> integer utilities. >> >> The patch also makes the generator files include machmode.h >> via coretypes.h. Previously they did it by more indirect means. >> >> Finally, the patch makes wide-int-print.h available via coretypes.h >> too. There didn't seem to be any reason to force only the print >> routines to be included directly, and it would be painful to extend >> that approach to the new polynomial integer classes. >> >> Tested on aarch64-linux-gnu and x86_64-linux-gnu. OK to install? >> >> Thanks, >> Richard >> >> >> [ This patch is part of the SVE series posted here: >> https://gcc.gnu.org/ml/gcc/2016-11/msg00030.html ] >> >> gcc/ >> 2016-11-16 Richard Sandiford >> Alan Hayward >> David Sherwood >> >> * Makefile.in (MACHMODE_H): Remove insn-modes.h >> (CORETYPES_H): New define. >> (MOSTLYCLEANFILES): Add insn-modes-inline.h. >> (insn-modes-inline.h, s-modes-inline-h): New rules. >> (generated_files): Add insn-modes-inline.h. >> (RTL_BASE_H, TREE_CORE_H): Use CORETYPES_H instead of coretypes.h. >> (build/gensupport.o, build/print-rtl.o, build/read-md.o): Likewise. >> (build/read-rtl.o, build/rtl.o, build/vec.o, build/hash-table.o) >> (build/inchash.o, build/gencondmd.o, build/genattr.o): Likewise. >> (build/genattr-common.o, build/genattrtab.o, build/genautomata.o) >> (build/gencheck.o, build/gencodes.o, build/genconditions.o): Likewise. >> (build/genconfig.o, build/genconstants.o, build/genemit.o): Likewise. >> (build/genenums.o, build/genextract.o, build/genflags.o): Likewise. >> (build/gentarget-def.o, build/genmddeps.o, build/genopinit.o) >> (build/genoutput.o, build/genpeep.o, build/genpreds.o): Likewise. >> (build/genrecog.o, build/genmddump.o, build/genmatch.o): Likewise. >> (build/gencfn-macros.o, build/gcov-iov.o): Likewise. >> * coretypes.h: Include everything up to real.h for generators. >> Include insn-modes.h first. Include wide-int-print.h after >> wide-int.h. Include insn-modes-inline.h and then machmode.h. >> * machmode.h: Don't include insn-modes.h here. >> * function-tests.c: Remove includes of signop.h, machmode.h, >> double-int.h and wide-int.h. >> * rtl.h: Likewise. >> * gcc-rich-location.c: Remove includes of machmode.h, double-int.h >> and wide-int.h. >> * optc-save-gen.awk: Likewise. >> * gencheck.c (BITS_PER_UNIT): Delete dummy definition. >> * godump.c: Remove include of wide-int-print.h. >> * pretty-print.h: Likewise. >> * wide-int-print.cc: Likewise. >> * wide-int.cc: Likewise. >> * hash-map-tests.c: Remove include of signop.h. >> * hash-set-tests.c: Likewise. >> * rtl-tests.c: Likewise. >> * mkconfig.sh: Remove include of machmode.h. >> * genmodes.c (emit_insn_modes_h): Split emission of inline functions >> into... >> (emit_insn_modes_inline_h): ...this new function. Emit the code >> into an insn-modes-inline.h header file, adding appropriate >> include guards and end comments. >> (emit_insn_modes_c_header): Remove include of machmode.h. >> (emit_min_insn_modes_c_header): Include coretypes.h rather than >> machmode.h. >> (main): Handle -i flag and call emit_insn_modes_inline_h when >> it is passed. > So I don't see anything here particularly problematical. My question is > whether or not there's anything significant to be gained to moving > forward with this kit, assuming the 67 piece kit is not likely to move > forward. > > I do think you'll need some tweaks to the contrib/header-tools which > know about the core headers and dependencies. Hopefully what's in there > is easy enough to figure out how to twiddle appropriately. OK, thanks for the pointer. I think this patch should do that. gcc-order-headers seems to have bitrotted a bit, since it gives: Traceback (most recent call last): File "../contrib/header-tools/gcc-order-headers", line 267, in process_known_dups () File "../contrib/header-tools/gcc-order-headers", line 101, in process_known_dups if dups[i] and "rtl.h" in dups[i]: KeyError: 'dumpfile.h' But the change itself looks obvious. Tested on aarch64-linux-gnu and x86_64-linux-gnu. Also tested by compiling one target for each cpu directory. OK to install? Thanks, Richard [Based on the code ARM contributed in branches/ARM/sve-branch@242100] 2016-11-16 Richard Sandiford Alan Hayward David Sherwood contrib/header-tools/ * graph-header-logs (ignore): Update coretypes.h header list. gcc/ * Makefile.in (MACHMODE_H): Remove insn-modes.h (CORETYPES_H): New define. (MOSTLYCLEANFILES): Add insn-modes-inline.h. (insn-modes-inline.h, s-modes-inline-h): New rules. (generated_files): Add insn-modes-inline.h. (RTL_BASE_H, TREE_CORE_H): Use CORETYPES_H instead of coretypes.h. (build/gensupport.o, build/ggc-none.o, build/print-rtl.o): Likewise. (build/read-md.o, build/read-rtl.o, build/rtl.o): Likewise. (build/vec.o, build/hash-table.o, build/inchash.o): Likewise. (build/gencondmd.o, build/genattr.o, build/genattr-common.o): Likewise. (build/genattrtab.o, build/genautomata.o, build/gencheck.o): Likewise. (build/gencodes.o, build/genconditions.o): Likewise. (build/genconfig.o, build/genconstants.o, build/genemit.o): Likewise. (build/genenums.o, build/genextract.o, build/genflags.o): Likewise. (build/gentarget-def.o, build/genmddeps.o, build/genopinit.o) (build/genoutput.o, build/genpeep.o, build/genpreds.o): Likewise. (build/genrecog.o, build/genmddump.o, build/genmatch.o): Likewise. (build/gencfn-macros.o, build/gcov-iov.o): Likewise. * coretypes.h: Include everything up to real.h for generators. Include insn-modes.h first. Include wide-int-print.h after wide-int.h. Include insn-modes-inline.h and then machmode.h. * machmode.h: Don't include insn-modes.h here. * function-tests.c: Remove includes of signop.h, machmode.h, double-int.h and wide-int.h. * rtl.h: Likewise. * gcc-rich-location.c: Remove includes of machmode.h, double-int.h and wide-int.h. * optc-save-gen.awk: Likewise. * gencheck.c (BITS_PER_UNIT): Delete dummy definition. * godump.c: Remove include of wide-int-print.h. * pretty-print.h: Likewise. * wide-int-print.cc: Likewise. * wide-int.cc: Likewise. * hash-map-tests.c: Remove include of signop.h. * hash-set-tests.c: Likewise. * rtl-tests.c: Likewise. * mkconfig.sh: Remove include of machmode.h. * genmodes.c (emit_insn_modes_h): Split emission of inline functions into... (emit_insn_modes_inline_h): ...this new function. Emit the code into an insn-modes-inline.h header file, adding appropriate include guards and end comments. (emit_insn_modes_c_header): Remove include of machmode.h. (emit_min_insn_modes_c_header): Include coretypes.h rather than machmode.h. (main): Handle -i flag and call emit_insn_modes_inline_h when it is passed. Index: contrib/header-tools/graph-header-logs =================================================================== --- contrib/header-tools/graph-header-logs 2015-11-11 15:40:07.000000000 +0000 +++ contrib/header-tools/graph-header-logs 2017-05-24 14:37:44.737223605 +0100 @@ -25,9 +25,12 @@ depstring = ("In file included from", " # indentation indicates nesting levels of included files ignore = [ "coretypes_h", - "machmode_h", + "insn_modes_h", "signop_h", "wide_int_h", + "wide_int_print_h", + "insn_modes_inline_h", + "machmode_h", "double_int_h", "real_h", "fixed_value_h", Index: gcc/Makefile.in =================================================================== --- gcc/Makefile.in 2017-05-23 19:29:59.645724759 +0100 +++ gcc/Makefile.in 2017-05-24 14:37:44.737223605 +0100 @@ -900,14 +900,15 @@ COMMON_TARGET_DEF = common/common-target TARGET_H = $(TM_H) target.h $(TARGET_DEF) insn-modes.h insn-codes.h C_TARGET_H = c-family/c-target.h $(C_TARGET_DEF) COMMON_TARGET_H = common/common-target.h $(INPUT_H) $(COMMON_TARGET_DEF) -MACHMODE_H = machmode.h mode-classes.def insn-modes.h +MACHMODE_H = machmode.h mode-classes.def HOOKS_H = hooks.h $(MACHMODE_H) HOSTHOOKS_DEF_H = hosthooks-def.h $(HOOKS_H) LANGHOOKS_DEF_H = langhooks-def.h $(HOOKS_H) TARGET_DEF_H = target-def.h target-hooks-def.h $(HOOKS_H) targhooks.h C_TARGET_DEF_H = c-family/c-target-def.h c-family/c-target-hooks-def.h \ $(TREE_H) $(C_COMMON_H) $(HOOKS_H) common/common-targhooks.h -RTL_BASE_H = coretypes.h rtl.h rtl.def $(MACHMODE_H) reg-notes.def \ +CORETYPES_H = coretypes.h insn-modes.h insn-modes-inline.h +RTL_BASE_H = $(CORETYPES_H) rtl.h rtl.def $(MACHMODE_H) reg-notes.def \ insn-notes.def $(INPUT_H) $(REAL_H) statistics.h $(VEC_H) \ $(FIXED_VALUE_H) alias.h $(HASHTAB_H) FIXED_VALUE_H = fixed-value.h $(MACHMODE_H) double-int.h @@ -919,7 +920,7 @@ BUILTINS_DEF = builtins.def sync-builtin hsa-builtins.def INTERNAL_FN_DEF = internal-fn.def INTERNAL_FN_H = internal-fn.h $(INTERNAL_FN_DEF) -TREE_CORE_H = tree-core.h coretypes.h all-tree.def tree.def \ +TREE_CORE_H = tree-core.h $(CORETYPES_H) all-tree.def tree.def \ c-family/c-common.def $(lang_tree_files) $(MACHMODE_H) \ $(BUILTINS_DEF) $(INPUT_H) statistics.h \ $(VEC_H) treestruct.def $(HASHTAB_H) \ @@ -1631,7 +1632,7 @@ MOSTLYCLEANFILES = insn-flags.h insn-con insn-attr.h insn-attr-common.h insn-attrtab.c insn-dfatab.c \ insn-latencytab.c insn-opinit.c insn-opinit.h insn-preds.c insn-constants.h \ tm-preds.h tm-constrs.h checksum-options gimple-match.c generic-match.c \ - tree-check.h min-insn-modes.c insn-modes.c insn-modes.h \ + tree-check.h min-insn-modes.c insn-modes.c insn-modes.h insn-modes-inline.h \ genrtl.h gt-*.h gtype-*.h gtype-desc.c gtyp-input.list \ case-cfn-macros.h cfn-operators.pd \ xgcc$(exeext) cpp$(exeext) $(FULL_DRIVER_NAME) \ @@ -2317,6 +2318,7 @@ s-genrtl-h: build/gengenrtl$(build_exeex insn-modes.c: s-modes; @true insn-modes.h: s-modes-h; @true +insn-modes-inline.h: s-modes-inline-h; @true min-insn-modes.c: s-modes-m; @true s-modes: build/genmodes$(build_exeext) @@ -2329,6 +2331,12 @@ s-modes-h: build/genmodes$(build_exeext) $(SHELL) $(srcdir)/../move-if-change tmp-modes.h insn-modes.h $(STAMP) s-modes-h +s-modes-inline-h: build/genmodes$(build_exeext) + $(RUN_GEN) build/genmodes$(build_exeext) -i > tmp-modes-inline.h + $(SHELL) $(srcdir)/../move-if-change tmp-modes-inline.h \ + insn-modes-inline.h + $(STAMP) s-modes-inline-h + s-modes-m: build/genmodes$(build_exeext) $(RUN_GEN) build/genmodes$(build_exeext) -m > tmp-min-modes.c $(SHELL) $(srcdir)/../move-if-change tmp-min-modes.c min-insn-modes.c @@ -2565,7 +2573,8 @@ s-gtype: build/gengtype$(build_exeext) $ generated_files = config.h tm.h $(TM_P_H) $(TM_H) multilib.h \ $(simple_generated_h) specs.h \ - tree-check.h genrtl.h insn-modes.h tm-preds.h tm-constrs.h \ + tree-check.h genrtl.h insn-modes.h insn-modes-inline.h \ + tm-preds.h tm-constrs.h \ $(ALL_GTFILES_H) gtype-desc.c gtype-desc.h gcov-iov.h \ options.h target-hooks-def.h insn-opinit.h \ common/common-target-hooks-def.h pass-instances.def \ @@ -2592,30 +2601,30 @@ build/version.o: version.c version.h \ # Header dependencies for the programs that generate source code. # These are library modules... build/errors.o : errors.c $(BCONFIG_H) $(SYSTEM_H) errors.h -build/gensupport.o: gensupport.c $(BCONFIG_H) $(SYSTEM_H) coretypes.h \ - $(GTM_H) $(RTL_BASE_H) $(OBSTACK_H) errors.h $(HASHTAB_H) \ - $(READ_MD_H) $(GENSUPPORT_H) -build/ggc-none.o : ggc-none.c $(BCONFIG_H) $(SYSTEM_H) coretypes.h \ +build/gensupport.o: gensupport.c $(BCONFIG_H) $(SYSTEM_H) \ + $(CORETYPES_H) $(GTM_H) $(RTL_BASE_H) $(OBSTACK_H) errors.h \ + $(HASHTAB_H) $(READ_MD_H) $(GENSUPPORT_H) +build/ggc-none.o : ggc-none.c $(BCONFIG_H) $(SYSTEM_H) $(CORETYPES_H) \ $(GGC_H) build/min-insn-modes.o : min-insn-modes.c $(BCONFIG_H) $(SYSTEM_H) \ $(MACHMODE_H) -build/print-rtl.o: print-rtl.c $(BCONFIG_H) $(SYSTEM_H) coretypes.h \ +build/print-rtl.o: print-rtl.c $(BCONFIG_H) $(SYSTEM_H) $(CORETYPES_H) \ $(GTM_H) $(RTL_BASE_H) -build/read-md.o: read-md.c $(BCONFIG_H) $(SYSTEM_H) coretypes.h \ +build/read-md.o: read-md.c $(BCONFIG_H) $(SYSTEM_H) $(CORETYPES_H) \ $(HASHTAB_H) errors.h $(READ_MD_H) -build/read-rtl.o: read-rtl.c $(BCONFIG_H) $(SYSTEM_H) coretypes.h \ +build/read-rtl.o: read-rtl.c $(BCONFIG_H) $(SYSTEM_H) $(CORETYPES_H) \ $(GTM_H) $(RTL_BASE_H) $(OBSTACK_H) $(HASHTAB_H) $(READ_MD_H) \ $(GENSUPPORT_H) -build/rtl.o: rtl.c $(BCONFIG_H) coretypes.h $(GTM_H) $(SYSTEM_H) \ +build/rtl.o: rtl.c $(BCONFIG_H) $(CORETYPES_H) $(GTM_H) $(SYSTEM_H) \ $(RTL_H) $(GGC_H) errors.h -build/vec.o : vec.c $(BCONFIG_H) $(SYSTEM_H) coretypes.h $(VEC_H) \ - $(GGC_H) toplev.h $(DIAGNOSTIC_CORE_H) -build/hash-table.o : hash-table.c $(BCONFIG_H) $(SYSTEM_H) coretypes.h \ - $(HASH_TABLE_H) $(GGC_H) toplev.h $(DIAGNOSTIC_CORE_H) -build/inchash.o : inchash.c $(BCONFIG_H) $(SYSTEM_H) coretypes.h \ - $(HASHTAB_H) inchash.h +build/vec.o : vec.c $(BCONFIG_H) $(SYSTEM_H) $(CORETYPES_H) $(VEC_H) \ + $(GGC_H) toplev.h $(DIAGNOSTIC_CORE_H) +build/hash-table.o : hash-table.c $(BCONFIG_H) $(SYSTEM_H) \ + $(CORETYPES_H) $(HASH_TABLE_H) $(GGC_H) toplev.h $(DIAGNOSTIC_CORE_H) +build/inchash.o : inchash.c $(BCONFIG_H) $(SYSTEM_H) $(CORETYPES_H) \ + $(HASHTAB_H) inchash.h build/gencondmd.o : build/gencondmd.c $(BCONFIG_H) $(SYSTEM_H) \ - coretypes.h $(GTM_H) insn-constants.h \ + $(CORETYPES_H) $(GTM_H) insn-constants.h \ $(filter-out insn-flags.h, $(RTL_H) $(TM_P_H) $(FUNCTION_H) $(REGS_H) \ $(RECOG_H) output.h $(FLAGS_H) $(RESOURCE_H) toplev.h $(DIAGNOSTIC_CORE_H) reload.h \ $(EXCEPT_H) tm-constrs.h) @@ -2627,39 +2636,39 @@ build/gencondmd.o : \ # ...these are the programs themselves. build/genattr.o : genattr.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H) \ - coretypes.h $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H) + $(CORETYPES_H) $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H) build/genattr-common.o : genattr-common.c $(RTL_BASE_H) $(BCONFIG_H) \ - $(SYSTEM_H) coretypes.h $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H) + $(SYSTEM_H) $(CORETYPES_H) $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H) build/genattrtab.o : genattrtab.c $(RTL_BASE_H) $(OBSTACK_H) \ - $(BCONFIG_H) $(SYSTEM_H) coretypes.h $(GTM_H) errors.h $(GGC_H) \ + $(BCONFIG_H) $(SYSTEM_H) $(CORETYPES_H) $(GTM_H) errors.h $(GGC_H) \ $(READ_MD_H) $(GENSUPPORT_H) $(FNMATCH_H) build/genautomata.o : genautomata.c $(RTL_BASE_H) $(OBSTACK_H) \ - $(BCONFIG_H) $(SYSTEM_H) coretypes.h $(GTM_H) errors.h $(VEC_H) \ + $(BCONFIG_H) $(SYSTEM_H) $(CORETYPES_H) $(GTM_H) errors.h $(VEC_H) \ $(HASHTAB_H) $(GENSUPPORT_H) $(FNMATCH_H) build/gencheck.o : gencheck.c all-tree.def $(BCONFIG_H) $(GTM_H) \ - $(SYSTEM_H) coretypes.h tree.def c-family/c-common.def \ + $(SYSTEM_H) $(CORETYPES_H) tree.def c-family/c-common.def \ $(lang_tree_files) gimple.def build/genchecksum.o : genchecksum.c $(BCONFIG_H) $(SYSTEM_H) $(MD5_H) build/gencodes.o : gencodes.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H) \ - coretypes.h $(GTM_H) errors.h $(GENSUPPORT_H) + $(CORETYPES_H) $(GTM_H) errors.h $(GENSUPPORT_H) build/genconditions.o : genconditions.c $(RTL_BASE_H) $(BCONFIG_H) \ - $(SYSTEM_H) coretypes.h $(GTM_H) errors.h $(HASHTAB_H) $(READ_MD_H) \ - $(GENSUPPORT_H) + $(SYSTEM_H) $(CORETYPES_H) $(GTM_H) errors.h $(HASHTAB_H) \ + $(READ_MD_H) $(GENSUPPORT_H) build/genconfig.o : genconfig.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H) \ - coretypes.h $(GTM_H) errors.h $(GENSUPPORT_H) + $(CORETYPES_H) $(GTM_H) errors.h $(GENSUPPORT_H) build/genconstants.o : genconstants.c $(BCONFIG_H) $(SYSTEM_H) \ - coretypes.h errors.h $(READ_MD_H) + $(CORETYPES_H) errors.h $(READ_MD_H) build/genemit.o : genemit.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H) \ - coretypes.h $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H) internal-fn.def + $(CORETYPES_H) $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H) internal-fn.def build/genenums.o : genenums.c $(BCONFIG_H) $(SYSTEM_H) \ - coretypes.h errors.h $(READ_MD_H) + $(CORETYPES_H) errors.h $(READ_MD_H) build/genextract.o : genextract.c $(RTL_BASE_H) $(BCONFIG_H) \ - $(SYSTEM_H) coretypes.h $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H) + $(SYSTEM_H) $(CORETYPES_H) $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H) build/genflags.o : genflags.c $(RTL_BASE_H) $(OBSTACK_H) $(BCONFIG_H) \ - $(SYSTEM_H) coretypes.h $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H) + $(SYSTEM_H) $(CORETYPES_H) $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H) build/gentarget-def.o : gentarget-def.c $(BCONFIG_H) $(SYSTEM_H) \ - coretypes.h $(GTM_H) $(RTL_BASE_H) errors.h $(READ_MD_H) $(GENSUPPORT_H) \ - $(HASH_TABLE_H) target-insns.def + $(CORETYPES_H) $(GTM_H) $(RTL_BASE_H) errors.h $(READ_MD_H) \ + $(GENSUPPORT_H) $(HASH_TABLE_H) target-insns.def build/gengenrtl.o : gengenrtl.c $(BCONFIG_H) $(SYSTEM_H) rtl.def # The gengtype generator program is special: Two versions are built. @@ -2695,30 +2704,32 @@ build/gengtype.o: $(BCONFIG_H) CFLAGS-errors.o += -DHOST_GENERATOR_FILE -build/genmddeps.o: genmddeps.c $(BCONFIG_H) $(SYSTEM_H) coretypes.h \ +build/genmddeps.o: genmddeps.c $(BCONFIG_H) $(SYSTEM_H) $(CORETYPES_H) \ errors.h $(READ_MD_H) build/genmodes.o : genmodes.c $(BCONFIG_H) $(SYSTEM_H) errors.h \ $(HASHTAB_H) machmode.def $(extra_modes_file) build/genopinit.o : genopinit.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H) \ - coretypes.h $(GTM_H) errors.h $(GENSUPPORT_H) optabs.def + $(CORETYPES_H) $(GTM_H) errors.h $(GENSUPPORT_H) optabs.def build/genoutput.o : genoutput.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H) \ - coretypes.h $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H) + $(CORETYPES_H) $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H) build/genpeep.o : genpeep.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H) \ - coretypes.h $(GTM_H) errors.h $(GENSUPPORT_H) toplev.h $(DIAGNOSTIC_CORE_H) + $(CORETYPES_H) $(GTM_H) errors.h $(GENSUPPORT_H) toplev.h \ + $(DIAGNOSTIC_CORE_H) build/genpreds.o : genpreds.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H) \ - coretypes.h $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H) $(OBSTACK_H) + $(CORETYPES_H) $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H) $(OBSTACK_H) build/genrecog.o : genrecog.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H) \ - coretypes.h $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H) \ + $(CORETYPES_H) $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H) \ $(HASH_TABLE_H) inchash.h build/genhooks.o : genhooks.c $(TARGET_DEF) $(C_TARGET_DEF) \ $(COMMON_TARGET_DEF) $(BCONFIG_H) $(SYSTEM_H) errors.h build/genmddump.o : genmddump.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H) \ - coretypes.h $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H) + $(CORETYPES_H) $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H) build/genmatch.o : genmatch.c $(BCONFIG_H) $(SYSTEM_H) \ - coretypes.h errors.h $(HASH_TABLE_H) hash-map.h $(GGC_H) is-a.h \ + $(CORETYPES_H) errors.h $(HASH_TABLE_H) hash-map.h $(GGC_H) is-a.h \ tree.def builtins.def internal-fn.def build/gencfn-macros.o : gencfn-macros.c $(BCONFIG_H) $(SYSTEM_H) \ - coretypes.h errors.h $(HASH_TABLE_H) hash-set.h builtins.def internal-fn.def + $(CORETYPES_H) errors.h $(HASH_TABLE_H) hash-set.h builtins.def \ + internal-fn.def # Compile the programs that generate insn-* from the machine description. # They are compiled with $(COMPILER_FOR_BUILD), and associated libraries, @@ -2816,8 +2827,8 @@ CFLAGS-cppdefault.o += $(PREPROCESSOR_DE # having an empty command (nothing following the semicolon). # gcov-iov.c is run on the build machine to generate gcov-iov.h from version.c -build/gcov-iov.o: gcov-iov.c $(BCONFIG_H) coretypes.h $(GTM_H) \ - $(SYSTEM_H) coretypes.h $(TM_H) +build/gcov-iov.o: gcov-iov.c $(BCONFIG_H) $(CORETYPES_H) $(GTM_H) \ + $(SYSTEM_H) $(CORETYPES_H) $(TM_H) build/gcov-iov$(build_exeext): build/gcov-iov.o +$(LINKER_FOR_BUILD) $(BUILD_LINKERFLAGS) $(BUILD_LDFLAGS) \ Index: gcc/coretypes.h =================================================================== --- gcc/coretypes.h 2017-05-18 07:51:11.876801735 +0100 +++ gcc/coretypes.h 2017-05-24 14:37:44.737223605 +0100 @@ -358,12 +358,17 @@ typedef void (*gt_pointer_operator) (voi typedef unsigned char uchar; #endif -/* Most host source files will require the following headers. */ -#if !defined (GENERATOR_FILE) && !defined (USED_FOR_TARGET) -#include "machmode.h" +/* Most source files will require the following headers. */ +#if !defined (USED_FOR_TARGET) +#include "insn-modes.h" #include "signop.h" #include "wide-int.h" +#include "wide-int-print.h" +#include "insn-modes-inline.h" +#include "machmode.h" #include "double-int.h" +/* Most host source files will require the following headers. */ +#if !defined (GENERATOR_FILE) #include "real.h" #include "fixed-value.h" #include "hash-table.h" @@ -372,6 +377,7 @@ typedef unsigned char uchar; #include "is-a.h" #include "memory-block.h" #include "dumpfile.h" +#endif #endif /* GENERATOR_FILE && !USED_FOR_TARGET */ #endif /* coretypes.h */ Index: gcc/machmode.h =================================================================== --- gcc/machmode.h 2017-02-23 19:54:03.000000000 +0000 +++ gcc/machmode.h 2017-05-24 14:37:44.739230513 +0100 @@ -20,9 +20,6 @@ Software Foundation; either version 3, o #ifndef HAVE_MACHINE_MODES #define HAVE_MACHINE_MODES -/* Make an enum class that gives all the machine modes. */ -#include "insn-modes.h" - /* Get the name of mode MODE as a string. */ extern const char * const mode_name[NUM_MACHINE_MODES]; Index: gcc/function-tests.c =================================================================== --- gcc/function-tests.c 2017-02-23 19:54:03.000000000 +0000 +++ gcc/function-tests.c 2017-05-24 14:37:44.738227059 +0100 @@ -22,7 +22,6 @@ Software Foundation; either version 3, o #include "coretypes.h" #include "tm.h" #include "opts.h" -#include "signop.h" #include "hash-set.h" #include "fixed-value.h" #include "alias.h" @@ -38,7 +37,6 @@ Software Foundation; either version 3, o #include "vec.h" #include "hashtab.h" #include "hash-set.h" -#include "machmode.h" #include "hard-reg-set.h" #include "input.h" #include "function.h" @@ -56,10 +54,8 @@ Software Foundation; either version 3, o #include "gimplify.h" #include "tree-cfg.h" #include "basic-block.h" -#include "double-int.h" #include "alias.h" #include "symtab.h" -#include "wide-int.h" #include "inchash.h" #include "tree.h" #include "fold-const.h" Index: gcc/rtl.h =================================================================== --- gcc/rtl.h 2017-03-28 16:19:28.000000000 +0100 +++ gcc/rtl.h 2017-05-24 14:37:44.739230513 +0100 @@ -24,10 +24,6 @@ #define GCC_RTL_H machmode.h and other files to exist and would not normally have been included by coretypes.h. */ #ifdef GENERATOR_FILE -#include "machmode.h" -#include "signop.h" -#include "wide-int.h" -#include "double-int.h" #include "real.h" #include "fixed-value.h" #include "statistics.h" Index: gcc/gcc-rich-location.c =================================================================== --- gcc/gcc-rich-location.c 2017-02-23 19:54:12.000000000 +0000 +++ gcc/gcc-rich-location.c 2017-05-24 14:37:44.738227059 +0100 @@ -23,13 +23,10 @@ Software Foundation; either version 3, o #include "tm.h" #include "rtl.h" #include "hash-set.h" -#include "machmode.h" #include "vec.h" -#include "double-int.h" #include "input.h" #include "alias.h" #include "symtab.h" -#include "wide-int.h" #include "inchash.h" #include "tree-core.h" #include "tree.h" Index: gcc/optc-save-gen.awk =================================================================== --- gcc/optc-save-gen.awk 2017-02-23 19:54:15.000000000 +0000 +++ gcc/optc-save-gen.awk 2017-05-24 14:37:44.739230513 +0100 @@ -41,13 +41,10 @@ print "#include " quote "flags.h" quote print "#include " quote "target.h" quote print "#include " quote "inchash.h" quote print "#include " quote "hash-set.h" quote -print "#include " quote "machmode.h" quote print "#include " quote "vec.h" quote -print "#include " quote "double-int.h" quote print "#include " quote "input.h" quote print "#include " quote "alias.h" quote print "#include " quote "symtab.h" quote -print "#include " quote "wide-int.h" quote print "#include " quote "inchash.h" quote print "#include " quote "tree.h" quote print "#include " quote "fold-const.h" quote Index: gcc/gencheck.c =================================================================== --- gcc/gencheck.c 2017-02-23 19:54:03.000000000 +0000 +++ gcc/gencheck.c 2017-05-24 14:37:44.738227059 +0100 @@ -17,9 +17,6 @@ Software Foundation; either version 3, o along with GCC; see the file COPYING3. If not see . */ -/* We don't have insn-modes.h, but we include tm.h. */ -#define BITS_PER_UNIT 8 - #include "bconfig.h" #include "system.h" #include "coretypes.h" Index: gcc/godump.c =================================================================== --- gcc/godump.c 2017-02-23 19:54:03.000000000 +0000 +++ gcc/godump.c 2017-05-24 14:37:44.738227059 +0100 @@ -31,7 +31,6 @@ Software Foundation; either version 3, o #include "system.h" #include "coretypes.h" #include "tree.h" -#include "wide-int-print.h" #include "diagnostic-core.h" #include "debug.h" #include "stor-layout.h" Index: gcc/pretty-print.h =================================================================== --- gcc/pretty-print.h 2017-02-23 19:54:04.000000000 +0000 +++ gcc/pretty-print.h 2017-05-24 14:37:44.739230513 +0100 @@ -22,7 +22,6 @@ Software Foundation; either version 3, o #define GCC_PRETTY_PRINT_H #include "obstack.h" -#include "wide-int-print.h" /* Maximum number of format string arguments. */ #define PP_NL_ARGMAX 30 Index: gcc/wide-int-print.cc =================================================================== --- gcc/wide-int-print.cc 2017-02-23 19:54:03.000000000 +0000 +++ gcc/wide-int-print.cc 2017-05-24 14:37:44.740233967 +0100 @@ -21,7 +21,6 @@ along with GCC; see the file COPYING3. #include "config.h" #include "system.h" #include "coretypes.h" -#include "wide-int-print.h" /* * public printing routines. Index: gcc/wide-int.cc =================================================================== --- gcc/wide-int.cc 2017-02-23 19:54:04.000000000 +0000 +++ gcc/wide-int.cc 2017-05-24 14:37:44.740233967 +0100 @@ -24,7 +24,6 @@ along with GCC; see the file COPYING3. #include "tm.h" #include "tree.h" #include "selftest.h" -#include "wide-int-print.h" #define HOST_BITS_PER_HALF_WIDE_INT 32 Index: gcc/hash-map-tests.c =================================================================== --- gcc/hash-map-tests.c 2017-02-23 19:54:12.000000000 +0000 +++ gcc/hash-map-tests.c 2017-05-24 14:37:44.738227059 +0100 @@ -22,7 +22,6 @@ Software Foundation; either version 3, o #include "coretypes.h" #include "tm.h" #include "opts.h" -#include "signop.h" #include "hash-set.h" #include "fixed-value.h" #include "alias.h" Index: gcc/hash-set-tests.c =================================================================== --- gcc/hash-set-tests.c 2017-02-23 19:54:15.000000000 +0000 +++ gcc/hash-set-tests.c 2017-05-24 14:37:44.739230513 +0100 @@ -22,7 +22,6 @@ Software Foundation; either version 3, o #include "coretypes.h" #include "tm.h" #include "opts.h" -#include "signop.h" #include "hash-set.h" #include "selftest.h" Index: gcc/rtl-tests.c =================================================================== --- gcc/rtl-tests.c 2017-02-23 19:54:15.000000000 +0000 +++ gcc/rtl-tests.c 2017-05-24 14:37:44.739230513 +0100 @@ -22,7 +22,6 @@ Software Foundation; either version 3, o #include "coretypes.h" #include "tm.h" #include "opts.h" -#include "signop.h" #include "hash-set.h" #include "fixed-value.h" #include "alias.h" Index: gcc/mkconfig.sh =================================================================== --- gcc/mkconfig.sh 2017-02-23 19:54:03.000000000 +0000 +++ gcc/mkconfig.sh 2017-05-24 14:37:44.739230513 +0100 @@ -100,9 +100,6 @@ case $output in #if defined IN_GCC && !defined GENERATOR_FILE # include "insn-modes.h" #endif -#if defined IN_GCC && defined GENERATOR_FILE && !defined BITS_PER_UNIT -#include "machmode.h" -#endif EOF ;; esac Index: gcc/genmodes.c =================================================================== --- gcc/genmodes.c 2017-03-28 16:19:28.000000000 +0100 +++ gcc/genmodes.c 2017-05-24 14:37:44.738227059 +0100 @@ -1204,6 +1204,24 @@ enum machine_mode\n{"); printf ("#define NUM_INT_N_ENTS %d\n", n_int_n_ents); + puts ("\ +\n\ +#endif /* insn-modes.h */"); +} + +static void +emit_insn_modes_inline_h (void) +{ + printf ("/* Generated automatically from machmode.def%s%s\n", + HAVE_EXTRA_MODES ? " and " : "", + EXTRA_MODES_FILE); + + puts ("\ + by genmodes. */\n\ +\n\ +#ifndef GCC_INSN_MODES_INLINE_H\n\ +#define GCC_INSN_MODES_INLINE_H"); + puts ("\n#if !defined (USED_FOR_TARGET) && GCC_VERSION >= 4001\n"); emit_mode_size_inline (); emit_mode_nunits_inline (); @@ -1214,7 +1232,7 @@ enum machine_mode\n{"); puts ("\ \n\ -#endif /* insn-modes.h */"); +#endif /* insn-modes-inline.h */"); } static void @@ -1231,7 +1249,6 @@ emit_insn_modes_c_header (void) #include \"system.h\"\n\ #include \"coretypes.h\"\n\ #include \"tm.h\"\n\ -#include \"machmode.h\"\n\ #include \"real.h\""); } @@ -1247,7 +1264,7 @@ emit_min_insn_modes_c_header (void) \n\ #include \"bconfig.h\"\n\ #include \"system.h\"\n\ -#include \"machmode.h\""); +#include \"coretypes.h\""); } static void @@ -1799,18 +1816,20 @@ emit_min_insn_modes_c (void) int main (int argc, char **argv) { - bool gen_header = false, gen_min = false; + bool gen_header = false, gen_inlines = false, gen_min = false; progname = argv[0]; if (argc == 1) ; else if (argc == 2 && !strcmp (argv[1], "-h")) gen_header = true; + else if (argc == 2 && !strcmp (argv[1], "-i")) + gen_inlines = true; else if (argc == 2 && !strcmp (argv[1], "-m")) gen_min = true; else { - error ("usage: %s [-h|-m] > file", progname); + error ("usage: %s [-h|-i|-m] > file", progname); return FATAL_EXIT_CODE; } @@ -1826,6 +1845,8 @@ main (int argc, char **argv) if (gen_header) emit_insn_modes_h (); + else if (gen_inlines) + emit_insn_modes_inline_h (); else if (gen_min) emit_min_insn_modes_c (); else