aboutsummaryrefslogtreecommitdiff
path: root/gcc/toplev.c
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2022-01-14 16:56:44 +0100
committerMartin Liska <mliska@suse.cz>2022-01-17 22:12:04 +0100
commit5c69acb32329d49e58c26fa41ae74229a52b9106 (patch)
treeddb05f9d73afb6f998457d2ac4b720e3b3b60483 /gcc/toplev.c
parent490e23032baaece71f2ec09fa1805064b150fbc2 (diff)
downloadgcc-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.c2383
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;
-
-}