diff options
author | Martin Liska <mliska@suse.cz> | 2022-01-14 16:56:44 +0100 |
---|---|---|
committer | Martin Liska <mliska@suse.cz> | 2022-01-17 22:12:04 +0100 |
commit | 5c69acb32329d49e58c26fa41ae74229a52b9106 (patch) | |
tree | ddb05f9d73afb6f998457d2ac4b720e3b3b60483 /gcc/toplev.c | |
parent | 490e23032baaece71f2ec09fa1805064b150fbc2 (diff) | |
download | gcc-5c69acb32329d49e58c26fa41ae74229a52b9106.zip gcc-5c69acb32329d49e58c26fa41ae74229a52b9106.tar.gz gcc-5c69acb32329d49e58c26fa41ae74229a52b9106.tar.bz2 |
Rename .c files to .cc files.
gcc/ada/ChangeLog:
* adadecode.c: Moved to...
* adadecode.cc: ...here.
* affinity.c: Moved to...
* affinity.cc: ...here.
* argv-lynxos178-raven-cert.c: Moved to...
* argv-lynxos178-raven-cert.cc: ...here.
* argv.c: Moved to...
* argv.cc: ...here.
* aux-io.c: Moved to...
* aux-io.cc: ...here.
* cio.c: Moved to...
* cio.cc: ...here.
* cstreams.c: Moved to...
* cstreams.cc: ...here.
* env.c: Moved to...
* env.cc: ...here.
* exit.c: Moved to...
* exit.cc: ...here.
* expect.c: Moved to...
* expect.cc: ...here.
* final.c: Moved to...
* final.cc: ...here.
* gcc-interface/cuintp.c: Moved to...
* gcc-interface/cuintp.cc: ...here.
* gcc-interface/decl.c: Moved to...
* gcc-interface/decl.cc: ...here.
* gcc-interface/misc.c: Moved to...
* gcc-interface/misc.cc: ...here.
* gcc-interface/targtyps.c: Moved to...
* gcc-interface/targtyps.cc: ...here.
* gcc-interface/trans.c: Moved to...
* gcc-interface/trans.cc: ...here.
* gcc-interface/utils.c: Moved to...
* gcc-interface/utils.cc: ...here.
* gcc-interface/utils2.c: Moved to...
* gcc-interface/utils2.cc: ...here.
* init.c: Moved to...
* init.cc: ...here.
* initialize.c: Moved to...
* initialize.cc: ...here.
* libgnarl/thread.c: Moved to...
* libgnarl/thread.cc: ...here.
* link.c: Moved to...
* link.cc: ...here.
* locales.c: Moved to...
* locales.cc: ...here.
* mkdir.c: Moved to...
* mkdir.cc: ...here.
* raise.c: Moved to...
* raise.cc: ...here.
* rtfinal.c: Moved to...
* rtfinal.cc: ...here.
* rtinit.c: Moved to...
* rtinit.cc: ...here.
* seh_init.c: Moved to...
* seh_init.cc: ...here.
* sigtramp-armdroid.c: Moved to...
* sigtramp-armdroid.cc: ...here.
* sigtramp-ios.c: Moved to...
* sigtramp-ios.cc: ...here.
* sigtramp-qnx.c: Moved to...
* sigtramp-qnx.cc: ...here.
* sigtramp-vxworks.c: Moved to...
* sigtramp-vxworks.cc: ...here.
* socket.c: Moved to...
* socket.cc: ...here.
* tracebak.c: Moved to...
* tracebak.cc: ...here.
* version.c: Moved to...
* version.cc: ...here.
* vx_stack_info.c: Moved to...
* vx_stack_info.cc: ...here.
gcc/ChangeLog:
* adjust-alignment.c: Moved to...
* adjust-alignment.cc: ...here.
* alias.c: Moved to...
* alias.cc: ...here.
* alloc-pool.c: Moved to...
* alloc-pool.cc: ...here.
* asan.c: Moved to...
* asan.cc: ...here.
* attribs.c: Moved to...
* attribs.cc: ...here.
* auto-inc-dec.c: Moved to...
* auto-inc-dec.cc: ...here.
* auto-profile.c: Moved to...
* auto-profile.cc: ...here.
* bb-reorder.c: Moved to...
* bb-reorder.cc: ...here.
* bitmap.c: Moved to...
* bitmap.cc: ...here.
* btfout.c: Moved to...
* btfout.cc: ...here.
* builtins.c: Moved to...
* builtins.cc: ...here.
* caller-save.c: Moved to...
* caller-save.cc: ...here.
* calls.c: Moved to...
* calls.cc: ...here.
* ccmp.c: Moved to...
* ccmp.cc: ...here.
* cfg.c: Moved to...
* cfg.cc: ...here.
* cfganal.c: Moved to...
* cfganal.cc: ...here.
* cfgbuild.c: Moved to...
* cfgbuild.cc: ...here.
* cfgcleanup.c: Moved to...
* cfgcleanup.cc: ...here.
* cfgexpand.c: Moved to...
* cfgexpand.cc: ...here.
* cfghooks.c: Moved to...
* cfghooks.cc: ...here.
* cfgloop.c: Moved to...
* cfgloop.cc: ...here.
* cfgloopanal.c: Moved to...
* cfgloopanal.cc: ...here.
* cfgloopmanip.c: Moved to...
* cfgloopmanip.cc: ...here.
* cfgrtl.c: Moved to...
* cfgrtl.cc: ...here.
* cgraph.c: Moved to...
* cgraph.cc: ...here.
* cgraphbuild.c: Moved to...
* cgraphbuild.cc: ...here.
* cgraphclones.c: Moved to...
* cgraphclones.cc: ...here.
* cgraphunit.c: Moved to...
* cgraphunit.cc: ...here.
* collect-utils.c: Moved to...
* collect-utils.cc: ...here.
* collect2-aix.c: Moved to...
* collect2-aix.cc: ...here.
* collect2.c: Moved to...
* collect2.cc: ...here.
* combine-stack-adj.c: Moved to...
* combine-stack-adj.cc: ...here.
* combine.c: Moved to...
* combine.cc: ...here.
* common/common-targhooks.c: Moved to...
* common/common-targhooks.cc: ...here.
* common/config/aarch64/aarch64-common.c: Moved to...
* common/config/aarch64/aarch64-common.cc: ...here.
* common/config/alpha/alpha-common.c: Moved to...
* common/config/alpha/alpha-common.cc: ...here.
* common/config/arc/arc-common.c: Moved to...
* common/config/arc/arc-common.cc: ...here.
* common/config/arm/arm-common.c: Moved to...
* common/config/arm/arm-common.cc: ...here.
* common/config/avr/avr-common.c: Moved to...
* common/config/avr/avr-common.cc: ...here.
* common/config/bfin/bfin-common.c: Moved to...
* common/config/bfin/bfin-common.cc: ...here.
* common/config/bpf/bpf-common.c: Moved to...
* common/config/bpf/bpf-common.cc: ...here.
* common/config/c6x/c6x-common.c: Moved to...
* common/config/c6x/c6x-common.cc: ...here.
* common/config/cr16/cr16-common.c: Moved to...
* common/config/cr16/cr16-common.cc: ...here.
* common/config/cris/cris-common.c: Moved to...
* common/config/cris/cris-common.cc: ...here.
* common/config/csky/csky-common.c: Moved to...
* common/config/csky/csky-common.cc: ...here.
* common/config/default-common.c: Moved to...
* common/config/default-common.cc: ...here.
* common/config/epiphany/epiphany-common.c: Moved to...
* common/config/epiphany/epiphany-common.cc: ...here.
* common/config/fr30/fr30-common.c: Moved to...
* common/config/fr30/fr30-common.cc: ...here.
* common/config/frv/frv-common.c: Moved to...
* common/config/frv/frv-common.cc: ...here.
* common/config/gcn/gcn-common.c: Moved to...
* common/config/gcn/gcn-common.cc: ...here.
* common/config/h8300/h8300-common.c: Moved to...
* common/config/h8300/h8300-common.cc: ...here.
* common/config/i386/i386-common.c: Moved to...
* common/config/i386/i386-common.cc: ...here.
* common/config/ia64/ia64-common.c: Moved to...
* common/config/ia64/ia64-common.cc: ...here.
* common/config/iq2000/iq2000-common.c: Moved to...
* common/config/iq2000/iq2000-common.cc: ...here.
* common/config/lm32/lm32-common.c: Moved to...
* common/config/lm32/lm32-common.cc: ...here.
* common/config/m32r/m32r-common.c: Moved to...
* common/config/m32r/m32r-common.cc: ...here.
* common/config/m68k/m68k-common.c: Moved to...
* common/config/m68k/m68k-common.cc: ...here.
* common/config/mcore/mcore-common.c: Moved to...
* common/config/mcore/mcore-common.cc: ...here.
* common/config/microblaze/microblaze-common.c: Moved to...
* common/config/microblaze/microblaze-common.cc: ...here.
* common/config/mips/mips-common.c: Moved to...
* common/config/mips/mips-common.cc: ...here.
* common/config/mmix/mmix-common.c: Moved to...
* common/config/mmix/mmix-common.cc: ...here.
* common/config/mn10300/mn10300-common.c: Moved to...
* common/config/mn10300/mn10300-common.cc: ...here.
* common/config/msp430/msp430-common.c: Moved to...
* common/config/msp430/msp430-common.cc: ...here.
* common/config/nds32/nds32-common.c: Moved to...
* common/config/nds32/nds32-common.cc: ...here.
* common/config/nios2/nios2-common.c: Moved to...
* common/config/nios2/nios2-common.cc: ...here.
* common/config/nvptx/nvptx-common.c: Moved to...
* common/config/nvptx/nvptx-common.cc: ...here.
* common/config/or1k/or1k-common.c: Moved to...
* common/config/or1k/or1k-common.cc: ...here.
* common/config/pa/pa-common.c: Moved to...
* common/config/pa/pa-common.cc: ...here.
* common/config/pdp11/pdp11-common.c: Moved to...
* common/config/pdp11/pdp11-common.cc: ...here.
* common/config/pru/pru-common.c: Moved to...
* common/config/pru/pru-common.cc: ...here.
* common/config/riscv/riscv-common.c: Moved to...
* common/config/riscv/riscv-common.cc: ...here.
* common/config/rs6000/rs6000-common.c: Moved to...
* common/config/rs6000/rs6000-common.cc: ...here.
* common/config/rx/rx-common.c: Moved to...
* common/config/rx/rx-common.cc: ...here.
* common/config/s390/s390-common.c: Moved to...
* common/config/s390/s390-common.cc: ...here.
* common/config/sh/sh-common.c: Moved to...
* common/config/sh/sh-common.cc: ...here.
* common/config/sparc/sparc-common.c: Moved to...
* common/config/sparc/sparc-common.cc: ...here.
* common/config/tilegx/tilegx-common.c: Moved to...
* common/config/tilegx/tilegx-common.cc: ...here.
* common/config/tilepro/tilepro-common.c: Moved to...
* common/config/tilepro/tilepro-common.cc: ...here.
* common/config/v850/v850-common.c: Moved to...
* common/config/v850/v850-common.cc: ...here.
* common/config/vax/vax-common.c: Moved to...
* common/config/vax/vax-common.cc: ...here.
* common/config/visium/visium-common.c: Moved to...
* common/config/visium/visium-common.cc: ...here.
* common/config/xstormy16/xstormy16-common.c: Moved to...
* common/config/xstormy16/xstormy16-common.cc: ...here.
* common/config/xtensa/xtensa-common.c: Moved to...
* common/config/xtensa/xtensa-common.cc: ...here.
* compare-elim.c: Moved to...
* compare-elim.cc: ...here.
* config/aarch64/aarch64-bti-insert.c: Moved to...
* config/aarch64/aarch64-bti-insert.cc: ...here.
* config/aarch64/aarch64-builtins.c: Moved to...
* config/aarch64/aarch64-builtins.cc: ...here.
* config/aarch64/aarch64-c.c: Moved to...
* config/aarch64/aarch64-c.cc: ...here.
* config/aarch64/aarch64-d.c: Moved to...
* config/aarch64/aarch64-d.cc: ...here.
* config/aarch64/aarch64.c: Moved to...
* config/aarch64/aarch64.cc: ...here.
* config/aarch64/cortex-a57-fma-steering.c: Moved to...
* config/aarch64/cortex-a57-fma-steering.cc: ...here.
* config/aarch64/driver-aarch64.c: Moved to...
* config/aarch64/driver-aarch64.cc: ...here.
* config/aarch64/falkor-tag-collision-avoidance.c: Moved to...
* config/aarch64/falkor-tag-collision-avoidance.cc: ...here.
* config/aarch64/host-aarch64-darwin.c: Moved to...
* config/aarch64/host-aarch64-darwin.cc: ...here.
* config/alpha/alpha.c: Moved to...
* config/alpha/alpha.cc: ...here.
* config/alpha/driver-alpha.c: Moved to...
* config/alpha/driver-alpha.cc: ...here.
* config/arc/arc-c.c: Moved to...
* config/arc/arc-c.cc: ...here.
* config/arc/arc.c: Moved to...
* config/arc/arc.cc: ...here.
* config/arc/driver-arc.c: Moved to...
* config/arc/driver-arc.cc: ...here.
* config/arm/aarch-common.c: Moved to...
* config/arm/aarch-common.cc: ...here.
* config/arm/arm-builtins.c: Moved to...
* config/arm/arm-builtins.cc: ...here.
* config/arm/arm-c.c: Moved to...
* config/arm/arm-c.cc: ...here.
* config/arm/arm-d.c: Moved to...
* config/arm/arm-d.cc: ...here.
* config/arm/arm.c: Moved to...
* config/arm/arm.cc: ...here.
* config/arm/driver-arm.c: Moved to...
* config/arm/driver-arm.cc: ...here.
* config/avr/avr-c.c: Moved to...
* config/avr/avr-c.cc: ...here.
* config/avr/avr-devices.c: Moved to...
* config/avr/avr-devices.cc: ...here.
* config/avr/avr-log.c: Moved to...
* config/avr/avr-log.cc: ...here.
* config/avr/avr.c: Moved to...
* config/avr/avr.cc: ...here.
* config/avr/driver-avr.c: Moved to...
* config/avr/driver-avr.cc: ...here.
* config/avr/gen-avr-mmcu-specs.c: Moved to...
* config/avr/gen-avr-mmcu-specs.cc: ...here.
* config/avr/gen-avr-mmcu-texi.c: Moved to...
* config/avr/gen-avr-mmcu-texi.cc: ...here.
* config/bfin/bfin.c: Moved to...
* config/bfin/bfin.cc: ...here.
* config/bpf/bpf.c: Moved to...
* config/bpf/bpf.cc: ...here.
* config/bpf/coreout.c: Moved to...
* config/bpf/coreout.cc: ...here.
* config/c6x/c6x.c: Moved to...
* config/c6x/c6x.cc: ...here.
* config/cr16/cr16.c: Moved to...
* config/cr16/cr16.cc: ...here.
* config/cris/cris.c: Moved to...
* config/cris/cris.cc: ...here.
* config/csky/csky.c: Moved to...
* config/csky/csky.cc: ...here.
* config/darwin-c.c: Moved to...
* config/darwin-c.cc: ...here.
* config/darwin-d.c: Moved to...
* config/darwin-d.cc: ...here.
* config/darwin-driver.c: Moved to...
* config/darwin-driver.cc: ...here.
* config/darwin-f.c: Moved to...
* config/darwin-f.cc: ...here.
* config/darwin.c: Moved to...
* config/darwin.cc: ...here.
* config/default-c.c: Moved to...
* config/default-c.cc: ...here.
* config/default-d.c: Moved to...
* config/default-d.cc: ...here.
* config/dragonfly-d.c: Moved to...
* config/dragonfly-d.cc: ...here.
* config/epiphany/epiphany.c: Moved to...
* config/epiphany/epiphany.cc: ...here.
* config/epiphany/mode-switch-use.c: Moved to...
* config/epiphany/mode-switch-use.cc: ...here.
* config/epiphany/resolve-sw-modes.c: Moved to...
* config/epiphany/resolve-sw-modes.cc: ...here.
* config/fr30/fr30.c: Moved to...
* config/fr30/fr30.cc: ...here.
* config/freebsd-d.c: Moved to...
* config/freebsd-d.cc: ...here.
* config/frv/frv.c: Moved to...
* config/frv/frv.cc: ...here.
* config/ft32/ft32.c: Moved to...
* config/ft32/ft32.cc: ...here.
* config/gcn/driver-gcn.c: Moved to...
* config/gcn/driver-gcn.cc: ...here.
* config/gcn/gcn-run.c: Moved to...
* config/gcn/gcn-run.cc: ...here.
* config/gcn/gcn-tree.c: Moved to...
* config/gcn/gcn-tree.cc: ...here.
* config/gcn/gcn.c: Moved to...
* config/gcn/gcn.cc: ...here.
* config/gcn/mkoffload.c: Moved to...
* config/gcn/mkoffload.cc: ...here.
* config/glibc-c.c: Moved to...
* config/glibc-c.cc: ...here.
* config/glibc-d.c: Moved to...
* config/glibc-d.cc: ...here.
* config/h8300/h8300.c: Moved to...
* config/h8300/h8300.cc: ...here.
* config/host-darwin.c: Moved to...
* config/host-darwin.cc: ...here.
* config/host-hpux.c: Moved to...
* config/host-hpux.cc: ...here.
* config/host-linux.c: Moved to...
* config/host-linux.cc: ...here.
* config/host-netbsd.c: Moved to...
* config/host-netbsd.cc: ...here.
* config/host-openbsd.c: Moved to...
* config/host-openbsd.cc: ...here.
* config/host-solaris.c: Moved to...
* config/host-solaris.cc: ...here.
* config/i386/djgpp.c: Moved to...
* config/i386/djgpp.cc: ...here.
* config/i386/driver-i386.c: Moved to...
* config/i386/driver-i386.cc: ...here.
* config/i386/driver-mingw32.c: Moved to...
* config/i386/driver-mingw32.cc: ...here.
* config/i386/gnu-property.c: Moved to...
* config/i386/gnu-property.cc: ...here.
* config/i386/host-cygwin.c: Moved to...
* config/i386/host-cygwin.cc: ...here.
* config/i386/host-i386-darwin.c: Moved to...
* config/i386/host-i386-darwin.cc: ...here.
* config/i386/host-mingw32.c: Moved to...
* config/i386/host-mingw32.cc: ...here.
* config/i386/i386-builtins.c: Moved to...
* config/i386/i386-builtins.cc: ...here.
* config/i386/i386-c.c: Moved to...
* config/i386/i386-c.cc: ...here.
* config/i386/i386-d.c: Moved to...
* config/i386/i386-d.cc: ...here.
* config/i386/i386-expand.c: Moved to...
* config/i386/i386-expand.cc: ...here.
* config/i386/i386-features.c: Moved to...
* config/i386/i386-features.cc: ...here.
* config/i386/i386-options.c: Moved to...
* config/i386/i386-options.cc: ...here.
* config/i386/i386.c: Moved to...
* config/i386/i386.cc: ...here.
* config/i386/intelmic-mkoffload.c: Moved to...
* config/i386/intelmic-mkoffload.cc: ...here.
* config/i386/msformat-c.c: Moved to...
* config/i386/msformat-c.cc: ...here.
* config/i386/winnt-cxx.c: Moved to...
* config/i386/winnt-cxx.cc: ...here.
* config/i386/winnt-d.c: Moved to...
* config/i386/winnt-d.cc: ...here.
* config/i386/winnt-stubs.c: Moved to...
* config/i386/winnt-stubs.cc: ...here.
* config/i386/winnt.c: Moved to...
* config/i386/winnt.cc: ...here.
* config/i386/x86-tune-sched-atom.c: Moved to...
* config/i386/x86-tune-sched-atom.cc: ...here.
* config/i386/x86-tune-sched-bd.c: Moved to...
* config/i386/x86-tune-sched-bd.cc: ...here.
* config/i386/x86-tune-sched-core.c: Moved to...
* config/i386/x86-tune-sched-core.cc: ...here.
* config/i386/x86-tune-sched.c: Moved to...
* config/i386/x86-tune-sched.cc: ...here.
* config/ia64/ia64-c.c: Moved to...
* config/ia64/ia64-c.cc: ...here.
* config/ia64/ia64.c: Moved to...
* config/ia64/ia64.cc: ...here.
* config/iq2000/iq2000.c: Moved to...
* config/iq2000/iq2000.cc: ...here.
* config/linux.c: Moved to...
* config/linux.cc: ...here.
* config/lm32/lm32.c: Moved to...
* config/lm32/lm32.cc: ...here.
* config/m32c/m32c-pragma.c: Moved to...
* config/m32c/m32c-pragma.cc: ...here.
* config/m32c/m32c.c: Moved to...
* config/m32c/m32c.cc: ...here.
* config/m32r/m32r.c: Moved to...
* config/m32r/m32r.cc: ...here.
* config/m68k/m68k.c: Moved to...
* config/m68k/m68k.cc: ...here.
* config/mcore/mcore.c: Moved to...
* config/mcore/mcore.cc: ...here.
* config/microblaze/microblaze-c.c: Moved to...
* config/microblaze/microblaze-c.cc: ...here.
* config/microblaze/microblaze.c: Moved to...
* config/microblaze/microblaze.cc: ...here.
* config/mips/driver-native.c: Moved to...
* config/mips/driver-native.cc: ...here.
* config/mips/frame-header-opt.c: Moved to...
* config/mips/frame-header-opt.cc: ...here.
* config/mips/mips-d.c: Moved to...
* config/mips/mips-d.cc: ...here.
* config/mips/mips.c: Moved to...
* config/mips/mips.cc: ...here.
* config/mmix/mmix.c: Moved to...
* config/mmix/mmix.cc: ...here.
* config/mn10300/mn10300.c: Moved to...
* config/mn10300/mn10300.cc: ...here.
* config/moxie/moxie.c: Moved to...
* config/moxie/moxie.cc: ...here.
* config/msp430/driver-msp430.c: Moved to...
* config/msp430/driver-msp430.cc: ...here.
* config/msp430/msp430-c.c: Moved to...
* config/msp430/msp430-c.cc: ...here.
* config/msp430/msp430-devices.c: Moved to...
* config/msp430/msp430-devices.cc: ...here.
* config/msp430/msp430.c: Moved to...
* config/msp430/msp430.cc: ...here.
* config/nds32/nds32-cost.c: Moved to...
* config/nds32/nds32-cost.cc: ...here.
* config/nds32/nds32-fp-as-gp.c: Moved to...
* config/nds32/nds32-fp-as-gp.cc: ...here.
* config/nds32/nds32-intrinsic.c: Moved to...
* config/nds32/nds32-intrinsic.cc: ...here.
* config/nds32/nds32-isr.c: Moved to...
* config/nds32/nds32-isr.cc: ...here.
* config/nds32/nds32-md-auxiliary.c: Moved to...
* config/nds32/nds32-md-auxiliary.cc: ...here.
* config/nds32/nds32-memory-manipulation.c: Moved to...
* config/nds32/nds32-memory-manipulation.cc: ...here.
* config/nds32/nds32-pipelines-auxiliary.c: Moved to...
* config/nds32/nds32-pipelines-auxiliary.cc: ...here.
* config/nds32/nds32-predicates.c: Moved to...
* config/nds32/nds32-predicates.cc: ...here.
* config/nds32/nds32-relax-opt.c: Moved to...
* config/nds32/nds32-relax-opt.cc: ...here.
* config/nds32/nds32-utils.c: Moved to...
* config/nds32/nds32-utils.cc: ...here.
* config/nds32/nds32.c: Moved to...
* config/nds32/nds32.cc: ...here.
* config/netbsd-d.c: Moved to...
* config/netbsd-d.cc: ...here.
* config/netbsd.c: Moved to...
* config/netbsd.cc: ...here.
* config/nios2/nios2.c: Moved to...
* config/nios2/nios2.cc: ...here.
* config/nvptx/mkoffload.c: Moved to...
* config/nvptx/mkoffload.cc: ...here.
* config/nvptx/nvptx-c.c: Moved to...
* config/nvptx/nvptx-c.cc: ...here.
* config/nvptx/nvptx.c: Moved to...
* config/nvptx/nvptx.cc: ...here.
* config/openbsd-d.c: Moved to...
* config/openbsd-d.cc: ...here.
* config/or1k/or1k.c: Moved to...
* config/or1k/or1k.cc: ...here.
* config/pa/pa-d.c: Moved to...
* config/pa/pa-d.cc: ...here.
* config/pa/pa.c: Moved to...
* config/pa/pa.cc: ...here.
* config/pdp11/pdp11.c: Moved to...
* config/pdp11/pdp11.cc: ...here.
* config/pru/pru-passes.c: Moved to...
* config/pru/pru-passes.cc: ...here.
* config/pru/pru-pragma.c: Moved to...
* config/pru/pru-pragma.cc: ...here.
* config/pru/pru.c: Moved to...
* config/pru/pru.cc: ...here.
* config/riscv/riscv-builtins.c: Moved to...
* config/riscv/riscv-builtins.cc: ...here.
* config/riscv/riscv-c.c: Moved to...
* config/riscv/riscv-c.cc: ...here.
* config/riscv/riscv-d.c: Moved to...
* config/riscv/riscv-d.cc: ...here.
* config/riscv/riscv-shorten-memrefs.c: Moved to...
* config/riscv/riscv-shorten-memrefs.cc: ...here.
* config/riscv/riscv-sr.c: Moved to...
* config/riscv/riscv-sr.cc: ...here.
* config/riscv/riscv.c: Moved to...
* config/riscv/riscv.cc: ...here.
* config/rl78/rl78-c.c: Moved to...
* config/rl78/rl78-c.cc: ...here.
* config/rl78/rl78.c: Moved to...
* config/rl78/rl78.cc: ...here.
* config/rs6000/driver-rs6000.c: Moved to...
* config/rs6000/driver-rs6000.cc: ...here.
* config/rs6000/host-darwin.c: Moved to...
* config/rs6000/host-darwin.cc: ...here.
* config/rs6000/host-ppc64-darwin.c: Moved to...
* config/rs6000/host-ppc64-darwin.cc: ...here.
* config/rs6000/rbtree.c: Moved to...
* config/rs6000/rbtree.cc: ...here.
* config/rs6000/rs6000-c.c: Moved to...
* config/rs6000/rs6000-c.cc: ...here.
* config/rs6000/rs6000-call.c: Moved to...
* config/rs6000/rs6000-call.cc: ...here.
* config/rs6000/rs6000-d.c: Moved to...
* config/rs6000/rs6000-d.cc: ...here.
* config/rs6000/rs6000-gen-builtins.c: Moved to...
* config/rs6000/rs6000-gen-builtins.cc: ...here.
* config/rs6000/rs6000-linux.c: Moved to...
* config/rs6000/rs6000-linux.cc: ...here.
* config/rs6000/rs6000-logue.c: Moved to...
* config/rs6000/rs6000-logue.cc: ...here.
* config/rs6000/rs6000-p8swap.c: Moved to...
* config/rs6000/rs6000-p8swap.cc: ...here.
* config/rs6000/rs6000-pcrel-opt.c: Moved to...
* config/rs6000/rs6000-pcrel-opt.cc: ...here.
* config/rs6000/rs6000-string.c: Moved to...
* config/rs6000/rs6000-string.cc: ...here.
* config/rs6000/rs6000.c: Moved to...
* config/rs6000/rs6000.cc: ...here.
* config/rx/rx.c: Moved to...
* config/rx/rx.cc: ...here.
* config/s390/driver-native.c: Moved to...
* config/s390/driver-native.cc: ...here.
* config/s390/s390-c.c: Moved to...
* config/s390/s390-c.cc: ...here.
* config/s390/s390-d.c: Moved to...
* config/s390/s390-d.cc: ...here.
* config/s390/s390.c: Moved to...
* config/s390/s390.cc: ...here.
* config/sh/divtab-sh4-300.c: Moved to...
* config/sh/divtab-sh4-300.cc: ...here.
* config/sh/divtab-sh4.c: Moved to...
* config/sh/divtab-sh4.cc: ...here.
* config/sh/divtab.c: Moved to...
* config/sh/divtab.cc: ...here.
* config/sh/sh-c.c: Moved to...
* config/sh/sh-c.cc: ...here.
* config/sh/sh.c: Moved to...
* config/sh/sh.cc: ...here.
* config/sol2-c.c: Moved to...
* config/sol2-c.cc: ...here.
* config/sol2-cxx.c: Moved to...
* config/sol2-cxx.cc: ...here.
* config/sol2-d.c: Moved to...
* config/sol2-d.cc: ...here.
* config/sol2-stubs.c: Moved to...
* config/sol2-stubs.cc: ...here.
* config/sol2.c: Moved to...
* config/sol2.cc: ...here.
* config/sparc/driver-sparc.c: Moved to...
* config/sparc/driver-sparc.cc: ...here.
* config/sparc/sparc-c.c: Moved to...
* config/sparc/sparc-c.cc: ...here.
* config/sparc/sparc-d.c: Moved to...
* config/sparc/sparc-d.cc: ...here.
* config/sparc/sparc.c: Moved to...
* config/sparc/sparc.cc: ...here.
* config/stormy16/stormy16.c: Moved to...
* config/stormy16/stormy16.cc: ...here.
* config/tilegx/mul-tables.c: Moved to...
* config/tilegx/mul-tables.cc: ...here.
* config/tilegx/tilegx-c.c: Moved to...
* config/tilegx/tilegx-c.cc: ...here.
* config/tilegx/tilegx.c: Moved to...
* config/tilegx/tilegx.cc: ...here.
* config/tilepro/mul-tables.c: Moved to...
* config/tilepro/mul-tables.cc: ...here.
* config/tilepro/tilepro-c.c: Moved to...
* config/tilepro/tilepro-c.cc: ...here.
* config/tilepro/tilepro.c: Moved to...
* config/tilepro/tilepro.cc: ...here.
* config/v850/v850-c.c: Moved to...
* config/v850/v850-c.cc: ...here.
* config/v850/v850.c: Moved to...
* config/v850/v850.cc: ...here.
* config/vax/vax.c: Moved to...
* config/vax/vax.cc: ...here.
* config/visium/visium.c: Moved to...
* config/visium/visium.cc: ...here.
* config/vms/vms-c.c: Moved to...
* config/vms/vms-c.cc: ...here.
* config/vms/vms-f.c: Moved to...
* config/vms/vms-f.cc: ...here.
* config/vms/vms.c: Moved to...
* config/vms/vms.cc: ...here.
* config/vxworks-c.c: Moved to...
* config/vxworks-c.cc: ...here.
* config/vxworks.c: Moved to...
* config/vxworks.cc: ...here.
* config/winnt-c.c: Moved to...
* config/winnt-c.cc: ...here.
* config/xtensa/xtensa.c: Moved to...
* config/xtensa/xtensa.cc: ...here.
* context.c: Moved to...
* context.cc: ...here.
* convert.c: Moved to...
* convert.cc: ...here.
* coverage.c: Moved to...
* coverage.cc: ...here.
* cppbuiltin.c: Moved to...
* cppbuiltin.cc: ...here.
* cppdefault.c: Moved to...
* cppdefault.cc: ...here.
* cprop.c: Moved to...
* cprop.cc: ...here.
* cse.c: Moved to...
* cse.cc: ...here.
* cselib.c: Moved to...
* cselib.cc: ...here.
* ctfc.c: Moved to...
* ctfc.cc: ...here.
* ctfout.c: Moved to...
* ctfout.cc: ...here.
* data-streamer-in.c: Moved to...
* data-streamer-in.cc: ...here.
* data-streamer-out.c: Moved to...
* data-streamer-out.cc: ...here.
* data-streamer.c: Moved to...
* data-streamer.cc: ...here.
* dbgcnt.c: Moved to...
* dbgcnt.cc: ...here.
* dbxout.c: Moved to...
* dbxout.cc: ...here.
* dce.c: Moved to...
* dce.cc: ...here.
* ddg.c: Moved to...
* ddg.cc: ...here.
* debug.c: Moved to...
* debug.cc: ...here.
* df-core.c: Moved to...
* df-core.cc: ...here.
* df-problems.c: Moved to...
* df-problems.cc: ...here.
* df-scan.c: Moved to...
* df-scan.cc: ...here.
* dfp.c: Moved to...
* dfp.cc: ...here.
* diagnostic-color.c: Moved to...
* diagnostic-color.cc: ...here.
* diagnostic-show-locus.c: Moved to...
* diagnostic-show-locus.cc: ...here.
* diagnostic-spec.c: Moved to...
* diagnostic-spec.cc: ...here.
* diagnostic.c: Moved to...
* diagnostic.cc: ...here.
* dojump.c: Moved to...
* dojump.cc: ...here.
* dominance.c: Moved to...
* dominance.cc: ...here.
* domwalk.c: Moved to...
* domwalk.cc: ...here.
* double-int.c: Moved to...
* double-int.cc: ...here.
* dse.c: Moved to...
* dse.cc: ...here.
* dumpfile.c: Moved to...
* dumpfile.cc: ...here.
* dwarf2asm.c: Moved to...
* dwarf2asm.cc: ...here.
* dwarf2cfi.c: Moved to...
* dwarf2cfi.cc: ...here.
* dwarf2ctf.c: Moved to...
* dwarf2ctf.cc: ...here.
* dwarf2out.c: Moved to...
* dwarf2out.cc: ...here.
* early-remat.c: Moved to...
* early-remat.cc: ...here.
* edit-context.c: Moved to...
* edit-context.cc: ...here.
* emit-rtl.c: Moved to...
* emit-rtl.cc: ...here.
* errors.c: Moved to...
* errors.cc: ...here.
* et-forest.c: Moved to...
* et-forest.cc: ...here.
* except.c: Moved to...
* except.cc: ...here.
* explow.c: Moved to...
* explow.cc: ...here.
* expmed.c: Moved to...
* expmed.cc: ...here.
* expr.c: Moved to...
* expr.cc: ...here.
* fibonacci_heap.c: Moved to...
* fibonacci_heap.cc: ...here.
* file-find.c: Moved to...
* file-find.cc: ...here.
* file-prefix-map.c: Moved to...
* file-prefix-map.cc: ...here.
* final.c: Moved to...
* final.cc: ...here.
* fixed-value.c: Moved to...
* fixed-value.cc: ...here.
* fold-const-call.c: Moved to...
* fold-const-call.cc: ...here.
* fold-const.c: Moved to...
* fold-const.cc: ...here.
* fp-test.c: Moved to...
* fp-test.cc: ...here.
* function-tests.c: Moved to...
* function-tests.cc: ...here.
* function.c: Moved to...
* function.cc: ...here.
* fwprop.c: Moved to...
* fwprop.cc: ...here.
* gcc-ar.c: Moved to...
* gcc-ar.cc: ...here.
* gcc-main.c: Moved to...
* gcc-main.cc: ...here.
* gcc-rich-location.c: Moved to...
* gcc-rich-location.cc: ...here.
* gcc.c: Moved to...
* gcc.cc: ...here.
* gcov-dump.c: Moved to...
* gcov-dump.cc: ...here.
* gcov-io.c: Moved to...
* gcov-io.cc: ...here.
* gcov-tool.c: Moved to...
* gcov-tool.cc: ...here.
* gcov.c: Moved to...
* gcov.cc: ...here.
* gcse-common.c: Moved to...
* gcse-common.cc: ...here.
* gcse.c: Moved to...
* gcse.cc: ...here.
* genattr-common.c: Moved to...
* genattr-common.cc: ...here.
* genattr.c: Moved to...
* genattr.cc: ...here.
* genattrtab.c: Moved to...
* genattrtab.cc: ...here.
* genautomata.c: Moved to...
* genautomata.cc: ...here.
* gencfn-macros.c: Moved to...
* gencfn-macros.cc: ...here.
* gencheck.c: Moved to...
* gencheck.cc: ...here.
* genchecksum.c: Moved to...
* genchecksum.cc: ...here.
* gencodes.c: Moved to...
* gencodes.cc: ...here.
* genconditions.c: Moved to...
* genconditions.cc: ...here.
* genconfig.c: Moved to...
* genconfig.cc: ...here.
* genconstants.c: Moved to...
* genconstants.cc: ...here.
* genemit.c: Moved to...
* genemit.cc: ...here.
* genenums.c: Moved to...
* genenums.cc: ...here.
* generic-match-head.c: Moved to...
* generic-match-head.cc: ...here.
* genextract.c: Moved to...
* genextract.cc: ...here.
* genflags.c: Moved to...
* genflags.cc: ...here.
* gengenrtl.c: Moved to...
* gengenrtl.cc: ...here.
* gengtype-parse.c: Moved to...
* gengtype-parse.cc: ...here.
* gengtype-state.c: Moved to...
* gengtype-state.cc: ...here.
* gengtype.c: Moved to...
* gengtype.cc: ...here.
* genhooks.c: Moved to...
* genhooks.cc: ...here.
* genmatch.c: Moved to...
* genmatch.cc: ...here.
* genmddeps.c: Moved to...
* genmddeps.cc: ...here.
* genmddump.c: Moved to...
* genmddump.cc: ...here.
* genmodes.c: Moved to...
* genmodes.cc: ...here.
* genopinit.c: Moved to...
* genopinit.cc: ...here.
* genoutput.c: Moved to...
* genoutput.cc: ...here.
* genpeep.c: Moved to...
* genpeep.cc: ...here.
* genpreds.c: Moved to...
* genpreds.cc: ...here.
* genrecog.c: Moved to...
* genrecog.cc: ...here.
* gensupport.c: Moved to...
* gensupport.cc: ...here.
* gentarget-def.c: Moved to...
* gentarget-def.cc: ...here.
* genversion.c: Moved to...
* genversion.cc: ...here.
* ggc-common.c: Moved to...
* ggc-common.cc: ...here.
* ggc-none.c: Moved to...
* ggc-none.cc: ...here.
* ggc-page.c: Moved to...
* ggc-page.cc: ...here.
* ggc-tests.c: Moved to...
* ggc-tests.cc: ...here.
* gimple-builder.c: Moved to...
* gimple-builder.cc: ...here.
* gimple-expr.c: Moved to...
* gimple-expr.cc: ...here.
* gimple-fold.c: Moved to...
* gimple-fold.cc: ...here.
* gimple-iterator.c: Moved to...
* gimple-iterator.cc: ...here.
* gimple-laddress.c: Moved to...
* gimple-laddress.cc: ...here.
* gimple-loop-jam.c: Moved to...
* gimple-loop-jam.cc: ...here.
* gimple-low.c: Moved to...
* gimple-low.cc: ...here.
* gimple-match-head.c: Moved to...
* gimple-match-head.cc: ...here.
* gimple-pretty-print.c: Moved to...
* gimple-pretty-print.cc: ...here.
* gimple-ssa-backprop.c: Moved to...
* gimple-ssa-backprop.cc: ...here.
* gimple-ssa-evrp-analyze.c: Moved to...
* gimple-ssa-evrp-analyze.cc: ...here.
* gimple-ssa-evrp.c: Moved to...
* gimple-ssa-evrp.cc: ...here.
* gimple-ssa-isolate-paths.c: Moved to...
* gimple-ssa-isolate-paths.cc: ...here.
* gimple-ssa-nonnull-compare.c: Moved to...
* gimple-ssa-nonnull-compare.cc: ...here.
* gimple-ssa-split-paths.c: Moved to...
* gimple-ssa-split-paths.cc: ...here.
* gimple-ssa-sprintf.c: Moved to...
* gimple-ssa-sprintf.cc: ...here.
* gimple-ssa-store-merging.c: Moved to...
* gimple-ssa-store-merging.cc: ...here.
* gimple-ssa-strength-reduction.c: Moved to...
* gimple-ssa-strength-reduction.cc: ...here.
* gimple-ssa-warn-alloca.c: Moved to...
* gimple-ssa-warn-alloca.cc: ...here.
* gimple-ssa-warn-restrict.c: Moved to...
* gimple-ssa-warn-restrict.cc: ...here.
* gimple-streamer-in.c: Moved to...
* gimple-streamer-in.cc: ...here.
* gimple-streamer-out.c: Moved to...
* gimple-streamer-out.cc: ...here.
* gimple-walk.c: Moved to...
* gimple-walk.cc: ...here.
* gimple-warn-recursion.c: Moved to...
* gimple-warn-recursion.cc: ...here.
* gimple.c: Moved to...
* gimple.cc: ...here.
* gimplify-me.c: Moved to...
* gimplify-me.cc: ...here.
* gimplify.c: Moved to...
* gimplify.cc: ...here.
* godump.c: Moved to...
* godump.cc: ...here.
* graph.c: Moved to...
* graph.cc: ...here.
* graphds.c: Moved to...
* graphds.cc: ...here.
* graphite-dependences.c: Moved to...
* graphite-dependences.cc: ...here.
* graphite-isl-ast-to-gimple.c: Moved to...
* graphite-isl-ast-to-gimple.cc: ...here.
* graphite-optimize-isl.c: Moved to...
* graphite-optimize-isl.cc: ...here.
* graphite-poly.c: Moved to...
* graphite-poly.cc: ...here.
* graphite-scop-detection.c: Moved to...
* graphite-scop-detection.cc: ...here.
* graphite-sese-to-poly.c: Moved to...
* graphite-sese-to-poly.cc: ...here.
* graphite.c: Moved to...
* graphite.cc: ...here.
* haifa-sched.c: Moved to...
* haifa-sched.cc: ...here.
* hash-map-tests.c: Moved to...
* hash-map-tests.cc: ...here.
* hash-set-tests.c: Moved to...
* hash-set-tests.cc: ...here.
* hash-table.c: Moved to...
* hash-table.cc: ...here.
* hooks.c: Moved to...
* hooks.cc: ...here.
* host-default.c: Moved to...
* host-default.cc: ...here.
* hw-doloop.c: Moved to...
* hw-doloop.cc: ...here.
* hwint.c: Moved to...
* hwint.cc: ...here.
* ifcvt.c: Moved to...
* ifcvt.cc: ...here.
* inchash.c: Moved to...
* inchash.cc: ...here.
* incpath.c: Moved to...
* incpath.cc: ...here.
* init-regs.c: Moved to...
* init-regs.cc: ...here.
* input.c: Moved to...
* input.cc: ...here.
* internal-fn.c: Moved to...
* internal-fn.cc: ...here.
* intl.c: Moved to...
* intl.cc: ...here.
* ipa-comdats.c: Moved to...
* ipa-comdats.cc: ...here.
* ipa-cp.c: Moved to...
* ipa-cp.cc: ...here.
* ipa-devirt.c: Moved to...
* ipa-devirt.cc: ...here.
* ipa-fnsummary.c: Moved to...
* ipa-fnsummary.cc: ...here.
* ipa-icf-gimple.c: Moved to...
* ipa-icf-gimple.cc: ...here.
* ipa-icf.c: Moved to...
* ipa-icf.cc: ...here.
* ipa-inline-analysis.c: Moved to...
* ipa-inline-analysis.cc: ...here.
* ipa-inline-transform.c: Moved to...
* ipa-inline-transform.cc: ...here.
* ipa-inline.c: Moved to...
* ipa-inline.cc: ...here.
* ipa-modref-tree.c: Moved to...
* ipa-modref-tree.cc: ...here.
* ipa-modref.c: Moved to...
* ipa-modref.cc: ...here.
* ipa-param-manipulation.c: Moved to...
* ipa-param-manipulation.cc: ...here.
* ipa-polymorphic-call.c: Moved to...
* ipa-polymorphic-call.cc: ...here.
* ipa-predicate.c: Moved to...
* ipa-predicate.cc: ...here.
* ipa-profile.c: Moved to...
* ipa-profile.cc: ...here.
* ipa-prop.c: Moved to...
* ipa-prop.cc: ...here.
* ipa-pure-const.c: Moved to...
* ipa-pure-const.cc: ...here.
* ipa-ref.c: Moved to...
* ipa-ref.cc: ...here.
* ipa-reference.c: Moved to...
* ipa-reference.cc: ...here.
* ipa-split.c: Moved to...
* ipa-split.cc: ...here.
* ipa-sra.c: Moved to...
* ipa-sra.cc: ...here.
* ipa-utils.c: Moved to...
* ipa-utils.cc: ...here.
* ipa-visibility.c: Moved to...
* ipa-visibility.cc: ...here.
* ipa.c: Moved to...
* ipa.cc: ...here.
* ira-build.c: Moved to...
* ira-build.cc: ...here.
* ira-color.c: Moved to...
* ira-color.cc: ...here.
* ira-conflicts.c: Moved to...
* ira-conflicts.cc: ...here.
* ira-costs.c: Moved to...
* ira-costs.cc: ...here.
* ira-emit.c: Moved to...
* ira-emit.cc: ...here.
* ira-lives.c: Moved to...
* ira-lives.cc: ...here.
* ira.c: Moved to...
* ira.cc: ...here.
* jump.c: Moved to...
* jump.cc: ...here.
* langhooks.c: Moved to...
* langhooks.cc: ...here.
* lcm.c: Moved to...
* lcm.cc: ...here.
* lists.c: Moved to...
* lists.cc: ...here.
* loop-doloop.c: Moved to...
* loop-doloop.cc: ...here.
* loop-init.c: Moved to...
* loop-init.cc: ...here.
* loop-invariant.c: Moved to...
* loop-invariant.cc: ...here.
* loop-iv.c: Moved to...
* loop-iv.cc: ...here.
* loop-unroll.c: Moved to...
* loop-unroll.cc: ...here.
* lower-subreg.c: Moved to...
* lower-subreg.cc: ...here.
* lra-assigns.c: Moved to...
* lra-assigns.cc: ...here.
* lra-coalesce.c: Moved to...
* lra-coalesce.cc: ...here.
* lra-constraints.c: Moved to...
* lra-constraints.cc: ...here.
* lra-eliminations.c: Moved to...
* lra-eliminations.cc: ...here.
* lra-lives.c: Moved to...
* lra-lives.cc: ...here.
* lra-remat.c: Moved to...
* lra-remat.cc: ...here.
* lra-spills.c: Moved to...
* lra-spills.cc: ...here.
* lra.c: Moved to...
* lra.cc: ...here.
* lto-cgraph.c: Moved to...
* lto-cgraph.cc: ...here.
* lto-compress.c: Moved to...
* lto-compress.cc: ...here.
* lto-opts.c: Moved to...
* lto-opts.cc: ...here.
* lto-section-in.c: Moved to...
* lto-section-in.cc: ...here.
* lto-section-out.c: Moved to...
* lto-section-out.cc: ...here.
* lto-streamer-in.c: Moved to...
* lto-streamer-in.cc: ...here.
* lto-streamer-out.c: Moved to...
* lto-streamer-out.cc: ...here.
* lto-streamer.c: Moved to...
* lto-streamer.cc: ...here.
* lto-wrapper.c: Moved to...
* lto-wrapper.cc: ...here.
* main.c: Moved to...
* main.cc: ...here.
* mcf.c: Moved to...
* mcf.cc: ...here.
* mode-switching.c: Moved to...
* mode-switching.cc: ...here.
* modulo-sched.c: Moved to...
* modulo-sched.cc: ...here.
* multiple_target.c: Moved to...
* multiple_target.cc: ...here.
* omp-expand.c: Moved to...
* omp-expand.cc: ...here.
* omp-general.c: Moved to...
* omp-general.cc: ...here.
* omp-low.c: Moved to...
* omp-low.cc: ...here.
* omp-offload.c: Moved to...
* omp-offload.cc: ...here.
* omp-simd-clone.c: Moved to...
* omp-simd-clone.cc: ...here.
* opt-suggestions.c: Moved to...
* opt-suggestions.cc: ...here.
* optabs-libfuncs.c: Moved to...
* optabs-libfuncs.cc: ...here.
* optabs-query.c: Moved to...
* optabs-query.cc: ...here.
* optabs-tree.c: Moved to...
* optabs-tree.cc: ...here.
* optabs.c: Moved to...
* optabs.cc: ...here.
* opts-common.c: Moved to...
* opts-common.cc: ...here.
* opts-global.c: Moved to...
* opts-global.cc: ...here.
* opts.c: Moved to...
* opts.cc: ...here.
* passes.c: Moved to...
* passes.cc: ...here.
* plugin.c: Moved to...
* plugin.cc: ...here.
* postreload-gcse.c: Moved to...
* postreload-gcse.cc: ...here.
* postreload.c: Moved to...
* postreload.cc: ...here.
* predict.c: Moved to...
* predict.cc: ...here.
* prefix.c: Moved to...
* prefix.cc: ...here.
* pretty-print.c: Moved to...
* pretty-print.cc: ...here.
* print-rtl-function.c: Moved to...
* print-rtl-function.cc: ...here.
* print-rtl.c: Moved to...
* print-rtl.cc: ...here.
* print-tree.c: Moved to...
* print-tree.cc: ...here.
* profile-count.c: Moved to...
* profile-count.cc: ...here.
* profile.c: Moved to...
* profile.cc: ...here.
* read-md.c: Moved to...
* read-md.cc: ...here.
* read-rtl-function.c: Moved to...
* read-rtl-function.cc: ...here.
* read-rtl.c: Moved to...
* read-rtl.cc: ...here.
* real.c: Moved to...
* real.cc: ...here.
* realmpfr.c: Moved to...
* realmpfr.cc: ...here.
* recog.c: Moved to...
* recog.cc: ...here.
* ree.c: Moved to...
* ree.cc: ...here.
* reg-stack.c: Moved to...
* reg-stack.cc: ...here.
* regcprop.c: Moved to...
* regcprop.cc: ...here.
* reginfo.c: Moved to...
* reginfo.cc: ...here.
* regrename.c: Moved to...
* regrename.cc: ...here.
* regstat.c: Moved to...
* regstat.cc: ...here.
* reload.c: Moved to...
* reload.cc: ...here.
* reload1.c: Moved to...
* reload1.cc: ...here.
* reorg.c: Moved to...
* reorg.cc: ...here.
* resource.c: Moved to...
* resource.cc: ...here.
* rtl-error.c: Moved to...
* rtl-error.cc: ...here.
* rtl-tests.c: Moved to...
* rtl-tests.cc: ...here.
* rtl.c: Moved to...
* rtl.cc: ...here.
* rtlanal.c: Moved to...
* rtlanal.cc: ...here.
* rtlhash.c: Moved to...
* rtlhash.cc: ...here.
* rtlhooks.c: Moved to...
* rtlhooks.cc: ...here.
* rtx-vector-builder.c: Moved to...
* rtx-vector-builder.cc: ...here.
* run-rtl-passes.c: Moved to...
* run-rtl-passes.cc: ...here.
* sancov.c: Moved to...
* sancov.cc: ...here.
* sanopt.c: Moved to...
* sanopt.cc: ...here.
* sbitmap.c: Moved to...
* sbitmap.cc: ...here.
* sched-deps.c: Moved to...
* sched-deps.cc: ...here.
* sched-ebb.c: Moved to...
* sched-ebb.cc: ...here.
* sched-rgn.c: Moved to...
* sched-rgn.cc: ...here.
* sel-sched-dump.c: Moved to...
* sel-sched-dump.cc: ...here.
* sel-sched-ir.c: Moved to...
* sel-sched-ir.cc: ...here.
* sel-sched.c: Moved to...
* sel-sched.cc: ...here.
* selftest-diagnostic.c: Moved to...
* selftest-diagnostic.cc: ...here.
* selftest-rtl.c: Moved to...
* selftest-rtl.cc: ...here.
* selftest-run-tests.c: Moved to...
* selftest-run-tests.cc: ...here.
* selftest.c: Moved to...
* selftest.cc: ...here.
* sese.c: Moved to...
* sese.cc: ...here.
* shrink-wrap.c: Moved to...
* shrink-wrap.cc: ...here.
* simplify-rtx.c: Moved to...
* simplify-rtx.cc: ...here.
* sparseset.c: Moved to...
* sparseset.cc: ...here.
* spellcheck-tree.c: Moved to...
* spellcheck-tree.cc: ...here.
* spellcheck.c: Moved to...
* spellcheck.cc: ...here.
* sreal.c: Moved to...
* sreal.cc: ...here.
* stack-ptr-mod.c: Moved to...
* stack-ptr-mod.cc: ...here.
* statistics.c: Moved to...
* statistics.cc: ...here.
* stmt.c: Moved to...
* stmt.cc: ...here.
* stor-layout.c: Moved to...
* stor-layout.cc: ...here.
* store-motion.c: Moved to...
* store-motion.cc: ...here.
* streamer-hooks.c: Moved to...
* streamer-hooks.cc: ...here.
* stringpool.c: Moved to...
* stringpool.cc: ...here.
* substring-locations.c: Moved to...
* substring-locations.cc: ...here.
* symtab.c: Moved to...
* symtab.cc: ...here.
* target-globals.c: Moved to...
* target-globals.cc: ...here.
* targhooks.c: Moved to...
* targhooks.cc: ...here.
* timevar.c: Moved to...
* timevar.cc: ...here.
* toplev.c: Moved to...
* toplev.cc: ...here.
* tracer.c: Moved to...
* tracer.cc: ...here.
* trans-mem.c: Moved to...
* trans-mem.cc: ...here.
* tree-affine.c: Moved to...
* tree-affine.cc: ...here.
* tree-call-cdce.c: Moved to...
* tree-call-cdce.cc: ...here.
* tree-cfg.c: Moved to...
* tree-cfg.cc: ...here.
* tree-cfgcleanup.c: Moved to...
* tree-cfgcleanup.cc: ...here.
* tree-chrec.c: Moved to...
* tree-chrec.cc: ...here.
* tree-complex.c: Moved to...
* tree-complex.cc: ...here.
* tree-data-ref.c: Moved to...
* tree-data-ref.cc: ...here.
* tree-dfa.c: Moved to...
* tree-dfa.cc: ...here.
* tree-diagnostic.c: Moved to...
* tree-diagnostic.cc: ...here.
* tree-dump.c: Moved to...
* tree-dump.cc: ...here.
* tree-eh.c: Moved to...
* tree-eh.cc: ...here.
* tree-emutls.c: Moved to...
* tree-emutls.cc: ...here.
* tree-if-conv.c: Moved to...
* tree-if-conv.cc: ...here.
* tree-inline.c: Moved to...
* tree-inline.cc: ...here.
* tree-into-ssa.c: Moved to...
* tree-into-ssa.cc: ...here.
* tree-iterator.c: Moved to...
* tree-iterator.cc: ...here.
* tree-loop-distribution.c: Moved to...
* tree-loop-distribution.cc: ...here.
* tree-nested.c: Moved to...
* tree-nested.cc: ...here.
* tree-nrv.c: Moved to...
* tree-nrv.cc: ...here.
* tree-object-size.c: Moved to...
* tree-object-size.cc: ...here.
* tree-outof-ssa.c: Moved to...
* tree-outof-ssa.cc: ...here.
* tree-parloops.c: Moved to...
* tree-parloops.cc: ...here.
* tree-phinodes.c: Moved to...
* tree-phinodes.cc: ...here.
* tree-predcom.c: Moved to...
* tree-predcom.cc: ...here.
* tree-pretty-print.c: Moved to...
* tree-pretty-print.cc: ...here.
* tree-profile.c: Moved to...
* tree-profile.cc: ...here.
* tree-scalar-evolution.c: Moved to...
* tree-scalar-evolution.cc: ...here.
* tree-sra.c: Moved to...
* tree-sra.cc: ...here.
* tree-ssa-address.c: Moved to...
* tree-ssa-address.cc: ...here.
* tree-ssa-alias.c: Moved to...
* tree-ssa-alias.cc: ...here.
* tree-ssa-ccp.c: Moved to...
* tree-ssa-ccp.cc: ...here.
* tree-ssa-coalesce.c: Moved to...
* tree-ssa-coalesce.cc: ...here.
* tree-ssa-copy.c: Moved to...
* tree-ssa-copy.cc: ...here.
* tree-ssa-dce.c: Moved to...
* tree-ssa-dce.cc: ...here.
* tree-ssa-dom.c: Moved to...
* tree-ssa-dom.cc: ...here.
* tree-ssa-dse.c: Moved to...
* tree-ssa-dse.cc: ...here.
* tree-ssa-forwprop.c: Moved to...
* tree-ssa-forwprop.cc: ...here.
* tree-ssa-ifcombine.c: Moved to...
* tree-ssa-ifcombine.cc: ...here.
* tree-ssa-live.c: Moved to...
* tree-ssa-live.cc: ...here.
* tree-ssa-loop-ch.c: Moved to...
* tree-ssa-loop-ch.cc: ...here.
* tree-ssa-loop-im.c: Moved to...
* tree-ssa-loop-im.cc: ...here.
* tree-ssa-loop-ivcanon.c: Moved to...
* tree-ssa-loop-ivcanon.cc: ...here.
* tree-ssa-loop-ivopts.c: Moved to...
* tree-ssa-loop-ivopts.cc: ...here.
* tree-ssa-loop-manip.c: Moved to...
* tree-ssa-loop-manip.cc: ...here.
* tree-ssa-loop-niter.c: Moved to...
* tree-ssa-loop-niter.cc: ...here.
* tree-ssa-loop-prefetch.c: Moved to...
* tree-ssa-loop-prefetch.cc: ...here.
* tree-ssa-loop-split.c: Moved to...
* tree-ssa-loop-split.cc: ...here.
* tree-ssa-loop-unswitch.c: Moved to...
* tree-ssa-loop-unswitch.cc: ...here.
* tree-ssa-loop.c: Moved to...
* tree-ssa-loop.cc: ...here.
* tree-ssa-math-opts.c: Moved to...
* tree-ssa-math-opts.cc: ...here.
* tree-ssa-operands.c: Moved to...
* tree-ssa-operands.cc: ...here.
* tree-ssa-phiopt.c: Moved to...
* tree-ssa-phiopt.cc: ...here.
* tree-ssa-phiprop.c: Moved to...
* tree-ssa-phiprop.cc: ...here.
* tree-ssa-pre.c: Moved to...
* tree-ssa-pre.cc: ...here.
* tree-ssa-propagate.c: Moved to...
* tree-ssa-propagate.cc: ...here.
* tree-ssa-reassoc.c: Moved to...
* tree-ssa-reassoc.cc: ...here.
* tree-ssa-sccvn.c: Moved to...
* tree-ssa-sccvn.cc: ...here.
* tree-ssa-scopedtables.c: Moved to...
* tree-ssa-scopedtables.cc: ...here.
* tree-ssa-sink.c: Moved to...
* tree-ssa-sink.cc: ...here.
* tree-ssa-strlen.c: Moved to...
* tree-ssa-strlen.cc: ...here.
* tree-ssa-structalias.c: Moved to...
* tree-ssa-structalias.cc: ...here.
* tree-ssa-tail-merge.c: Moved to...
* tree-ssa-tail-merge.cc: ...here.
* tree-ssa-ter.c: Moved to...
* tree-ssa-ter.cc: ...here.
* tree-ssa-threadbackward.c: Moved to...
* tree-ssa-threadbackward.cc: ...here.
* tree-ssa-threadedge.c: Moved to...
* tree-ssa-threadedge.cc: ...here.
* tree-ssa-threadupdate.c: Moved to...
* tree-ssa-threadupdate.cc: ...here.
* tree-ssa-uncprop.c: Moved to...
* tree-ssa-uncprop.cc: ...here.
* tree-ssa-uninit.c: Moved to...
* tree-ssa-uninit.cc: ...here.
* tree-ssa.c: Moved to...
* tree-ssa.cc: ...here.
* tree-ssanames.c: Moved to...
* tree-ssanames.cc: ...here.
* tree-stdarg.c: Moved to...
* tree-stdarg.cc: ...here.
* tree-streamer-in.c: Moved to...
* tree-streamer-in.cc: ...here.
* tree-streamer-out.c: Moved to...
* tree-streamer-out.cc: ...here.
* tree-streamer.c: Moved to...
* tree-streamer.cc: ...here.
* tree-switch-conversion.c: Moved to...
* tree-switch-conversion.cc: ...here.
* tree-tailcall.c: Moved to...
* tree-tailcall.cc: ...here.
* tree-vect-data-refs.c: Moved to...
* tree-vect-data-refs.cc: ...here.
* tree-vect-generic.c: Moved to...
* tree-vect-generic.cc: ...here.
* tree-vect-loop-manip.c: Moved to...
* tree-vect-loop-manip.cc: ...here.
* tree-vect-loop.c: Moved to...
* tree-vect-loop.cc: ...here.
* tree-vect-patterns.c: Moved to...
* tree-vect-patterns.cc: ...here.
* tree-vect-slp-patterns.c: Moved to...
* tree-vect-slp-patterns.cc: ...here.
* tree-vect-slp.c: Moved to...
* tree-vect-slp.cc: ...here.
* tree-vect-stmts.c: Moved to...
* tree-vect-stmts.cc: ...here.
* tree-vector-builder.c: Moved to...
* tree-vector-builder.cc: ...here.
* tree-vectorizer.c: Moved to...
* tree-vectorizer.cc: ...here.
* tree-vrp.c: Moved to...
* tree-vrp.cc: ...here.
* tree.c: Moved to...
* tree.cc: ...here.
* tsan.c: Moved to...
* tsan.cc: ...here.
* typed-splay-tree.c: Moved to...
* typed-splay-tree.cc: ...here.
* ubsan.c: Moved to...
* ubsan.cc: ...here.
* valtrack.c: Moved to...
* valtrack.cc: ...here.
* value-prof.c: Moved to...
* value-prof.cc: ...here.
* var-tracking.c: Moved to...
* var-tracking.cc: ...here.
* varasm.c: Moved to...
* varasm.cc: ...here.
* varpool.c: Moved to...
* varpool.cc: ...here.
* vec-perm-indices.c: Moved to...
* vec-perm-indices.cc: ...here.
* vec.c: Moved to...
* vec.cc: ...here.
* vmsdbgout.c: Moved to...
* vmsdbgout.cc: ...here.
* vr-values.c: Moved to...
* vr-values.cc: ...here.
* vtable-verify.c: Moved to...
* vtable-verify.cc: ...here.
* web.c: Moved to...
* web.cc: ...here.
* xcoffout.c: Moved to...
* xcoffout.cc: ...here.
gcc/c-family/ChangeLog:
* c-ada-spec.c: Moved to...
* c-ada-spec.cc: ...here.
* c-attribs.c: Moved to...
* c-attribs.cc: ...here.
* c-common.c: Moved to...
* c-common.cc: ...here.
* c-cppbuiltin.c: Moved to...
* c-cppbuiltin.cc: ...here.
* c-dump.c: Moved to...
* c-dump.cc: ...here.
* c-format.c: Moved to...
* c-format.cc: ...here.
* c-gimplify.c: Moved to...
* c-gimplify.cc: ...here.
* c-indentation.c: Moved to...
* c-indentation.cc: ...here.
* c-lex.c: Moved to...
* c-lex.cc: ...here.
* c-omp.c: Moved to...
* c-omp.cc: ...here.
* c-opts.c: Moved to...
* c-opts.cc: ...here.
* c-pch.c: Moved to...
* c-pch.cc: ...here.
* c-ppoutput.c: Moved to...
* c-ppoutput.cc: ...here.
* c-pragma.c: Moved to...
* c-pragma.cc: ...here.
* c-pretty-print.c: Moved to...
* c-pretty-print.cc: ...here.
* c-semantics.c: Moved to...
* c-semantics.cc: ...here.
* c-ubsan.c: Moved to...
* c-ubsan.cc: ...here.
* c-warn.c: Moved to...
* c-warn.cc: ...here.
* cppspec.c: Moved to...
* cppspec.cc: ...here.
* stub-objc.c: Moved to...
* stub-objc.cc: ...here.
gcc/c/ChangeLog:
* c-aux-info.c: Moved to...
* c-aux-info.cc: ...here.
* c-convert.c: Moved to...
* c-convert.cc: ...here.
* c-decl.c: Moved to...
* c-decl.cc: ...here.
* c-errors.c: Moved to...
* c-errors.cc: ...here.
* c-fold.c: Moved to...
* c-fold.cc: ...here.
* c-lang.c: Moved to...
* c-lang.cc: ...here.
* c-objc-common.c: Moved to...
* c-objc-common.cc: ...here.
* c-parser.c: Moved to...
* c-parser.cc: ...here.
* c-typeck.c: Moved to...
* c-typeck.cc: ...here.
* gccspec.c: Moved to...
* gccspec.cc: ...here.
* gimple-parser.c: Moved to...
* gimple-parser.cc: ...here.
gcc/cp/ChangeLog:
* call.c: Moved to...
* call.cc: ...here.
* class.c: Moved to...
* class.cc: ...here.
* constexpr.c: Moved to...
* constexpr.cc: ...here.
* cp-gimplify.c: Moved to...
* cp-gimplify.cc: ...here.
* cp-lang.c: Moved to...
* cp-lang.cc: ...here.
* cp-objcp-common.c: Moved to...
* cp-objcp-common.cc: ...here.
* cp-ubsan.c: Moved to...
* cp-ubsan.cc: ...here.
* cvt.c: Moved to...
* cvt.cc: ...here.
* cxx-pretty-print.c: Moved to...
* cxx-pretty-print.cc: ...here.
* decl.c: Moved to...
* decl.cc: ...here.
* decl2.c: Moved to...
* decl2.cc: ...here.
* dump.c: Moved to...
* dump.cc: ...here.
* error.c: Moved to...
* error.cc: ...here.
* except.c: Moved to...
* except.cc: ...here.
* expr.c: Moved to...
* expr.cc: ...here.
* friend.c: Moved to...
* friend.cc: ...here.
* g++spec.c: Moved to...
* g++spec.cc: ...here.
* init.c: Moved to...
* init.cc: ...here.
* lambda.c: Moved to...
* lambda.cc: ...here.
* lex.c: Moved to...
* lex.cc: ...here.
* mangle.c: Moved to...
* mangle.cc: ...here.
* method.c: Moved to...
* method.cc: ...here.
* name-lookup.c: Moved to...
* name-lookup.cc: ...here.
* optimize.c: Moved to...
* optimize.cc: ...here.
* parser.c: Moved to...
* parser.cc: ...here.
* pt.c: Moved to...
* pt.cc: ...here.
* ptree.c: Moved to...
* ptree.cc: ...here.
* rtti.c: Moved to...
* rtti.cc: ...here.
* search.c: Moved to...
* search.cc: ...here.
* semantics.c: Moved to...
* semantics.cc: ...here.
* tree.c: Moved to...
* tree.cc: ...here.
* typeck.c: Moved to...
* typeck.cc: ...here.
* typeck2.c: Moved to...
* typeck2.cc: ...here.
* vtable-class-hierarchy.c: Moved to...
* vtable-class-hierarchy.cc: ...here.
gcc/fortran/ChangeLog:
* arith.c: Moved to...
* arith.cc: ...here.
* array.c: Moved to...
* array.cc: ...here.
* bbt.c: Moved to...
* bbt.cc: ...here.
* check.c: Moved to...
* check.cc: ...here.
* class.c: Moved to...
* class.cc: ...here.
* constructor.c: Moved to...
* constructor.cc: ...here.
* convert.c: Moved to...
* convert.cc: ...here.
* cpp.c: Moved to...
* cpp.cc: ...here.
* data.c: Moved to...
* data.cc: ...here.
* decl.c: Moved to...
* decl.cc: ...here.
* dependency.c: Moved to...
* dependency.cc: ...here.
* dump-parse-tree.c: Moved to...
* dump-parse-tree.cc: ...here.
* error.c: Moved to...
* error.cc: ...here.
* expr.c: Moved to...
* expr.cc: ...here.
* f95-lang.c: Moved to...
* f95-lang.cc: ...here.
* frontend-passes.c: Moved to...
* frontend-passes.cc: ...here.
* gfortranspec.c: Moved to...
* gfortranspec.cc: ...here.
* interface.c: Moved to...
* interface.cc: ...here.
* intrinsic.c: Moved to...
* intrinsic.cc: ...here.
* io.c: Moved to...
* io.cc: ...here.
* iresolve.c: Moved to...
* iresolve.cc: ...here.
* match.c: Moved to...
* match.cc: ...here.
* matchexp.c: Moved to...
* matchexp.cc: ...here.
* misc.c: Moved to...
* misc.cc: ...here.
* module.c: Moved to...
* module.cc: ...here.
* openmp.c: Moved to...
* openmp.cc: ...here.
* options.c: Moved to...
* options.cc: ...here.
* parse.c: Moved to...
* parse.cc: ...here.
* primary.c: Moved to...
* primary.cc: ...here.
* resolve.c: Moved to...
* resolve.cc: ...here.
* scanner.c: Moved to...
* scanner.cc: ...here.
* simplify.c: Moved to...
* simplify.cc: ...here.
* st.c: Moved to...
* st.cc: ...here.
* symbol.c: Moved to...
* symbol.cc: ...here.
* target-memory.c: Moved to...
* target-memory.cc: ...here.
* trans-array.c: Moved to...
* trans-array.cc: ...here.
* trans-common.c: Moved to...
* trans-common.cc: ...here.
* trans-const.c: Moved to...
* trans-const.cc: ...here.
* trans-decl.c: Moved to...
* trans-decl.cc: ...here.
* trans-expr.c: Moved to...
* trans-expr.cc: ...here.
* trans-intrinsic.c: Moved to...
* trans-intrinsic.cc: ...here.
* trans-io.c: Moved to...
* trans-io.cc: ...here.
* trans-openmp.c: Moved to...
* trans-openmp.cc: ...here.
* trans-stmt.c: Moved to...
* trans-stmt.cc: ...here.
* trans-types.c: Moved to...
* trans-types.cc: ...here.
* trans.c: Moved to...
* trans.cc: ...here.
gcc/go/ChangeLog:
* go-backend.c: Moved to...
* go-backend.cc: ...here.
* go-lang.c: Moved to...
* go-lang.cc: ...here.
* gospec.c: Moved to...
* gospec.cc: ...here.
gcc/jit/ChangeLog:
* dummy-frontend.c: Moved to...
* dummy-frontend.cc: ...here.
* jit-builtins.c: Moved to...
* jit-builtins.cc: ...here.
* jit-logging.c: Moved to...
* jit-logging.cc: ...here.
* jit-playback.c: Moved to...
* jit-playback.cc: ...here.
* jit-recording.c: Moved to...
* jit-recording.cc: ...here.
* jit-result.c: Moved to...
* jit-result.cc: ...here.
* jit-spec.c: Moved to...
* jit-spec.cc: ...here.
* jit-tempdir.c: Moved to...
* jit-tempdir.cc: ...here.
* jit-w32.c: Moved to...
* jit-w32.cc: ...here.
* libgccjit.c: Moved to...
* libgccjit.cc: ...here.
gcc/lto/ChangeLog:
* common.c: Moved to...
* common.cc: ...here.
* lto-common.c: Moved to...
* lto-common.cc: ...here.
* lto-dump.c: Moved to...
* lto-dump.cc: ...here.
* lto-lang.c: Moved to...
* lto-lang.cc: ...here.
* lto-object.c: Moved to...
* lto-object.cc: ...here.
* lto-partition.c: Moved to...
* lto-partition.cc: ...here.
* lto-symtab.c: Moved to...
* lto-symtab.cc: ...here.
* lto.c: Moved to...
* lto.cc: ...here.
gcc/objc/ChangeLog:
* objc-act.c: Moved to...
* objc-act.cc: ...here.
* objc-encoding.c: Moved to...
* objc-encoding.cc: ...here.
* objc-gnu-runtime-abi-01.c: Moved to...
* objc-gnu-runtime-abi-01.cc: ...here.
* objc-lang.c: Moved to...
* objc-lang.cc: ...here.
* objc-map.c: Moved to...
* objc-map.cc: ...here.
* objc-next-runtime-abi-01.c: Moved to...
* objc-next-runtime-abi-01.cc: ...here.
* objc-next-runtime-abi-02.c: Moved to...
* objc-next-runtime-abi-02.cc: ...here.
* objc-runtime-shared-support.c: Moved to...
* objc-runtime-shared-support.cc: ...here.
gcc/objcp/ChangeLog:
* objcp-decl.c: Moved to...
* objcp-decl.cc: ...here.
* objcp-lang.c: Moved to...
* objcp-lang.cc: ...here.
libcpp/ChangeLog:
* charset.c: Moved to...
* charset.cc: ...here.
* directives.c: Moved to...
* directives.cc: ...here.
* errors.c: Moved to...
* errors.cc: ...here.
* expr.c: Moved to...
* expr.cc: ...here.
* files.c: Moved to...
* files.cc: ...here.
* identifiers.c: Moved to...
* identifiers.cc: ...here.
* init.c: Moved to...
* init.cc: ...here.
* lex.c: Moved to...
* lex.cc: ...here.
* line-map.c: Moved to...
* line-map.cc: ...here.
* macro.c: Moved to...
* macro.cc: ...here.
* makeucnid.c: Moved to...
* makeucnid.cc: ...here.
* mkdeps.c: Moved to...
* mkdeps.cc: ...here.
* pch.c: Moved to...
* pch.cc: ...here.
* symtab.c: Moved to...
* symtab.cc: ...here.
* traditional.c: Moved to...
* traditional.cc: ...here.
Diffstat (limited to 'gcc/toplev.c')
-rw-r--r-- | gcc/toplev.c | 2383 |
1 files changed, 0 insertions, 2383 deletions
diff --git a/gcc/toplev.c b/gcc/toplev.c deleted file mode 100644 index 534da14..0000000 --- a/gcc/toplev.c +++ /dev/null @@ -1,2383 +0,0 @@ -/* Top level of GCC compilers (cc1, cc1plus, etc.) - Copyright (C) 1987-2022 Free Software Foundation, Inc. - -This file is part of GCC. - -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 3, or (at your option) any later -version. - -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. - -You should have received a copy of the GNU General Public License -along with GCC; see the file COPYING3. If not see -<http://www.gnu.org/licenses/>. */ - -/* This is the top level of cc1/c++. - It parses command args, opens files, invokes the various passes - in the proper order, and counts the time used by each. - Error messages and low-level interface to malloc also handled here. */ - -#include "config.h" -#include "system.h" -#include "coretypes.h" -#include "backend.h" -#include "target.h" -#include "rtl.h" -#include "tree.h" -#include "gimple.h" -#include "alloc-pool.h" -#include "timevar.h" -#include "memmodel.h" -#include "tm_p.h" -#include "optabs-libfuncs.h" -#include "insn-config.h" -#include "ira.h" -#include "recog.h" -#include "cgraph.h" -#include "coverage.h" -#include "diagnostic.h" -#include "varasm.h" -#include "tree-inline.h" -#include "realmpfr.h" /* For GMP/MPFR/MPC versions, in print_version. */ -#include "version.h" -#include "flags.h" -#include "insn-attr.h" -#include "output.h" -#include "toplev.h" -#include "expr.h" -#include "intl.h" -#include "tree-diagnostic.h" -#include "reload.h" -#include "lra.h" -#include "dwarf2asm.h" -#include "debug.h" -#include "common/common-target.h" -#include "langhooks.h" -#include "cfgloop.h" /* for init_set_costs */ -#include "hosthooks.h" -#include "opts.h" -#include "opts-diagnostic.h" -#include "stringpool.h" -#include "attribs.h" -#include "asan.h" -#include "tsan.h" -#include "plugin.h" -#include "context.h" -#include "pass_manager.h" -#include "auto-profile.h" -#include "dwarf2out.h" -#include "ipa-reference.h" -#include "symbol-summary.h" -#include "tree-vrp.h" -#include "ipa-prop.h" -#include "gcse.h" -#include "omp-offload.h" -#include "edit-context.h" -#include "tree-pass.h" -#include "dumpfile.h" -#include "ipa-fnsummary.h" -#include "dump-context.h" -#include "print-tree.h" -#include "optinfo-emit-json.h" -#include "ipa-modref-tree.h" -#include "ipa-modref.h" -#include "ipa-param-manipulation.h" -#include "dbgcnt.h" - -#if defined(DBX_DEBUGGING_INFO) || defined(XCOFF_DEBUGGING_INFO) -#include "dbxout.h" -#endif - -#ifdef XCOFF_DEBUGGING_INFO -#include "xcoffout.h" /* Needed for external data declarations. */ -#endif - -#include "selftest.h" - -#ifdef HAVE_isl -#include <isl/version.h> -#endif - -static void general_init (const char *, bool); -static void backend_init (void); -static int lang_dependent_init (const char *); -static void init_asm_output (const char *); -static void finalize (bool); - -static void crash_signal (int) ATTRIBUTE_NORETURN; -static void compile_file (void); - -/* Decoded options, and number of such options. */ -struct cl_decoded_option *save_decoded_options; -unsigned int save_decoded_options_count; - -/* Vector of saved Optimization decoded command line options. */ -vec<cl_decoded_option> *save_opt_decoded_options; - -/* Debug hooks - dependent upon command line options. */ - -const struct gcc_debug_hooks *debug_hooks; - -/* The FUNCTION_DECL for the function currently being compiled, - or 0 if between functions. */ -tree current_function_decl; - -/* Set to the FUNC_BEGIN label of the current function, or NULL - if none. */ -const char * current_function_func_begin_label; - -/* A random sequence of characters, unless overridden by user. */ -static const char *flag_random_seed; - -/* A local time stamp derived from the time of compilation. It will be - zero if the system cannot provide a time. It will be -1u, if the - user has specified a particular random seed. */ -unsigned local_tick; - -/* Random number for this compilation */ -HOST_WIDE_INT random_seed; - -/* -f flags. */ - -/* When non-NULL, indicates that whenever space is allocated on the - stack, the resulting stack pointer must not pass this - address---that is, for stacks that grow downward, the stack pointer - must always be greater than or equal to this address; for stacks - that grow upward, the stack pointer must be less than this address. - At present, the rtx may be either a REG or a SYMBOL_REF, although - the support provided depends on the backend. */ -rtx stack_limit_rtx; - -class target_flag_state default_target_flag_state; -#if SWITCHABLE_TARGET -class target_flag_state *this_target_flag_state = &default_target_flag_state; -#else -#define this_target_flag_state (&default_target_flag_state) -#endif - -/* The user symbol prefix after having resolved same. */ -const char *user_label_prefix; - -/* Output files for assembler code (real compiler output) - and debugging dumps. */ - -FILE *asm_out_file; -FILE *aux_info_file; -FILE *callgraph_info_file = NULL; -static bitmap callgraph_info_external_printed; -FILE *stack_usage_file = NULL; - -/* The current working directory of a translation. It's generally the - directory from which compilation was initiated, but a preprocessed - file may specify the original directory in which it was - created. */ - -static const char *src_pwd; - -/* Initialize src_pwd with the given string, and return true. If it - was already initialized, return false. As a special case, it may - be called with a NULL argument to test whether src_pwd has NOT been - initialized yet. */ - -bool -set_src_pwd (const char *pwd) -{ - if (src_pwd) - { - if (strcmp (src_pwd, pwd) == 0) - return true; - else - return false; - } - - src_pwd = xstrdup (pwd); - return true; -} - -/* Return the directory from which the translation unit was initiated, - in case set_src_pwd() was not called before to assign it a - different value. */ - -const char * -get_src_pwd (void) -{ - if (! src_pwd) - { - src_pwd = getpwd (); - if (!src_pwd) - src_pwd = "."; - } - - return src_pwd; -} - -/* Called when the start of a function definition is parsed, - this function prints on stderr the name of the function. */ -void -announce_function (tree decl) -{ - if (!quiet_flag) - { - if (rtl_dump_and_exit) - fprintf (stderr, "%s ", - identifier_to_locale (IDENTIFIER_POINTER (DECL_NAME (decl)))); - else - fprintf (stderr, " %s", - identifier_to_locale (lang_hooks.decl_printable_name (decl, 2))); - fflush (stderr); - pp_needs_newline (global_dc->printer) = true; - diagnostic_set_last_function (global_dc, (diagnostic_info *) NULL); - } -} - -/* Initialize local_tick with the time of day, or -1 if - flag_random_seed is set. */ - -static void -init_local_tick (void) -{ - if (!flag_random_seed) - { -#ifdef HAVE_GETTIMEOFDAY - { - struct timeval tv; - - gettimeofday (&tv, NULL); - local_tick = (unsigned) tv.tv_sec * 1000 + tv.tv_usec / 1000; - } -#else - { - time_t now = time (NULL); - - if (now != (time_t)-1) - local_tick = (unsigned) now; - } -#endif - } - else - local_tick = -1; -} - -/* Obtain the random_seed. Unless NOINIT, initialize it if - it's not provided in the command line. */ - -HOST_WIDE_INT -get_random_seed (bool noinit) -{ - if (!random_seed && !noinit) - { - int fd = open ("/dev/urandom", O_RDONLY); - if (fd >= 0) - { - if (read (fd, &random_seed, sizeof (random_seed)) - != sizeof (random_seed)) - random_seed = 0; - close (fd); - } - if (!random_seed) - random_seed = local_tick ^ getpid (); - } - return random_seed; -} - -/* Set flag_random_seed to VAL, and if non-null, reinitialize random_seed. */ - -void -set_random_seed (const char *val) -{ - flag_random_seed = val; - if (flag_random_seed) - { - char *endp; - - /* When the driver passed in a hex number don't crc it again */ - random_seed = strtoul (flag_random_seed, &endp, 0); - if (!(endp > flag_random_seed && *endp == 0)) - random_seed = crc32_string (0, flag_random_seed); - } -} - -/* Handler for fatal signals, such as SIGSEGV. These are transformed - into ICE messages, which is much more user friendly. In case the - error printer crashes, reset the signal to prevent infinite recursion. */ - -static void -crash_signal (int signo) -{ - signal (signo, SIG_DFL); - - /* If we crashed while processing an ASM statement, then be a little more - graceful. It's most likely the user's fault. */ - if (this_is_asm_operands) - { - output_operand_lossage ("unrecoverable error"); - exit (FATAL_EXIT_CODE); - } - - internal_error ("%s", strsignal (signo)); -} - -/* A subroutine of wrapup_global_declarations. We've come to the end of - the compilation unit. All deferred variables should be undeferred, - and all incomplete decls should be finalized. */ - -void -wrapup_global_declaration_1 (tree decl) -{ - /* We're not deferring this any longer. Assignment is conditional to - avoid needlessly dirtying PCH pages. */ - if (CODE_CONTAINS_STRUCT (TREE_CODE (decl), TS_DECL_WITH_VIS) - && DECL_DEFER_OUTPUT (decl) != 0) - DECL_DEFER_OUTPUT (decl) = 0; - - if (VAR_P (decl) && DECL_SIZE (decl) == 0) - lang_hooks.finish_incomplete_decl (decl); -} - -/* A subroutine of wrapup_global_declarations. Decide whether or not DECL - needs to be output. Return true if it is output. */ - -bool -wrapup_global_declaration_2 (tree decl) -{ - if (TREE_ASM_WRITTEN (decl) || DECL_EXTERNAL (decl) - || (VAR_P (decl) && DECL_HAS_VALUE_EXPR_P (decl))) - return false; - - /* Don't write out static consts, unless we still need them. - - We also keep static consts if not optimizing (for debugging), - unless the user specified -fno-keep-static-consts. - ??? They might be better written into the debug information. - This is possible when using DWARF. - - A language processor that wants static constants to be always - written out (even if it is not used) is responsible for - calling rest_of_decl_compilation itself. E.g. the C front-end - calls rest_of_decl_compilation from finish_decl. - One motivation for this is that is conventional in some - environments to write things like: - static const char rcsid[] = "... version string ..."; - intending to force the string to be in the executable. - - A language processor that would prefer to have unneeded - static constants "optimized away" would just defer writing - them out until here. E.g. C++ does this, because static - constants are often defined in header files. - - ??? A tempting alternative (for both C and C++) would be - to force a constant to be written if and only if it is - defined in a main file, as opposed to an include file. */ - - if (VAR_P (decl) && TREE_STATIC (decl)) - { - varpool_node *node; - bool needed = true; - node = varpool_node::get (decl); - - if (!node && flag_ltrans) - needed = false; - else if (node && node->definition) - needed = false; - else if (node && node->alias) - needed = false; - else if (!symtab->global_info_ready - && (TREE_USED (decl) - || TREE_USED (DECL_ASSEMBLER_NAME (decl)))) - /* needed */; - else if (node && node->analyzed) - /* needed */; - else if (DECL_COMDAT (decl)) - needed = false; - else if (TREE_READONLY (decl) && !TREE_PUBLIC (decl) - && (optimize || !flag_keep_static_consts - || DECL_ARTIFICIAL (decl))) - needed = false; - - if (needed) - { - rest_of_decl_compilation (decl, 1, 1); - return true; - } - } - - return false; -} - -/* Do any final processing required for the declarations in VEC, of - which there are LEN. We write out inline functions and variables - that have been deferred until this point, but which are required. - Returns nonzero if anything was put out. */ - -bool -wrapup_global_declarations (tree *vec, int len) -{ - bool reconsider, output_something = false; - int i; - - for (i = 0; i < len; i++) - wrapup_global_declaration_1 (vec[i]); - - /* Now emit any global variables or functions that we have been - putting off. We need to loop in case one of the things emitted - here references another one which comes earlier in the list. */ - do - { - reconsider = false; - for (i = 0; i < len; i++) - reconsider |= wrapup_global_declaration_2 (vec[i]); - if (reconsider) - output_something = true; - } - while (reconsider); - - return output_something; -} - -/* Compile an entire translation unit. Write a file of assembly - output and various debugging dumps. */ - -static void -compile_file (void) -{ - timevar_start (TV_PHASE_PARSING); - timevar_push (TV_PARSE_GLOBAL); - - /* Parse entire file and generate initial debug information. */ - lang_hooks.parse_file (); - - timevar_pop (TV_PARSE_GLOBAL); - timevar_stop (TV_PHASE_PARSING); - - if (flag_dump_locations) - dump_location_info (stderr); - - free_attr_data (); - - /* Compilation is now finished except for writing - what's left of the symbol table output. */ - - if (flag_syntax_only || flag_wpa) - return; - - /* Reset maximum_field_alignment, it can be adjusted by #pragma pack - and this shouldn't influence any types built by the middle-end - from now on (like gcov_info_type). */ - maximum_field_alignment = initial_max_fld_align * BITS_PER_UNIT; - - ggc_protect_identifiers = false; - - /* Run the actual compilation process. */ - if (!in_lto_p) - { - timevar_start (TV_PHASE_OPT_GEN); - symtab->finalize_compilation_unit (); - timevar_stop (TV_PHASE_OPT_GEN); - } - - /* Perform any post compilation-proper parser cleanups and - processing. This is currently only needed for the C++ parser, - which can be hopefully cleaned up so this hook is no longer - necessary. */ - if (lang_hooks.decls.post_compilation_parsing_cleanups) - lang_hooks.decls.post_compilation_parsing_cleanups (); - - dump_context::get ().finish_any_json_writer (); - - if (seen_error ()) - return; - - timevar_start (TV_PHASE_LATE_ASM); - - /* Compilation unit is finalized. When producing non-fat LTO object, we are - basically finished. */ - if ((in_lto_p && flag_incremental_link != INCREMENTAL_LINK_LTO) - || !flag_lto || flag_fat_lto_objects) - { - /* File-scope initialization for AddressSanitizer. */ - if (flag_sanitize & SANITIZE_ADDRESS) - asan_finish_file (); - - if (flag_sanitize & SANITIZE_THREAD) - tsan_finish_file (); - - if (gate_hwasan ()) - hwasan_finish_file (); - - omp_finish_file (); - - output_shared_constant_pool (); - output_object_blocks (); - finish_tm_clone_pairs (); - - /* Write out any pending weak symbol declarations. */ - weak_finish (); - - /* This must be at the end before unwind and debug info. - Some target ports emit PIC setup thunks here. */ - insn_locations_init (); - targetm.asm_out.code_end (); - - /* Do dbx symbols. */ - timevar_push (TV_SYMOUT); - -#if defined DWARF2_DEBUGGING_INFO || defined DWARF2_UNWIND_INFO - dwarf2out_frame_finish (); -#endif - - debuginfo_start (); - (*debug_hooks->finish) (main_input_filename); - debuginfo_stop (); - timevar_pop (TV_SYMOUT); - - /* Output some stuff at end of file if nec. */ - - dw2_output_indirect_constants (); - - /* Flush any pending external directives. */ - process_pending_assemble_externals (); - } - - /* Let linker plugin know that this is a slim object and must be LTOed - even when user did not ask for it. */ - if (flag_generate_lto && !flag_fat_lto_objects) - { -#if defined ASM_OUTPUT_ALIGNED_DECL_COMMON - ASM_OUTPUT_ALIGNED_DECL_COMMON (asm_out_file, NULL_TREE, "__gnu_lto_slim", - HOST_WIDE_INT_1U, 8); -#elif defined ASM_OUTPUT_ALIGNED_COMMON - ASM_OUTPUT_ALIGNED_COMMON (asm_out_file, "__gnu_lto_slim", - HOST_WIDE_INT_1U, 8); -#else - ASM_OUTPUT_COMMON (asm_out_file, "__gnu_lto_slim", - HOST_WIDE_INT_1U, - HOST_WIDE_INT_1U); -#endif - } - - /* Attach a special .ident directive to the end of the file to identify - the version of GCC which compiled this code. The format of the .ident - string is patterned after the ones produced by native SVR4 compilers. */ - if (!flag_no_ident) - { - const char *pkg_version = "(GNU) "; - char *ident_str; - - if (strcmp ("(GCC) ", pkgversion_string)) - pkg_version = pkgversion_string; - - ident_str = ACONCAT (("GCC: ", pkg_version, version_string, NULL)); - targetm.asm_out.output_ident (ident_str); - } - - /* Auto profile finalization. */ - if (flag_auto_profile) - end_auto_profile (); - - /* Invoke registered plugin callbacks. */ - invoke_plugin_callbacks (PLUGIN_FINISH_UNIT, NULL); - - /* This must be at the end. Some target ports emit end of file directives - into the assembly file here, and hence we cannot output anything to the - assembly file after this point. */ - targetm.asm_out.file_end (); - - timevar_stop (TV_PHASE_LATE_ASM); -} - -/* Print version information to FILE. - Each line begins with INDENT (for the case where FILE is the - assembler output file). - - If SHOW_GLOBAL_STATE is true (for cc1 etc), we are within the compiler - proper and can print pertinent state (e.g. params and plugins). - - If SHOW_GLOBAL_STATE is false (for use by libgccjit), we are outside the - compiler, and we don't hold the mutex on the compiler's global state: - we can't print params and plugins, since they might not be initialized, - or might be being manipulated by a compile running in another - thread. */ - -void -print_version (FILE *file, const char *indent, bool show_global_state) -{ - static const char fmt1[] = -#ifdef __GNUC__ - N_("%s%s%s %sversion %s (%s)\n%s\tcompiled by GNU C version %s, ") -#else - N_("%s%s%s %sversion %s (%s) compiled by CC, ") -#endif - ; - static const char fmt2[] = - N_("GMP version %s, MPFR version %s, MPC version %s, isl version %s\n"); - static const char fmt3[] = - N_("%s%swarning: %s header version %s differs from library version %s.\n"); - static const char fmt4[] = - N_("%s%sGGC heuristics: --param ggc-min-expand=%d --param ggc-min-heapsize=%d\n"); -#ifndef __VERSION__ -#define __VERSION__ "[?]" -#endif - fprintf (file, - file == stderr ? _(fmt1) : fmt1, - indent, *indent != 0 ? " " : "", - lang_hooks.name, pkgversion_string, version_string, TARGET_NAME, - indent, __VERSION__); - - /* We need to stringify the GMP macro values. Ugh, gmp_version has - two string formats, "i.j.k" and "i.j" when k is zero. As of - gmp-4.3.0, GMP always uses the 3 number format. */ -#define GCC_GMP_STRINGIFY_VERSION3(X) #X -#define GCC_GMP_STRINGIFY_VERSION2(X) GCC_GMP_STRINGIFY_VERSION3 (X) -#define GCC_GMP_VERSION_NUM(X,Y,Z) (((X) << 16L) | ((Y) << 8) | (Z)) -#define GCC_GMP_VERSION \ - GCC_GMP_VERSION_NUM(__GNU_MP_VERSION, __GNU_MP_VERSION_MINOR, __GNU_MP_VERSION_PATCHLEVEL) -#if GCC_GMP_VERSION < GCC_GMP_VERSION_NUM(4,3,0) && __GNU_MP_VERSION_PATCHLEVEL == 0 -#define GCC_GMP_STRINGIFY_VERSION \ - GCC_GMP_STRINGIFY_VERSION2 (__GNU_MP_VERSION) "." \ - GCC_GMP_STRINGIFY_VERSION2 (__GNU_MP_VERSION_MINOR) -#else -#define GCC_GMP_STRINGIFY_VERSION \ - GCC_GMP_STRINGIFY_VERSION2 (__GNU_MP_VERSION) "." \ - GCC_GMP_STRINGIFY_VERSION2 (__GNU_MP_VERSION_MINOR) "." \ - GCC_GMP_STRINGIFY_VERSION2 (__GNU_MP_VERSION_PATCHLEVEL) -#endif - fprintf (file, - file == stderr ? _(fmt2) : fmt2, - GCC_GMP_STRINGIFY_VERSION, MPFR_VERSION_STRING, MPC_VERSION_STRING, -#ifndef HAVE_isl - "none" -#else - isl_version () -#endif - ); - if (strcmp (GCC_GMP_STRINGIFY_VERSION, gmp_version)) - fprintf (file, - file == stderr ? _(fmt3) : fmt3, - indent, *indent != 0 ? " " : "", - "GMP", GCC_GMP_STRINGIFY_VERSION, gmp_version); - if (strcmp (MPFR_VERSION_STRING, mpfr_get_version ())) - fprintf (file, - file == stderr ? _(fmt3) : fmt3, - indent, *indent != 0 ? " " : "", - "MPFR", MPFR_VERSION_STRING, mpfr_get_version ()); - if (strcmp (MPC_VERSION_STRING, mpc_get_version ())) - fprintf (file, - file == stderr ? _(fmt3) : fmt3, - indent, *indent != 0 ? " " : "", - "MPC", MPC_VERSION_STRING, mpc_get_version ()); - - if (show_global_state) - { - fprintf (file, - file == stderr ? _(fmt4) : fmt4, - indent, *indent != 0 ? " " : "", - param_ggc_min_expand, param_ggc_min_heapsize); - - print_plugins_versions (file, indent); - } -} - - - -/* Open assembly code output file. Do this even if -fsyntax-only is - on, because then the driver will have provided the name of a - temporary file or bit bucket for us. NAME is the file specified on - the command line, possibly NULL. */ -static void -init_asm_output (const char *name) -{ - if (name == NULL && asm_file_name == 0) - asm_out_file = stdout; - else - { - if (asm_file_name == 0) - { - int len = strlen (dump_base_name); - char *dumpname = XNEWVEC (char, len + 6); - - memcpy (dumpname, dump_base_name, len + 1); - strip_off_ending (dumpname, len); - strcat (dumpname, ".s"); - asm_file_name = dumpname; - } - if (!strcmp (asm_file_name, "-")) - asm_out_file = stdout; - else if (!canonical_filename_eq (asm_file_name, name) - || !strcmp (asm_file_name, HOST_BIT_BUCKET)) - asm_out_file = fopen (asm_file_name, "w"); - else - /* Use UNKOWN_LOCATION to prevent gcc from printing the first - line in the current file. */ - fatal_error (UNKNOWN_LOCATION, - "input file %qs is the same as output file", - asm_file_name); - if (asm_out_file == 0) - fatal_error (UNKNOWN_LOCATION, - "cannot open %qs for writing: %m", asm_file_name); - } - - if (!flag_syntax_only) - { - targetm.asm_out.file_start (); - - if (flag_record_gcc_switches) - { - if (targetm.asm_out.record_gcc_switches) - { - const char *str - = gen_producer_string (lang_hooks.name, - save_decoded_options, - save_decoded_options_count); - targetm.asm_out.record_gcc_switches (str); - } - else - inform (UNKNOWN_LOCATION, - "%<-frecord-gcc-switches%> is not supported by " - "the current target"); - } - - if (flag_verbose_asm) - { - print_version (asm_out_file, ASM_COMMENT_START, true); - fputs (ASM_COMMENT_START, asm_out_file); - fputs (" options passed: ", asm_out_file); - char *cmdline = gen_command_line_string (save_decoded_options, - save_decoded_options_count); - fputs (cmdline, asm_out_file); - free (cmdline); - fputc ('\n', asm_out_file); - } - } -} - -/* A helper function; used as the reallocator function for cpp's line - table. */ -static void * -realloc_for_line_map (void *ptr, size_t len) -{ - return ggc_realloc (ptr, len); -} - -/* A helper function: used as the allocator function for - identifier_to_locale. */ -static void * -alloc_for_identifier_to_locale (size_t len) -{ - return ggc_alloc_atomic (len); -} - -/* Output stack usage information. */ -static void -output_stack_usage_1 (FILE *cf) -{ - static bool warning_issued = false; - enum stack_usage_kind_type { STATIC = 0, DYNAMIC, DYNAMIC_BOUNDED }; - const char *stack_usage_kind_str[] = { - "static", - "dynamic", - "dynamic,bounded" - }; - HOST_WIDE_INT stack_usage = current_function_static_stack_size; - enum stack_usage_kind_type stack_usage_kind; - - if (stack_usage < 0) - { - if (!warning_issued) - { - warning (0, "stack usage computation not supported for this target"); - warning_issued = true; - } - return; - } - - stack_usage_kind = STATIC; - - /* Add the maximum amount of space pushed onto the stack. */ - if (maybe_ne (current_function_pushed_stack_size, 0)) - { - HOST_WIDE_INT extra; - if (current_function_pushed_stack_size.is_constant (&extra)) - { - stack_usage += extra; - stack_usage_kind = DYNAMIC_BOUNDED; - } - else - { - extra = constant_lower_bound (current_function_pushed_stack_size); - stack_usage += extra; - stack_usage_kind = DYNAMIC; - } - } - - /* Now on to the tricky part: dynamic stack allocation. */ - if (current_function_allocates_dynamic_stack_space) - { - if (stack_usage_kind != DYNAMIC) - { - if (current_function_has_unbounded_dynamic_stack_size) - stack_usage_kind = DYNAMIC; - else - stack_usage_kind = DYNAMIC_BOUNDED; - } - - /* Add the size even in the unbounded case, this can't hurt. */ - stack_usage += current_function_dynamic_stack_size; - } - - if (cf && flag_callgraph_info & CALLGRAPH_INFO_STACK_USAGE) - fprintf (cf, "\\n" HOST_WIDE_INT_PRINT_DEC " bytes (%s)", - stack_usage, - stack_usage_kind_str[stack_usage_kind]); - - if (stack_usage_file) - { - print_decl_identifier (stack_usage_file, current_function_decl, - PRINT_DECL_ORIGIN | PRINT_DECL_NAME); - fprintf (stack_usage_file, "\t" HOST_WIDE_INT_PRINT_DEC"\t%s\n", - stack_usage, stack_usage_kind_str[stack_usage_kind]); - } - - if (warn_stack_usage >= 0 && warn_stack_usage < HOST_WIDE_INT_MAX) - { - const location_t loc = DECL_SOURCE_LOCATION (current_function_decl); - - if (stack_usage_kind == DYNAMIC) - warning_at (loc, OPT_Wstack_usage_, "stack usage might be unbounded"); - else if (stack_usage > warn_stack_usage) - { - if (stack_usage_kind == DYNAMIC_BOUNDED) - warning_at (loc, - OPT_Wstack_usage_, "stack usage might be %wu bytes", - stack_usage); - else - warning_at (loc, OPT_Wstack_usage_, "stack usage is %wu bytes", - stack_usage); - } - } -} - -/* Dump placeholder node for indirect calls in VCG format. */ - -#define INDIRECT_CALL_NAME "__indirect_call" - -static void -dump_final_node_vcg_start (FILE *f, tree decl) -{ - fputs ("node: { title: \"", f); - if (decl) - print_decl_identifier (f, decl, PRINT_DECL_UNIQUE_NAME); - else - fputs (INDIRECT_CALL_NAME, f); - fputs ("\" label: \"", f); - if (decl) - { - print_decl_identifier (f, decl, PRINT_DECL_NAME); - fputs ("\\n", f); - print_decl_identifier (f, decl, PRINT_DECL_ORIGIN); - } - else - fputs ("Indirect Call Placeholder", f); -} - -/* Dump final cgraph edge in VCG format. */ - -static void -dump_final_callee_vcg (FILE *f, location_t location, tree callee) -{ - if ((!callee || DECL_EXTERNAL (callee)) - && bitmap_set_bit (callgraph_info_external_printed, - callee ? DECL_UID (callee) + 1 : 0)) - { - dump_final_node_vcg_start (f, callee); - fputs ("\" shape : ellipse }\n", f); - } - - fputs ("edge: { sourcename: \"", f); - print_decl_identifier (f, current_function_decl, PRINT_DECL_UNIQUE_NAME); - fputs ("\" targetname: \"", f); - if (callee) - print_decl_identifier (f, callee, PRINT_DECL_UNIQUE_NAME); - else - fputs (INDIRECT_CALL_NAME, f); - if (LOCATION_LOCUS (location) != UNKNOWN_LOCATION) - { - expanded_location loc; - fputs ("\" label: \"", f); - loc = expand_location (location); - fprintf (f, "%s:%d:%d", loc.file, loc.line, loc.column); - } - fputs ("\" }\n", f); -} - -/* Dump final cgraph node in VCG format. */ - -static void -dump_final_node_vcg (FILE *f) -{ - dump_final_node_vcg_start (f, current_function_decl); - - if (flag_stack_usage_info - || (flag_callgraph_info & CALLGRAPH_INFO_STACK_USAGE)) - output_stack_usage_1 (f); - - if (flag_callgraph_info & CALLGRAPH_INFO_DYNAMIC_ALLOC) - { - fprintf (f, "\\n%u dynamic objects", vec_safe_length (cfun->su->dallocs)); - - unsigned i; - callinfo_dalloc *cda; - FOR_EACH_VEC_SAFE_ELT (cfun->su->dallocs, i, cda) - { - expanded_location loc = expand_location (cda->location); - fprintf (f, "\\n %s", cda->name); - fprintf (f, " %s:%d:%d", loc.file, loc.line, loc.column); - } - - vec_free (cfun->su->dallocs); - cfun->su->dallocs = NULL; - } - - fputs ("\" }\n", f); - - unsigned i; - callinfo_callee *c; - FOR_EACH_VEC_SAFE_ELT (cfun->su->callees, i, c) - dump_final_callee_vcg (f, c->location, c->decl); - vec_free (cfun->su->callees); - cfun->su->callees = NULL; -} - -/* Output stack usage and callgraph info, as requested. */ -void -output_stack_usage (void) -{ - if (flag_callgraph_info) - dump_final_node_vcg (callgraph_info_file); - else - output_stack_usage_1 (NULL); -} - -/* Open an auxiliary output file. */ -static FILE * -open_auxiliary_file (const char *ext) -{ - char *filename; - FILE *file; - - filename = concat (aux_base_name, ".", ext, NULL); - file = fopen (filename, "w"); - if (!file) - fatal_error (input_location, "cannot open %s for writing: %m", filename); - free (filename); - return file; -} - -/* Alternative diagnostics callback for reentered ICE reporting. */ - -static void -internal_error_reentered (diagnostic_context *, const char *, va_list *) -{ - /* Flush the dump file if emergency_dump_function itself caused an ICE. */ - if (dump_file) - fflush (dump_file); -} - -/* Auxiliary callback for the diagnostics code. */ - -static void -internal_error_function (diagnostic_context *, const char *, va_list *) -{ - global_dc->internal_error = internal_error_reentered; - warn_if_plugins (); - emergency_dump_function (); -} - -/* Initialization of the front end environment, before command line - options are parsed. Signal handlers, internationalization etc. - ARGV0 is main's argv[0]. */ -static void -general_init (const char *argv0, bool init_signals) -{ - const char *p; - - p = argv0 + strlen (argv0); - while (p != argv0 && !IS_DIR_SEPARATOR (p[-1])) - --p; - progname = p; - - xmalloc_set_program_name (progname); - - hex_init (); - - /* Unlock the stdio streams. */ - unlock_std_streams (); - - gcc_init_libintl (); - - identifier_to_locale_alloc = alloc_for_identifier_to_locale; - identifier_to_locale_free = ggc_free; - - /* Initialize the diagnostics reporting machinery, so option parsing - can give warnings and errors. */ - diagnostic_initialize (global_dc, N_OPTS); - global_dc->lang_mask = lang_hooks.option_lang_mask (); - /* Set a default printer. Language specific initializations will - override it later. */ - tree_diagnostics_defaults (global_dc); - - global_dc->show_caret - = global_options_init.x_flag_diagnostics_show_caret; - global_dc->show_labels_p - = global_options_init.x_flag_diagnostics_show_labels; - global_dc->show_line_numbers_p - = global_options_init.x_flag_diagnostics_show_line_numbers; - global_dc->show_cwe - = global_options_init.x_flag_diagnostics_show_cwe; - global_dc->path_format - = (enum diagnostic_path_format)global_options_init.x_flag_diagnostics_path_format; - global_dc->show_path_depths - = global_options_init.x_flag_diagnostics_show_path_depths; - global_dc->show_option_requested - = global_options_init.x_flag_diagnostics_show_option; - global_dc->min_margin_width - = global_options_init.x_diagnostics_minimum_margin_width; - global_dc->show_column - = global_options_init.x_flag_show_column; - global_dc->internal_error = internal_error_function; - global_dc->option_enabled = option_enabled; - global_dc->option_state = &global_options; - global_dc->option_name = option_name; - global_dc->get_option_url = get_option_url; - - if (init_signals) - { - /* Trap fatal signals, e.g. SIGSEGV, and convert them to ICE messages. */ -#ifdef SIGSEGV - signal (SIGSEGV, crash_signal); -#endif -#ifdef SIGILL - signal (SIGILL, crash_signal); -#endif -#ifdef SIGBUS - signal (SIGBUS, crash_signal); -#endif -#ifdef SIGABRT - signal (SIGABRT, crash_signal); -#endif -#if defined SIGIOT && (!defined SIGABRT || SIGABRT != SIGIOT) - signal (SIGIOT, crash_signal); -#endif -#ifdef SIGFPE - signal (SIGFPE, crash_signal); -#endif - - /* Other host-specific signal setup. */ - (*host_hooks.extra_signals)(); - } - - /* Initialize the garbage-collector, string pools and tree type hash - table. */ - init_ggc (); - init_stringpool (); - input_location = UNKNOWN_LOCATION; - line_table = ggc_alloc<line_maps> (); - linemap_init (line_table, BUILTINS_LOCATION); - line_table->reallocator = realloc_for_line_map; - line_table->round_alloc_size = ggc_round_alloc_size; - line_table->default_range_bits = 5; - init_ttree (); - - /* Initialize register usage now so switches may override. */ - init_reg_sets (); - - /* Create the singleton holder for global state. This creates the - dump manager. */ - g = new gcc::context (); - - /* Allow languages and middle-end to register their dumps before the - optimization passes. */ - g->get_dumps ()->register_dumps (); - - /* Create the passes. */ - g->set_passes (new gcc::pass_manager (g)); - - symtab = new (ggc_alloc <symbol_table> ()) symbol_table (); - - statistics_early_init (); - debuginfo_early_init (); -} - -/* Return true if the current target supports -fsection-anchors. */ - -static bool -target_supports_section_anchors_p (void) -{ - if (targetm.min_anchor_offset == 0 && targetm.max_anchor_offset == 0) - return false; - - if (targetm.asm_out.output_anchor == NULL) - return false; - - return true; -} - -/* Parse "N[:M][:...]" into struct align_flags A. - VALUES contains parsed values (in reverse order), all processed - values are popped. */ - -static void -read_log_maxskip (auto_vec<unsigned> &values, align_flags_tuple *a) -{ - unsigned n = values.pop (); - if (n != 0) - a->log = floor_log2 (n * 2 - 1); - - if (values.is_empty ()) - a->maxskip = n ? n - 1 : 0; - else - { - unsigned m = values.pop (); - /* -falign-foo=N:M means M-1 max bytes of padding, not M. */ - if (m > 0) - m--; - a->maxskip = m; - } - - /* Normalize the tuple. */ - a->normalize (); -} - -/* Parse "N[:M[:N2[:M2]]]" string FLAG into a pair of struct align_flags. */ - -static void -parse_N_M (const char *flag, align_flags &a) -{ - if (flag) - { - static hash_map <nofree_string_hash, align_flags> cache; - align_flags *entry = cache.get (flag); - if (entry) - { - a = *entry; - return; - } - - auto_vec<unsigned> result_values; - bool r = parse_and_check_align_values (flag, NULL, result_values, false, - UNKNOWN_LOCATION); - if (!r) - return; - - /* Reverse values for easier manipulation. */ - result_values.reverse (); - - read_log_maxskip (result_values, &a.levels[0]); - if (!result_values.is_empty ()) - read_log_maxskip (result_values, &a.levels[1]); -#ifdef SUBALIGN_LOG - else - { - /* N2[:M2] is not specified. This arch has a default for N2. - Before -falign-foo=N:M:N2:M2 was introduced, x86 had a tweak. - -falign-functions=N with N > 8 was adding secondary alignment. - -falign-functions=10 was emitting this before every function: - .p2align 4,,9 - .p2align 3 - Now this behavior (and more) can be explicitly requested: - -falign-functions=16:10:8 - Retain old behavior if N2 is missing: */ - - int align = 1 << a.levels[0].log; - int subalign = 1 << SUBALIGN_LOG; - - if (a.levels[0].log > SUBALIGN_LOG - && a.levels[0].maxskip >= subalign - 1) - { - /* Set N2 unless subalign can never have any effect. */ - if (align > a.levels[0].maxskip + 1) - { - a.levels[1].log = SUBALIGN_LOG; - a.levels[1].normalize (); - } - } - } -#endif - - /* Cache seen value. */ - cache.put (flag, a); - } -} - -/* Process -falign-foo=N[:M[:N2[:M2]]] options. */ - -void -parse_alignment_opts (void) -{ - parse_N_M (str_align_loops, align_loops); - parse_N_M (str_align_jumps, align_jumps); - parse_N_M (str_align_labels, align_labels); - parse_N_M (str_align_functions, align_functions); -} - -/* Process the options that have been parsed. */ -static void -process_options (bool no_backend) -{ - const char *language_string = lang_hooks.name; - - maximum_field_alignment = initial_max_fld_align * BITS_PER_UNIT; - - /* Some machines may reject certain combinations of options. */ - location_t saved_location = input_location; - input_location = UNKNOWN_LOCATION; - targetm.target_option.override (); - input_location = saved_location; - - if (flag_diagnostics_generate_patch) - global_dc->edit_context_ptr = new edit_context (); - - /* Avoid any informative notes in the second run of -fcompare-debug. */ - if (flag_compare_debug) - diagnostic_inhibit_notes (global_dc); - - if (flag_section_anchors && !target_supports_section_anchors_p ()) - { - warning_at (UNKNOWN_LOCATION, OPT_fsection_anchors, - "this target does not support %qs", - "-fsection-anchors"); - flag_section_anchors = 0; - } - - if (flag_short_enums == 2) - flag_short_enums = targetm.default_short_enums (); - - /* Set aux_base_name if not already set. */ - if (aux_base_name) - ; - else if (dump_base_name) - { - const char *name = dump_base_name; - int nlen, len; - - if (dump_base_ext && (len = strlen (dump_base_ext)) - && (nlen = strlen (name)) && nlen > len - && strcmp (name + nlen - len, dump_base_ext) == 0) - { - char *p = xstrndup (name, nlen - len); - name = p; - } - - aux_base_name = name; - } - else - aux_base_name = "gccaux"; - -#ifndef HAVE_isl - if (flag_graphite - || flag_loop_nest_optimize - || flag_graphite_identity - || flag_loop_parallelize_all) - sorry ("Graphite loop optimizations cannot be used (isl is not available) " - "(%<-fgraphite%>, %<-fgraphite-identity%>, " - "%<-floop-nest-optimize%>, %<-floop-parallelize-all%>)"); -#endif - - if (flag_cf_protection != CF_NONE - && !(flag_cf_protection & CF_SET)) - { - if (flag_cf_protection == CF_FULL) - { - error_at (UNKNOWN_LOCATION, - "%<-fcf-protection=full%> is not supported for this " - "target"); - flag_cf_protection = CF_NONE; - } - if (flag_cf_protection == CF_BRANCH) - { - error_at (UNKNOWN_LOCATION, - "%<-fcf-protection=branch%> is not supported for this " - "target"); - flag_cf_protection = CF_NONE; - } - if (flag_cf_protection == CF_RETURN) - { - error_at (UNKNOWN_LOCATION, - "%<-fcf-protection=return%> is not supported for this " - "target"); - flag_cf_protection = CF_NONE; - } - } - - /* One region RA really helps to decrease the code size. */ - if (!OPTION_SET_P (flag_ira_region)) - flag_ira_region - = optimize_size || !optimize ? IRA_REGION_ONE : IRA_REGION_MIXED; - - if (!abi_version_at_least (2)) - { - /* -fabi-version=1 support was removed after GCC 4.9. */ - error_at (UNKNOWN_LOCATION, - "%<-fabi-version=1%> is no longer supported"); - flag_abi_version = 2; - } - - if (flag_non_call_exceptions) - flag_asynchronous_unwind_tables = 1; - if (flag_asynchronous_unwind_tables) - flag_unwind_tables = 1; - - if (flag_value_profile_transformations) - flag_profile_values = 1; - - /* Warn about options that are not supported on this machine. */ -#ifndef INSN_SCHEDULING - if (flag_schedule_insns || flag_schedule_insns_after_reload) - warning_at (UNKNOWN_LOCATION, 0, - "instruction scheduling not supported on this target machine"); -#endif - if (!DELAY_SLOTS && flag_delayed_branch) - warning_at (UNKNOWN_LOCATION, 0, - "this target machine does not have delayed branches"); - - user_label_prefix = USER_LABEL_PREFIX; - if (flag_leading_underscore != -1) - { - /* If the default prefix is more complicated than "" or "_", - issue a warning and ignore this option. */ - if (user_label_prefix[0] == 0 || - (user_label_prefix[0] == '_' && user_label_prefix[1] == 0)) - { - user_label_prefix = flag_leading_underscore ? "_" : ""; - } - else - warning_at (UNKNOWN_LOCATION, 0, - "%<-f%sleading-underscore%> not supported on this " - "target machine", flag_leading_underscore ? "" : "no-"); - } - - /* If we are in verbose mode, write out the version and maybe all the - option flags in use. */ - if (version_flag) - { - print_version (stderr, "", true); - if (!quiet_flag) - { - fputs ("options passed: ", stderr); - char *cmdline = gen_command_line_string (save_decoded_options, - save_decoded_options_count); - - fputs (cmdline, stderr); - free (cmdline); - fputc ('\n', stderr); - } - } - - /* CTF is supported for only C at this time. */ - if (!lang_GNU_C () - && ctf_debug_info_level > CTFINFO_LEVEL_NONE) - { - /* Compiling with -flto results in frontend language of GNU GIMPLE. It - is not useful to warn in that case. */ - if (!startswith (lang_hooks.name, "GNU GIMPLE")) - inform (UNKNOWN_LOCATION, - "CTF debug info requested, but not supported for %qs frontend", - language_string); - ctf_debug_info_level = CTFINFO_LEVEL_NONE; - } - - if (flag_dump_final_insns && !flag_syntax_only && !no_backend) - { - FILE *final_output = fopen (flag_dump_final_insns, "w"); - if (!final_output) - { - error_at (UNKNOWN_LOCATION, - "could not open final insn dump file %qs: %m", - flag_dump_final_insns); - flag_dump_final_insns = NULL; - } - else if (fclose (final_output)) - { - error_at (UNKNOWN_LOCATION, - "could not close zeroed insn dump file %qs: %m", - flag_dump_final_insns); - flag_dump_final_insns = NULL; - } - } - - /* A lot of code assumes write_symbols == NO_DEBUG if the debugging - level is 0. */ - if (debug_info_level == DINFO_LEVEL_NONE - && ctf_debug_info_level == CTFINFO_LEVEL_NONE) - write_symbols = NO_DEBUG; - - /* Warn if STABS debug gets enabled and is not the default. */ - if (PREFERRED_DEBUGGING_TYPE != DBX_DEBUG && (write_symbols & DBX_DEBUG)) - warning (0, "STABS debugging information is obsolete and not " - "supported anymore"); - - if (write_symbols == NO_DEBUG) - ; -#if defined(DBX_DEBUGGING_INFO) - else if (write_symbols == DBX_DEBUG) - debug_hooks = &dbx_debug_hooks; -#endif -#if defined(XCOFF_DEBUGGING_INFO) - else if (write_symbols == XCOFF_DEBUG) - debug_hooks = &xcoff_debug_hooks; -#endif -#ifdef DWARF2_DEBUGGING_INFO - else if (dwarf_debuginfo_p ()) - debug_hooks = &dwarf2_debug_hooks; -#endif -#ifdef CTF_DEBUGGING_INFO - else if (ctf_debuginfo_p ()) - debug_hooks = &dwarf2_debug_hooks; -#endif -#ifdef BTF_DEBUGGING_INFO - else if (btf_debuginfo_p ()) - debug_hooks = &dwarf2_debug_hooks; -#endif -#ifdef VMS_DEBUGGING_INFO - else if (write_symbols == VMS_DEBUG || write_symbols == VMS_AND_DWARF2_DEBUG) - debug_hooks = &vmsdbg_debug_hooks; -#endif -#ifdef DWARF2_LINENO_DEBUGGING_INFO - else if (write_symbols == DWARF2_DEBUG) - debug_hooks = &dwarf2_lineno_debug_hooks; -#endif - else - { - gcc_assert (debug_set_count (write_symbols) <= 1); - error_at (UNKNOWN_LOCATION, - "target system does not support the %qs debug format", - debug_type_names[debug_set_to_format (write_symbols)]); - } - - /* We know which debug output will be used so we can set flag_var_tracking - and flag_var_tracking_uninit if the user has not specified them. */ - if (debug_info_level < DINFO_LEVEL_NORMAL - || !dwarf_debuginfo_p () - || debug_hooks->var_location == do_nothing_debug_hooks.var_location) - { - if ((OPTION_SET_P (flag_var_tracking) && flag_var_tracking == 1) - || (OPTION_SET_P (flag_var_tracking_uninit) - && flag_var_tracking_uninit == 1)) - { - if (debug_info_level < DINFO_LEVEL_NORMAL) - warning_at (UNKNOWN_LOCATION, 0, - "variable tracking requested, but useless unless " - "producing debug info"); - else - warning_at (UNKNOWN_LOCATION, 0, - "variable tracking requested, but not supported " - "by this debug format"); - } - flag_var_tracking = 0; - flag_var_tracking_uninit = 0; - flag_var_tracking_assignments = 0; - } - - /* The debug hooks are used to implement -fdump-go-spec because it - gives a simple and stable API for all the information we need to - dump. */ - if (flag_dump_go_spec != NULL) - debug_hooks = dump_go_spec_init (flag_dump_go_spec, debug_hooks); - - if (!OPTION_SET_P (dwarf2out_as_loc_support)) - dwarf2out_as_loc_support = dwarf2out_default_as_loc_support (); - if (!OPTION_SET_P (dwarf2out_as_locview_support)) - dwarf2out_as_locview_support = dwarf2out_default_as_locview_support (); - - if (!OPTION_SET_P (debug_variable_location_views)) - { - debug_variable_location_views - = (flag_var_tracking - && debug_info_level >= DINFO_LEVEL_NORMAL - && dwarf_debuginfo_p () - && !dwarf_strict - && dwarf2out_as_loc_support - && dwarf2out_as_locview_support); - } - else if (debug_variable_location_views == -1 && dwarf_version != 5) - { - warning_at (UNKNOWN_LOCATION, 0, - "without %<-gdwarf-5%>, " - "%<-gvariable-location-views=incompat5%> " - "is equivalent to %<-gvariable-location-views%>"); - debug_variable_location_views = 1; - } - - if (debug_internal_reset_location_views == 2) - { - debug_internal_reset_location_views - = (debug_variable_location_views - && targetm.reset_location_view); - } - else if (debug_internal_reset_location_views - && !debug_variable_location_views) - { - warning_at (UNKNOWN_LOCATION, 0, - "%<-ginternal-reset-location-views%> is forced disabled " - "without %<-gvariable-location-views%>"); - debug_internal_reset_location_views = 0; - } - - if (!OPTION_SET_P (debug_inline_points)) - debug_inline_points = debug_variable_location_views; - else if (debug_inline_points && !debug_nonbind_markers_p) - { - warning_at (UNKNOWN_LOCATION, 0, - "%<-ginline-points%> is forced disabled without " - "%<-gstatement-frontiers%>"); - debug_inline_points = 0; - } - - if (!OPTION_SET_P (flag_tree_cselim)) - { - if (HAVE_conditional_move) - flag_tree_cselim = 1; - else - flag_tree_cselim = 0; - } - - /* If auxiliary info generation is desired, open the output file. - This goes in the same directory as the source file--unlike - all the other output files. */ - if (flag_gen_aux_info) - { - aux_info_file = fopen (aux_info_file_name, "w"); - if (aux_info_file == 0) - fatal_error (UNKNOWN_LOCATION, - "cannot open %s: %m", aux_info_file_name); - } - - if (!targetm_common.have_named_sections) - { - if (flag_function_sections) - { - warning_at (UNKNOWN_LOCATION, 0, - "%<-ffunction-sections%> not supported for this target"); - flag_function_sections = 0; - } - if (flag_data_sections) - { - warning_at (UNKNOWN_LOCATION, 0, - "%<-fdata-sections%> not supported for this target"); - flag_data_sections = 0; - } - } - - if (flag_prefetch_loop_arrays > 0 && !targetm.code_for_prefetch) - { - warning_at (UNKNOWN_LOCATION, 0, - "%<-fprefetch-loop-arrays%> not supported for this target"); - flag_prefetch_loop_arrays = 0; - } - else if (flag_prefetch_loop_arrays > 0 && !targetm.have_prefetch ()) - { - warning_at (UNKNOWN_LOCATION, 0, - "%<-fprefetch-loop-arrays%> not supported for this target " - "(try %<-march%> switches)"); - flag_prefetch_loop_arrays = 0; - } - - /* This combination of options isn't handled for i386 targets and doesn't - make much sense anyway, so don't allow it. */ - if (flag_prefetch_loop_arrays > 0 && optimize_size) - { - warning_at (UNKNOWN_LOCATION, 0, - "%<-fprefetch-loop-arrays%> is not supported with %<-Os%>"); - flag_prefetch_loop_arrays = 0; - } - - /* The presence of IEEE signaling NaNs, implies all math can trap. */ - if (flag_signaling_nans) - flag_trapping_math = 1; - - /* We cannot reassociate if we want traps or signed zeros. */ - if (flag_associative_math && (flag_trapping_math || flag_signed_zeros)) - { - warning_at (UNKNOWN_LOCATION, 0, - "%<-fassociative-math%> disabled; other options take " - "precedence"); - flag_associative_math = 0; - } - - /* -fstack-clash-protection is not currently supported on targets - where the stack grows up. */ - if (flag_stack_clash_protection && !STACK_GROWS_DOWNWARD) - { - warning_at (UNKNOWN_LOCATION, 0, - "%<-fstack-clash-protection%> is not supported on targets " - "where the stack grows from lower to higher addresses"); - flag_stack_clash_protection = 0; - } - - /* We cannot support -fstack-check= and -fstack-clash-protection at - the same time. */ - if (flag_stack_check != NO_STACK_CHECK && flag_stack_clash_protection) - { - warning_at (UNKNOWN_LOCATION, 0, - "%<-fstack-check=%> and %<-fstack-clash_protection%> are " - "mutually exclusive; disabling %<-fstack-check=%>"); - flag_stack_check = NO_STACK_CHECK; - } - - /* Targets must be able to place spill slots at lower addresses. If the - target already uses a soft frame pointer, the transition is trivial. */ - if (!FRAME_GROWS_DOWNWARD && flag_stack_protect) - { - warning_at (UNKNOWN_LOCATION, 0, - "%<-fstack-protector%> not supported for this target"); - flag_stack_protect = 0; - } - if (!flag_stack_protect) - warn_stack_protect = 0; - - /* Address Sanitizer needs porting to each target architecture. */ - - if ((flag_sanitize & SANITIZE_ADDRESS) - && !FRAME_GROWS_DOWNWARD) - { - warning_at (UNKNOWN_LOCATION, 0, - "%<-fsanitize=address%> and %<-fsanitize=kernel-address%> " - "are not supported for this target"); - flag_sanitize &= ~SANITIZE_ADDRESS; - } - - if ((flag_sanitize & SANITIZE_USER_ADDRESS) - && ((targetm.asan_shadow_offset == NULL) - || (targetm.asan_shadow_offset () == 0))) - { - warning_at (UNKNOWN_LOCATION, 0, - "%<-fsanitize=address%> not supported for this target"); - flag_sanitize &= ~SANITIZE_ADDRESS; - } - - if ((flag_sanitize & SANITIZE_KERNEL_ADDRESS) - && (targetm.asan_shadow_offset == NULL - && !asan_shadow_offset_set_p ())) - { - warning_at (UNKNOWN_LOCATION, 0, - "%<-fsanitize=kernel-address%> with stack protection " - "is not supported without %<-fasan-shadow-offset=%> " - "for this target"); - flag_sanitize &= ~SANITIZE_ADDRESS; - } - - /* HWAsan requires top byte ignore feature in the backend. */ - if (flag_sanitize & SANITIZE_HWADDRESS - && ! targetm.memtag.can_tag_addresses ()) - { - warning_at (UNKNOWN_LOCATION, 0, "%qs is not supported for this target", - "-fsanitize=hwaddress"); - flag_sanitize &= ~SANITIZE_HWADDRESS; - } - - HOST_WIDE_INT patch_area_size, patch_area_start; - parse_and_check_patch_area (flag_patchable_function_entry, false, - &patch_area_size, &patch_area_start); - - /* Do not use IPA optimizations for register allocation if profiler is active - or patchable function entries are inserted for run-time instrumentation - or port does not emit prologue and epilogue as RTL. */ - if (profile_flag || patch_area_size - || !targetm.have_prologue () || !targetm.have_epilogue ()) - flag_ipa_ra = 0; - - /* Enable -Werror=coverage-mismatch when -Werror and -Wno-error - have not been set. */ - if (!OPTION_SET_P (warnings_are_errors)) - { - if (warn_coverage_mismatch - && (global_dc->classify_diagnostic[OPT_Wcoverage_mismatch] == - DK_UNSPECIFIED)) - diagnostic_classify_diagnostic (global_dc, OPT_Wcoverage_mismatch, - DK_ERROR, UNKNOWN_LOCATION); - if (warn_coverage_invalid_linenum - && (global_dc->classify_diagnostic[OPT_Wcoverage_invalid_line_number] == - DK_UNSPECIFIED)) - diagnostic_classify_diagnostic (global_dc, OPT_Wcoverage_invalid_line_number, - DK_ERROR, UNKNOWN_LOCATION); - } - - /* Save the current optimization options. */ - optimization_default_node - = build_optimization_node (&global_options, &global_options_set); - optimization_current_node = optimization_default_node; - - if (flag_checking >= 2) - hash_table_sanitize_eq_limit - = param_hash_table_verification_limit; - - if (flag_large_source_files) - line_table->default_range_bits = 0; - - diagnose_options (&global_options, &global_options_set, UNKNOWN_LOCATION); - - /* Please don't change global_options after this point, those changes won't - be reflected in optimization_{default,current}_node. */ -} - -/* This function can be called multiple times to reinitialize the compiler - back end when register classes or instruction sets have changed, - before each function. */ -static void -backend_init_target (void) -{ - /* This depends on stack_pointer_rtx. */ - init_fake_stack_mems (); - - /* Sets static_base_value[HARD_FRAME_POINTER_REGNUM], which is - mode-dependent. */ - init_alias_target (); - - /* Depends on HARD_FRAME_POINTER_REGNUM. */ - if (!ira_use_lra_p) - init_reload (); - - /* Depends on the enabled attribute. */ - recog_init (); - - /* The following initialization functions need to generate rtl, so - provide a dummy function context for them. */ - init_dummy_function_start (); - - /* rtx_cost is mode-dependent, so cached values need to be recomputed - on a mode change. */ - init_expmed (); - init_lower_subreg (); - init_set_costs (); - - init_expr_target (); - ira_init (); - - /* We may need to recompute regno_save_code[] and regno_restore_code[] - after a mode change as well. */ - caller_save_initialized_p = false; - - expand_dummy_function_end (); -} - -/* Initialize the compiler back end. This function is called only once, - when starting the compiler. */ -static void -backend_init (void) -{ - init_emit_once (); - - init_rtlanal (); - init_inline_once (); - init_varasm_once (); - save_register_info (); - - /* Middle end needs this initialization for default mem attributes - used by early calls to make_decl_rtl. */ - init_emit_regs (); - - /* Middle end needs this initialization for mode tables used to assign - modes to vector variables. */ - init_regs (); -} - -/* Initialize things that are both lang-dependent and target-dependent. - This function can be called more than once if target parameters change. */ -static void -lang_dependent_init_target (void) -{ - /* This creates various _DECL nodes, so needs to be called after the - front end is initialized. It also depends on the HAVE_xxx macros - generated from the target machine description. */ - init_optabs (); - - gcc_assert (!this_target_rtl->target_specific_initialized); -} - -/* Perform initializations that are lang-dependent or target-dependent. - but matters only for late optimizations and RTL generation. */ - -static int rtl_initialized; - -void -initialize_rtl (void) -{ - auto_timevar tv (g_timer, TV_INITIALIZE_RTL); - - /* Initialization done just once per compilation, but delayed - till code generation. */ - if (!rtl_initialized) - ira_init_once (); - rtl_initialized = true; - - /* Target specific RTL backend initialization. */ - if (!this_target_rtl->target_specific_initialized) - { - backend_init_target (); - this_target_rtl->target_specific_initialized = true; - } -} - -/* Language-dependent initialization. Returns nonzero on success. */ -static int -lang_dependent_init (const char *name) -{ - location_t save_loc = input_location; - if (!dump_base_name) - { - dump_base_name = name && name[0] ? name : "gccdump"; - - /* We do not want to derive a non-empty dumpbase-ext from an - explicit -dumpbase argument, only from a defaulted - dumpbase. */ - if (!dump_base_ext) - { - const char *base = lbasename (dump_base_name); - const char *ext = strrchr (base, '.'); - if (ext) - dump_base_ext = ext; - } - } - - /* Other front-end initialization. */ - input_location = BUILTINS_LOCATION; - if (lang_hooks.init () == 0) - return 0; - input_location = save_loc; - - if (!flag_wpa) - { - init_asm_output (name); - - if (!flag_generate_lto && !flag_compare_debug) - { - /* If stack usage information is desired, open the output file. */ - if (flag_stack_usage) - stack_usage_file = open_auxiliary_file ("su"); - - /* If call graph information is desired, open the output file. */ - if (flag_callgraph_info) - { - callgraph_info_file = open_auxiliary_file ("ci"); - /* Write the file header. */ - fprintf (callgraph_info_file, - "graph: { title: \"%s\"\n", main_input_filename); - bitmap_obstack_initialize (NULL); - callgraph_info_external_printed = BITMAP_ALLOC (NULL); - } - } - else - flag_stack_usage = flag_callgraph_info = false; - } - - /* This creates various _DECL nodes, so needs to be called after the - front end is initialized. */ - init_eh (); - - /* Do the target-specific parts of the initialization. */ - lang_dependent_init_target (); - - if (!flag_wpa) - { - /* If dbx symbol table desired, initialize writing it and output the - predefined types. */ - timevar_push (TV_SYMOUT); - - /* Now we have the correct original filename, we can initialize - debug output. */ - (*debug_hooks->init) (name); - - timevar_pop (TV_SYMOUT); - } - - return 1; -} - - -/* Reinitialize everything when target parameters, such as register usage, - have changed. */ -void -target_reinit (void) -{ - struct rtl_data saved_x_rtl; - rtx *saved_regno_reg_rtx; - tree saved_optimization_current_node; - struct target_optabs *saved_this_fn_optabs; - - /* Temporarily switch to the default optimization node, so that - *this_target_optabs is set to the default, not reflecting - whatever a previous function used for the optimize - attribute. */ - saved_optimization_current_node = optimization_current_node; - saved_this_fn_optabs = this_fn_optabs; - if (saved_optimization_current_node != optimization_default_node) - { - optimization_current_node = optimization_default_node; - cl_optimization_restore - (&global_options, &global_options_set, - TREE_OPTIMIZATION (optimization_default_node)); - } - this_fn_optabs = this_target_optabs; - - /* Save *crtl and regno_reg_rtx around the reinitialization - to allow target_reinit being called even after prepare_function_start. */ - saved_regno_reg_rtx = regno_reg_rtx; - if (saved_regno_reg_rtx) - { - saved_x_rtl = *crtl; - memset (crtl, '\0', sizeof (*crtl)); - regno_reg_rtx = NULL; - } - - this_target_rtl->target_specific_initialized = false; - - /* This initializes hard_frame_pointer, and calls init_reg_modes_target() - to initialize reg_raw_mode[]. */ - init_emit_regs (); - - /* This invokes target hooks to set fixed_reg[] etc, which is - mode-dependent. */ - init_regs (); - - /* Reinitialize lang-dependent parts. */ - lang_dependent_init_target (); - - /* Restore the original optimization node. */ - if (saved_optimization_current_node != optimization_default_node) - { - optimization_current_node = saved_optimization_current_node; - cl_optimization_restore (&global_options, &global_options_set, - TREE_OPTIMIZATION (optimization_current_node)); - } - this_fn_optabs = saved_this_fn_optabs; - - /* Restore regno_reg_rtx at the end, as free_after_compilation from - expand_dummy_function_end clears it. */ - if (saved_regno_reg_rtx) - { - *crtl = saved_x_rtl; - regno_reg_rtx = saved_regno_reg_rtx; - saved_regno_reg_rtx = NULL; - } -} - -void -dump_memory_report (const char *header) -{ - /* Print significant header. */ - fputc ('\n', stderr); - for (unsigned i = 0; i < 80; i++) - fputc ('#', stderr); - fprintf (stderr, "\n# %-77s#\n", header); - for (unsigned i = 0; i < 80; i++) - fputc ('#', stderr); - fputs ("\n\n", stderr); - - dump_line_table_statistics (); - ggc_print_statistics (); - stringpool_statistics (); - dump_tree_statistics (); - dump_gimple_statistics (); - dump_rtx_statistics (); - dump_alloc_pool_statistics (); - dump_bitmap_statistics (); - dump_hash_table_loc_statistics (); - dump_vec_loc_statistics (); - dump_ggc_loc_statistics (); - dump_alias_stats (stderr); - dump_pta_stats (stderr); -} - -/* Clean up: close opened files, etc. */ - -static void -finalize (bool no_backend) -{ - /* Close the dump files. */ - if (flag_gen_aux_info) - { - fclose (aux_info_file); - aux_info_file = NULL; - if (seen_error ()) - unlink (aux_info_file_name); - } - - /* Close non-debugging input and output files. Take special care to note - whether fclose returns an error, since the pages might still be on the - buffer chain while the file is open. */ - - if (asm_out_file) - { - if (ferror (asm_out_file) != 0) - fatal_error (input_location, "error writing to %s: %m", asm_file_name); - if (fclose (asm_out_file) != 0) - fatal_error (input_location, "error closing %s: %m", asm_file_name); - asm_out_file = NULL; - } - - if (stack_usage_file) - { - fclose (stack_usage_file); - stack_usage_file = NULL; - } - - if (callgraph_info_file) - { - fputs ("}\n", callgraph_info_file); - fclose (callgraph_info_file); - callgraph_info_file = NULL; - BITMAP_FREE (callgraph_info_external_printed); - bitmap_obstack_release (NULL); - } - - if (seen_error ()) - coverage_remove_note_file (); - - if (!no_backend) - { - statistics_fini (); - debuginfo_fini (); - - g->get_passes ()->finish_optimization_passes (); - - lra_finish_once (); - } - - if (mem_report) - dump_memory_report ("Final"); - - if (profile_report) - dump_profile_report (); - - if (flag_dbg_cnt_list) - dbg_cnt_list_all_counters (); - - /* Language-specific end of compilation actions. */ - lang_hooks.finish (); -} - -static bool -standard_type_bitsize (int bitsize) -{ - /* As a special exception, we always want __int128 enabled if possible. */ - if (bitsize == 128) - return false; - if (bitsize == CHAR_TYPE_SIZE - || bitsize == SHORT_TYPE_SIZE - || bitsize == INT_TYPE_SIZE - || bitsize == LONG_TYPE_SIZE - || bitsize == LONG_LONG_TYPE_SIZE) - return true; - return false; -} - -/* Initialize the compiler, and compile the input file. */ -static void -do_compile (bool no_backend) -{ - /* Don't do any more if an error has already occurred. */ - if (!seen_error ()) - { - int i; - - timevar_start (TV_PHASE_SETUP); - - if (flag_save_optimization_record) - { - dump_context::get ().set_json_writer (new optrecord_json_writer ()); - } - - /* This must be run always, because it is needed to compute the FP - predefined macros, such as __LDBL_MAX__, for targets using non - default FP formats. */ - init_adjust_machine_modes (); - init_derived_machine_modes (); - - /* This must happen after the backend has a chance to process - command line options, but before the parsers are - initialized. */ - for (i = 0; i < NUM_INT_N_ENTS; i ++) - if (targetm.scalar_mode_supported_p (int_n_data[i].m) - && ! standard_type_bitsize (int_n_data[i].bitsize)) - int_n_enabled_p[i] = true; - else - int_n_enabled_p[i] = false; - - /* Initialize mpfrs exponent range. This is important to get - underflow/overflow in a reasonable timeframe. */ - machine_mode mode; - int min_exp = -1; - int max_exp = 1; - FOR_EACH_MODE_IN_CLASS (mode, MODE_FLOAT) - if (SCALAR_FLOAT_MODE_P (mode)) - { - const real_format *fmt = REAL_MODE_FORMAT (mode); - if (fmt) - { - /* fmt->emin - fmt->p + 1 should be enough but the - back-and-forth dance in real_to_decimal_for_mode we - do for checking fails due to rounding effects then. */ - if ((fmt->emin - fmt->p) < min_exp) - min_exp = fmt->emin - fmt->p; - if (fmt->emax > max_exp) - max_exp = fmt->emax; - } - } - /* E.g. mpc_norm assumes it can square a number without bothering with - with range scaling, so until that is fixed, double the minimum - and maximum exponents, plus add some buffer for arithmetics - on the squared numbers. */ - if (mpfr_set_emin (2 * (min_exp - 1)) - || mpfr_set_emax (2 * (max_exp + 1))) - sorry ("mpfr not configured to handle all floating modes"); - - /* Set up the back-end if requested. */ - if (!no_backend) - backend_init (); - - /* Language-dependent initialization. Returns true on success. */ - if (lang_dependent_init (main_input_filename)) - { - /* Initialize yet another pass. */ - - ggc_protect_identifiers = true; - - symtab->initialize (); - init_final (main_input_filename); - coverage_init (aux_base_name); - statistics_init (); - debuginfo_init (); - invoke_plugin_callbacks (PLUGIN_START_UNIT, NULL); - - timevar_stop (TV_PHASE_SETUP); - - compile_file (); - } - else - { - timevar_stop (TV_PHASE_SETUP); - } - - timevar_start (TV_PHASE_FINALIZE); - - finalize (no_backend); - - timevar_stop (TV_PHASE_FINALIZE); - } -} - -toplev::toplev (timer *external_timer, - bool init_signals) - : m_use_TV_TOTAL (external_timer == NULL), - m_init_signals (init_signals) -{ - if (external_timer) - g_timer = external_timer; -} - -toplev::~toplev () -{ - if (g_timer && m_use_TV_TOTAL) - { - g_timer->stop (TV_TOTAL); - g_timer->print (stderr); - delete g_timer; - g_timer = NULL; - } -} - -/* Potentially call timevar_init (which will create g_timevars if it - doesn't already exist). */ - -void -toplev::start_timevars () -{ - if (time_report || !quiet_flag || flag_detailed_statistics) - timevar_init (); - - timevar_start (TV_TOTAL); -} - -/* Handle -fself-test. */ - -void -toplev::run_self_tests () -{ -#if CHECKING_P - /* Reset some state. */ - input_location = UNKNOWN_LOCATION; - bitmap_obstack_initialize (NULL); - - /* Run the tests; any failures will lead to an abort of the process. - Use "make selftests-gdb" to run under the debugger. */ - ::selftest::run_tests (); - - /* Cleanup. */ - bitmap_obstack_release (NULL); -#else - inform (UNKNOWN_LOCATION, "self-tests are not enabled in this build"); -#endif /* #if CHECKING_P */ -} - -/* Entry point of cc1, cc1plus, jc1, f771, etc. - Exit code is FATAL_EXIT_CODE if can't open files or if there were - any errors, or SUCCESS_EXIT_CODE if compilation succeeded. - - It is not safe to call this function more than once. */ - -int -toplev::main (int argc, char **argv) -{ - /* Parsing and gimplification sometimes need quite large stack. - Increase stack size limits if possible. */ - stack_limit_increase (64 * 1024 * 1024); - - expandargv (&argc, &argv); - - /* Initialization of GCC's environment, and diagnostics. */ - general_init (argv[0], m_init_signals); - - /* One-off initialization of options that does not need to be - repeated when options are added for particular functions. */ - init_options_once (); - init_opts_obstack (); - - /* Initialize global options structures; this must be repeated for - each structure used for parsing options. */ - init_options_struct (&global_options, &global_options_set); - lang_hooks.init_options_struct (&global_options); - - /* Init GGC heuristics must be caller after we initialize - options. */ - init_ggc_heuristics (); - - /* Convert the options to an array. */ - decode_cmdline_options_to_array_default_mask (argc, - CONST_CAST2 (const char **, - char **, argv), - &save_decoded_options, - &save_decoded_options_count); - - /* Save Optimization decoded options. */ - save_opt_decoded_options = new vec<cl_decoded_option> (); - for (unsigned i = 1; i < save_decoded_options_count; ++i) - if (save_decoded_options[i].opt_index < cl_options_count - && cl_options[save_decoded_options[i].opt_index].flags & CL_OPTIMIZATION) - save_opt_decoded_options->safe_push (save_decoded_options[i]); - - /* Perform language-specific options initialization. */ - lang_hooks.init_options (save_decoded_options_count, save_decoded_options); - - /* Parse the options and do minimal processing; basically just - enough to default flags appropriately. */ - decode_options (&global_options, &global_options_set, - save_decoded_options, save_decoded_options_count, - UNKNOWN_LOCATION, global_dc, - targetm.target_option.override); - - handle_common_deferred_options (); - - init_local_tick (); - - initialize_plugins (); - - if (version_flag) - print_version (stderr, "", true); - - if (help_flag) - print_plugins_help (stderr, ""); - - /* Exit early if we can (e.g. -help). */ - if (!exit_after_options) - { - /* Just in case lang_hooks.post_options ends up calling a debug_hook. - This can happen with incorrect pre-processed input. */ - debug_hooks = &do_nothing_debug_hooks; - /* Allow the front end to perform consistency checks and do further - initialization based on the command line options. This hook also - sets the original filename if appropriate (e.g. foo.i -> foo.c) - so we can correctly initialize debug output. */ - bool no_backend = lang_hooks.post_options (&main_input_filename); - - process_options (no_backend); - - if (m_use_TV_TOTAL) - start_timevars (); - do_compile (no_backend); - - if (flag_self_test) - { - if (no_backend) - error_at (UNKNOWN_LOCATION, "self-tests incompatible with %<-E%>"); - else - run_self_tests (); - } - } - - if (warningcount || errorcount || werrorcount) - print_ignored_options (); - - /* Invoke registered plugin callbacks if any. Some plugins could - emit some diagnostics here. */ - invoke_plugin_callbacks (PLUGIN_FINISH, NULL); - - if (flag_diagnostics_generate_patch) - { - gcc_assert (global_dc->edit_context_ptr); - - pretty_printer pp; - pp_show_color (&pp) = pp_show_color (global_dc->printer); - global_dc->edit_context_ptr->print_diff (&pp, true); - pp_flush (&pp); - } - - diagnostic_finish (global_dc); - - finalize_plugins (); - - after_memory_report = true; - - if (seen_error () || werrorcount) - return (FATAL_EXIT_CODE); - - return (SUCCESS_EXIT_CODE); -} - -/* For those that want to, this function aims to clean up enough state that - you can call toplev::main again. */ -void -toplev::finalize (void) -{ - rtl_initialized = false; - this_target_rtl->target_specific_initialized = false; - - /* Needs to be called before cgraph_c_finalize since it uses symtab. */ - ipa_reference_c_finalize (); - ipa_fnsummary_c_finalize (); - ipa_modref_c_finalize (); - ipa_edge_modifications_finalize (); - - cgraph_c_finalize (); - cgraphunit_c_finalize (); - symtab_thunks_cc_finalize (); - dwarf2out_c_finalize (); - gcse_c_finalize (); - ipa_cp_c_finalize (); - ira_costs_c_finalize (); - - /* save_decoded_options uses opts_obstack, so these must - be cleaned up together. */ - obstack_free (&opts_obstack, NULL); - XDELETEVEC (save_decoded_options); - save_decoded_options = NULL; - save_decoded_options_count = 0; - - /* Clean up the context (and pass_manager etc). */ - delete g; - g = NULL; - -} |