On 05/24/2017 08:54 AM, Richard Sandiford wrote:
> Jeff Law <l...@redhat.com> 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  <richard.sandif...@arm.com>
>>>         Alan Hayward  <alan.hayw...@arm.com>
>>>         David Sherwood  <david.sherw...@arm.com>
>>>
>>>     * 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 <module>
>     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  <richard.sandif...@linaro.org>
>           Alan Hayward  <alan.hayw...@arm.com>
>           David Sherwood  <david.sherw...@arm.com>
> 
> 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.
OK.

Jeff

Reply via email to