This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [002/nnn] poly_int: IN_TARGET_CODE
- From: Richard Sandiford <richard dot sandiford at linaro dot org>
- To: Jeff Law <law at redhat dot com>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Fri, 15 Dec 2017 01:08:45 +0000
- Subject: Re: [002/nnn] poly_int: IN_TARGET_CODE
- Authentication-results: sourceware.org; auth=none
- References: <871sltvm7r.fsf@linaro.org> <87po9du7fx.fsf@linaro.org> <d2f9db0e-8e55-4bfd-3f16-044483701ec5@redhat.com>
Jeff Law <law@redhat.com> writes:
> On 10/23/2017 10:58 AM, Richard Sandiford wrote:
>> This patch makes each target-specific TU define an IN_TARGET_CODE macro,
>> which is used to decide whether poly_int<1, C> should convert to C.
>>
>>
>> 2017-10-23 Richard Sandiford <richard.sandiford@linaro.org>
>> Alan Hayward <alan.hayward@arm.com>
>> David Sherwood <david.sherwood@arm.com>
>>
>> gcc/
>> * genattrtab.c (write_header): Define IN_TARGET_CODE to 1 in the
>> target C file.
>> * genautomata.c (main): Likewise.
>> * genconditions.c (write_header): Likewise.
>> * genemit.c (main): Likewise.
>> * genextract.c (print_header): Likewise.
>> * genopinit.c (main): Likewise.
>> * genoutput.c (output_prologue): Likewise.
>> * genpeep.c (main): Likewise.
>> * genpreds.c (write_insn_preds_c): Likewise.
>> * genrecog.c (writer_header): Likewise.
>> * config/aarch64/aarch64-builtins.c (IN_TARGET_CODE): Define.
>> * config/aarch64/aarch64-c.c (IN_TARGET_CODE): Likewise.
>> * config/aarch64/aarch64.c (IN_TARGET_CODE): Likewise.
>> * config/aarch64/cortex-a57-fma-steering.c (IN_TARGET_CODE): Likewise.
>> * config/aarch64/driver-aarch64.c (IN_TARGET_CODE): Likewise.
>> * config/alpha/alpha.c (IN_TARGET_CODE): Likewise.
>> * config/alpha/driver-alpha.c (IN_TARGET_CODE): Likewise.
>> * config/arc/arc-c.c (IN_TARGET_CODE): Likewise.
>> * config/arc/arc.c (IN_TARGET_CODE): Likewise.
>> * config/arc/driver-arc.c (IN_TARGET_CODE): Likewise.
>> * config/arm/aarch-common.c (IN_TARGET_CODE): Likewise.
>> * config/arm/arm-builtins.c (IN_TARGET_CODE): Likewise.
>> * config/arm/arm-c.c (IN_TARGET_CODE): Likewise.
>> * config/arm/arm.c (IN_TARGET_CODE): Likewise.
>> * config/arm/driver-arm.c (IN_TARGET_CODE): Likewise.
>> * config/avr/avr-c.c (IN_TARGET_CODE): Likewise.
>> * config/avr/avr-devices.c (IN_TARGET_CODE): Likewise.
>> * config/avr/avr-log.c (IN_TARGET_CODE): Likewise.
>> * config/avr/avr.c (IN_TARGET_CODE): Likewise.
>> * config/avr/driver-avr.c (IN_TARGET_CODE): Likewise.
>> * config/avr/gen-avr-mmcu-specs.c (IN_TARGET_CODE): Likewise.
>> * config/bfin/bfin.c (IN_TARGET_CODE): Likewise.
>> * config/c6x/c6x.c (IN_TARGET_CODE): Likewise.
>> * config/cr16/cr16.c (IN_TARGET_CODE): Likewise.
>> * config/cris/cris.c (IN_TARGET_CODE): Likewise.
>> * config/darwin.c (IN_TARGET_CODE): Likewise.
>> * config/epiphany/epiphany.c (IN_TARGET_CODE): Likewise.
>> * config/epiphany/mode-switch-use.c (IN_TARGET_CODE): Likewise.
>> * config/epiphany/resolve-sw-modes.c (IN_TARGET_CODE): Likewise.
>> * config/fr30/fr30.c (IN_TARGET_CODE): Likewise.
>> * config/frv/frv.c (IN_TARGET_CODE): Likewise.
>> * config/ft32/ft32.c (IN_TARGET_CODE): Likewise.
>> * config/h8300/h8300.c (IN_TARGET_CODE): Likewise.
>> * config/i386/djgpp.c (IN_TARGET_CODE): Likewise.
>> * config/i386/driver-i386.c (IN_TARGET_CODE): Likewise.
>> * config/i386/driver-mingw32.c (IN_TARGET_CODE): Likewise.
>> * config/i386/host-cygwin.c (IN_TARGET_CODE): Likewise.
>> * config/i386/host-i386-darwin.c (IN_TARGET_CODE): Likewise.
>> * config/i386/host-mingw32.c (IN_TARGET_CODE): Likewise.
>> * config/i386/i386-c.c (IN_TARGET_CODE): Likewise.
>> * config/i386/i386.c (IN_TARGET_CODE): Likewise.
>> * config/i386/intelmic-mkoffload.c (IN_TARGET_CODE): Likewise.
>> * config/i386/msformat-c.c (IN_TARGET_CODE): Likewise.
>> * config/i386/winnt-cxx.c (IN_TARGET_CODE): Likewise.
>> * config/i386/winnt-stubs.c (IN_TARGET_CODE): Likewise.
>> * config/i386/winnt.c (IN_TARGET_CODE): Likewise.
>> * config/i386/x86-tune-sched-atom.c (IN_TARGET_CODE): Likewise.
>> * config/i386/x86-tune-sched-bd.c (IN_TARGET_CODE): Likewise.
>> * config/i386/x86-tune-sched-core.c (IN_TARGET_CODE): Likewise.
>> * config/i386/x86-tune-sched.c (IN_TARGET_CODE): Likewise.
>> * config/ia64/ia64-c.c (IN_TARGET_CODE): Likewise.
>> * config/ia64/ia64.c (IN_TARGET_CODE): Likewise.
>> * config/iq2000/iq2000.c (IN_TARGET_CODE): Likewise.
>> * config/lm32/lm32.c (IN_TARGET_CODE): Likewise.
>> * config/m32c/m32c-pragma.c (IN_TARGET_CODE): Likewise.
>> * config/m32c/m32c.c (IN_TARGET_CODE): Likewise.
>> * config/m32r/m32r.c (IN_TARGET_CODE): Likewise.
>> * config/m68k/m68k.c (IN_TARGET_CODE): Likewise.
>> * config/mcore/mcore.c (IN_TARGET_CODE): Likewise.
>> * config/microblaze/microblaze-c.c (IN_TARGET_CODE): Likewise.
>> * config/microblaze/microblaze.c (IN_TARGET_CODE): Likewise.
>> * config/mips/driver-native.c (IN_TARGET_CODE): Likewise.
>> * config/mips/frame-header-opt.c (IN_TARGET_CODE): Likewise.
>> * config/mips/mips.c (IN_TARGET_CODE): Likewise.
>> * config/mmix/mmix.c (IN_TARGET_CODE): Likewise.
>> * config/mn10300/mn10300.c (IN_TARGET_CODE): Likewise.
>> * config/moxie/moxie.c (IN_TARGET_CODE): Likewise.
>> * config/msp430/driver-msp430.c (IN_TARGET_CODE): Likewise.
>> * config/msp430/msp430-c.c (IN_TARGET_CODE): Likewise.
>> * config/msp430/msp430.c (IN_TARGET_CODE): Likewise.
>> * config/nds32/nds32-cost.c (IN_TARGET_CODE): Likewise.
>> * config/nds32/nds32-fp-as-gp.c (IN_TARGET_CODE): Likewise.
>> * config/nds32/nds32-intrinsic.c (IN_TARGET_CODE): Likewise.
>> * config/nds32/nds32-isr.c (IN_TARGET_CODE): Likewise.
>> * config/nds32/nds32-md-auxiliary.c (IN_TARGET_CODE): Likewise.
>> * config/nds32/nds32-memory-manipulation.c (IN_TARGET_CODE): Likewise.
>> * config/nds32/nds32-pipelines-auxiliary.c (IN_TARGET_CODE): Likewise.
>> * config/nds32/nds32-predicates.c (IN_TARGET_CODE): Likewise.
>> * config/nds32/nds32.c (IN_TARGET_CODE): Likewise.
>> * config/nios2/nios2.c (IN_TARGET_CODE): Likewise.
>> * config/nvptx/mkoffload.c (IN_TARGET_CODE): Likewise.
>> * config/nvptx/nvptx.c (IN_TARGET_CODE): Likewise.
>> * config/pa/pa.c (IN_TARGET_CODE): Likewise.
>> * config/pdp11/pdp11.c (IN_TARGET_CODE): Likewise.
>> * config/powerpcspe/driver-powerpcspe.c (IN_TARGET_CODE): Likewise.
>> * config/powerpcspe/host-darwin.c (IN_TARGET_CODE): Likewise.
>> * config/powerpcspe/host-ppc64-darwin.c (IN_TARGET_CODE): Likewise.
>> * config/powerpcspe/powerpcspe-c.c (IN_TARGET_CODE): Likewise.
>> * config/powerpcspe/powerpcspe-linux.c (IN_TARGET_CODE): Likewise.
>> * config/powerpcspe/powerpcspe.c (IN_TARGET_CODE): Likewise.
>> * config/riscv/riscv-builtins.c (IN_TARGET_CODE): Likewise.
>> * config/riscv/riscv-c.c (IN_TARGET_CODE): Likewise.
>> * config/riscv/riscv.c (IN_TARGET_CODE): Likewise.
>> * config/rl78/rl78-c.c (IN_TARGET_CODE): Likewise.
>> * config/rl78/rl78.c (IN_TARGET_CODE): Likewise.
>> * config/rs6000/driver-rs6000.c (IN_TARGET_CODE): Likewise.
>> * config/rs6000/host-darwin.c (IN_TARGET_CODE): Likewise.
>> * config/rs6000/host-ppc64-darwin.c (IN_TARGET_CODE): Likewise.
>> * config/rs6000/rs6000-c.c (IN_TARGET_CODE): Likewise.
>> * config/rs6000/rs6000-linux.c (IN_TARGET_CODE): Likewise.
>> * config/rs6000/rs6000-p8swap.c (IN_TARGET_CODE): Likewise.
>> * config/rs6000/rs6000-string.c (IN_TARGET_CODE): Likewise.
>> * config/rs6000/rs6000.c (IN_TARGET_CODE): Likewise.
>> * config/rx/rx.c (IN_TARGET_CODE): Likewise.
>> * config/s390/driver-native.c (IN_TARGET_CODE): Likewise.
>> * config/s390/s390-c.c (IN_TARGET_CODE): Likewise.
>> * config/s390/s390.c (IN_TARGET_CODE): Likewise.
>> * config/sh/sh-c.c (IN_TARGET_CODE): Likewise.
>> * config/sh/sh-mem.cc (IN_TARGET_CODE): Likewise.
>> * config/sh/sh.c (IN_TARGET_CODE): Likewise.
>> * config/sh/sh_optimize_sett_clrt.cc (IN_TARGET_CODE): Likewise.
>> * config/sh/sh_treg_combine.cc (IN_TARGET_CODE): Likewise.
>> * config/sparc/driver-sparc.c (IN_TARGET_CODE): Likewise.
>> * config/sparc/sparc-c.c (IN_TARGET_CODE): Likewise.
>> * config/sparc/sparc.c (IN_TARGET_CODE): Likewise.
>> * config/spu/spu-c.c (IN_TARGET_CODE): Likewise.
>> * config/spu/spu.c (IN_TARGET_CODE): Likewise.
>> * config/stormy16/stormy16.c (IN_TARGET_CODE): Likewise.
>> * config/tilegx/mul-tables.c (IN_TARGET_CODE): Likewise.
>> * config/tilegx/tilegx-c.c (IN_TARGET_CODE): Likewise.
>> * config/tilegx/tilegx.c (IN_TARGET_CODE): Likewise.
>> * config/tilepro/mul-tables.c (IN_TARGET_CODE): Likewise.
>> * config/tilepro/tilepro-c.c (IN_TARGET_CODE): Likewise.
>> * config/tilepro/tilepro.c (IN_TARGET_CODE): Likewise.
>> * config/v850/v850-c.c (IN_TARGET_CODE): Likewise.
>> * config/v850/v850.c (IN_TARGET_CODE): Likewise.
>> * config/vax/vax.c (IN_TARGET_CODE): Likewise.
>> * config/visium/visium.c (IN_TARGET_CODE): Likewise.
>> * config/vms/vms-c.c (IN_TARGET_CODE): Likewise.
>> * config/vms/vms-f.c (IN_TARGET_CODE): Likewise.
>> * config/vms/vms.c (IN_TARGET_CODE): Likewise.
>> * config/xtensa/xtensa.c (IN_TARGET_CODE): Likewise.
> ISTM this needs documenting somewhere.
>
> OK with a suitable doc patch.
OK. I couldn't find anywhere that was an obvious fit, so in the end
I went for the "Anatomy of a target back end". (The effect on
IN_TARGET_CODE on poly-int is already documented in poly-int.texi.)
Does this look OK?
Thanks,
Richard
2017-12-15 Richard Sandiford <richard.sandiford@linaro.org>
Alan Hayward <alan.hayward@arm.com>
David Sherwood <david.sherwood@arm.com>
gcc/
* doc/sourcebuild.texi: Document IN_TARGET_CODE.
[...]
Index: gcc/doc/sourcebuild.texi
===================================================================
--- gcc/doc/sourcebuild.texi 2017-12-05 14:24:53.348999076 +0000
+++ gcc/doc/sourcebuild.texi 2017-12-15 01:04:55.748638203 +0000
@@ -822,6 +822,17 @@ manual needs to be installed as info for
chapter of this manual.
@end itemize
+GCC uses the macro @code{IN_TARGET_CODE} to distinguish between
+machine-specific @file{.c} and @file{.cc} files and
+machine-independent @file{.c} and @file{.cc} files. Machine-specific
+files should use the directive:
+
+@example
+#define IN_TARGET_CODE 1
+@end example
+
+before including @code{config.h}.
+
If the back end is added to the official GCC source repository, the
following are also necessary:
[...]