diff options
author | Martin Liska <mliska@suse.cz> | 2022-01-14 16:56:44 +0100 |
---|---|---|
committer | Martin Liska <mliska@suse.cz> | 2022-01-17 22:12:04 +0100 |
commit | 5c69acb32329d49e58c26fa41ae74229a52b9106 (patch) | |
tree | ddb05f9d73afb6f998457d2ac4b720e3b3b60483 /gcc/print-rtl.c | |
parent | 490e23032baaece71f2ec09fa1805064b150fbc2 (diff) | |
download | gcc-5c69acb32329d49e58c26fa41ae74229a52b9106.zip gcc-5c69acb32329d49e58c26fa41ae74229a52b9106.tar.gz gcc-5c69acb32329d49e58c26fa41ae74229a52b9106.tar.bz2 |
Rename .c files to .cc files.
gcc/ada/ChangeLog:
* adadecode.c: Moved to...
* adadecode.cc: ...here.
* affinity.c: Moved to...
* affinity.cc: ...here.
* argv-lynxos178-raven-cert.c: Moved to...
* argv-lynxos178-raven-cert.cc: ...here.
* argv.c: Moved to...
* argv.cc: ...here.
* aux-io.c: Moved to...
* aux-io.cc: ...here.
* cio.c: Moved to...
* cio.cc: ...here.
* cstreams.c: Moved to...
* cstreams.cc: ...here.
* env.c: Moved to...
* env.cc: ...here.
* exit.c: Moved to...
* exit.cc: ...here.
* expect.c: Moved to...
* expect.cc: ...here.
* final.c: Moved to...
* final.cc: ...here.
* gcc-interface/cuintp.c: Moved to...
* gcc-interface/cuintp.cc: ...here.
* gcc-interface/decl.c: Moved to...
* gcc-interface/decl.cc: ...here.
* gcc-interface/misc.c: Moved to...
* gcc-interface/misc.cc: ...here.
* gcc-interface/targtyps.c: Moved to...
* gcc-interface/targtyps.cc: ...here.
* gcc-interface/trans.c: Moved to...
* gcc-interface/trans.cc: ...here.
* gcc-interface/utils.c: Moved to...
* gcc-interface/utils.cc: ...here.
* gcc-interface/utils2.c: Moved to...
* gcc-interface/utils2.cc: ...here.
* init.c: Moved to...
* init.cc: ...here.
* initialize.c: Moved to...
* initialize.cc: ...here.
* libgnarl/thread.c: Moved to...
* libgnarl/thread.cc: ...here.
* link.c: Moved to...
* link.cc: ...here.
* locales.c: Moved to...
* locales.cc: ...here.
* mkdir.c: Moved to...
* mkdir.cc: ...here.
* raise.c: Moved to...
* raise.cc: ...here.
* rtfinal.c: Moved to...
* rtfinal.cc: ...here.
* rtinit.c: Moved to...
* rtinit.cc: ...here.
* seh_init.c: Moved to...
* seh_init.cc: ...here.
* sigtramp-armdroid.c: Moved to...
* sigtramp-armdroid.cc: ...here.
* sigtramp-ios.c: Moved to...
* sigtramp-ios.cc: ...here.
* sigtramp-qnx.c: Moved to...
* sigtramp-qnx.cc: ...here.
* sigtramp-vxworks.c: Moved to...
* sigtramp-vxworks.cc: ...here.
* socket.c: Moved to...
* socket.cc: ...here.
* tracebak.c: Moved to...
* tracebak.cc: ...here.
* version.c: Moved to...
* version.cc: ...here.
* vx_stack_info.c: Moved to...
* vx_stack_info.cc: ...here.
gcc/ChangeLog:
* adjust-alignment.c: Moved to...
* adjust-alignment.cc: ...here.
* alias.c: Moved to...
* alias.cc: ...here.
* alloc-pool.c: Moved to...
* alloc-pool.cc: ...here.
* asan.c: Moved to...
* asan.cc: ...here.
* attribs.c: Moved to...
* attribs.cc: ...here.
* auto-inc-dec.c: Moved to...
* auto-inc-dec.cc: ...here.
* auto-profile.c: Moved to...
* auto-profile.cc: ...here.
* bb-reorder.c: Moved to...
* bb-reorder.cc: ...here.
* bitmap.c: Moved to...
* bitmap.cc: ...here.
* btfout.c: Moved to...
* btfout.cc: ...here.
* builtins.c: Moved to...
* builtins.cc: ...here.
* caller-save.c: Moved to...
* caller-save.cc: ...here.
* calls.c: Moved to...
* calls.cc: ...here.
* ccmp.c: Moved to...
* ccmp.cc: ...here.
* cfg.c: Moved to...
* cfg.cc: ...here.
* cfganal.c: Moved to...
* cfganal.cc: ...here.
* cfgbuild.c: Moved to...
* cfgbuild.cc: ...here.
* cfgcleanup.c: Moved to...
* cfgcleanup.cc: ...here.
* cfgexpand.c: Moved to...
* cfgexpand.cc: ...here.
* cfghooks.c: Moved to...
* cfghooks.cc: ...here.
* cfgloop.c: Moved to...
* cfgloop.cc: ...here.
* cfgloopanal.c: Moved to...
* cfgloopanal.cc: ...here.
* cfgloopmanip.c: Moved to...
* cfgloopmanip.cc: ...here.
* cfgrtl.c: Moved to...
* cfgrtl.cc: ...here.
* cgraph.c: Moved to...
* cgraph.cc: ...here.
* cgraphbuild.c: Moved to...
* cgraphbuild.cc: ...here.
* cgraphclones.c: Moved to...
* cgraphclones.cc: ...here.
* cgraphunit.c: Moved to...
* cgraphunit.cc: ...here.
* collect-utils.c: Moved to...
* collect-utils.cc: ...here.
* collect2-aix.c: Moved to...
* collect2-aix.cc: ...here.
* collect2.c: Moved to...
* collect2.cc: ...here.
* combine-stack-adj.c: Moved to...
* combine-stack-adj.cc: ...here.
* combine.c: Moved to...
* combine.cc: ...here.
* common/common-targhooks.c: Moved to...
* common/common-targhooks.cc: ...here.
* common/config/aarch64/aarch64-common.c: Moved to...
* common/config/aarch64/aarch64-common.cc: ...here.
* common/config/alpha/alpha-common.c: Moved to...
* common/config/alpha/alpha-common.cc: ...here.
* common/config/arc/arc-common.c: Moved to...
* common/config/arc/arc-common.cc: ...here.
* common/config/arm/arm-common.c: Moved to...
* common/config/arm/arm-common.cc: ...here.
* common/config/avr/avr-common.c: Moved to...
* common/config/avr/avr-common.cc: ...here.
* common/config/bfin/bfin-common.c: Moved to...
* common/config/bfin/bfin-common.cc: ...here.
* common/config/bpf/bpf-common.c: Moved to...
* common/config/bpf/bpf-common.cc: ...here.
* common/config/c6x/c6x-common.c: Moved to...
* common/config/c6x/c6x-common.cc: ...here.
* common/config/cr16/cr16-common.c: Moved to...
* common/config/cr16/cr16-common.cc: ...here.
* common/config/cris/cris-common.c: Moved to...
* common/config/cris/cris-common.cc: ...here.
* common/config/csky/csky-common.c: Moved to...
* common/config/csky/csky-common.cc: ...here.
* common/config/default-common.c: Moved to...
* common/config/default-common.cc: ...here.
* common/config/epiphany/epiphany-common.c: Moved to...
* common/config/epiphany/epiphany-common.cc: ...here.
* common/config/fr30/fr30-common.c: Moved to...
* common/config/fr30/fr30-common.cc: ...here.
* common/config/frv/frv-common.c: Moved to...
* common/config/frv/frv-common.cc: ...here.
* common/config/gcn/gcn-common.c: Moved to...
* common/config/gcn/gcn-common.cc: ...here.
* common/config/h8300/h8300-common.c: Moved to...
* common/config/h8300/h8300-common.cc: ...here.
* common/config/i386/i386-common.c: Moved to...
* common/config/i386/i386-common.cc: ...here.
* common/config/ia64/ia64-common.c: Moved to...
* common/config/ia64/ia64-common.cc: ...here.
* common/config/iq2000/iq2000-common.c: Moved to...
* common/config/iq2000/iq2000-common.cc: ...here.
* common/config/lm32/lm32-common.c: Moved to...
* common/config/lm32/lm32-common.cc: ...here.
* common/config/m32r/m32r-common.c: Moved to...
* common/config/m32r/m32r-common.cc: ...here.
* common/config/m68k/m68k-common.c: Moved to...
* common/config/m68k/m68k-common.cc: ...here.
* common/config/mcore/mcore-common.c: Moved to...
* common/config/mcore/mcore-common.cc: ...here.
* common/config/microblaze/microblaze-common.c: Moved to...
* common/config/microblaze/microblaze-common.cc: ...here.
* common/config/mips/mips-common.c: Moved to...
* common/config/mips/mips-common.cc: ...here.
* common/config/mmix/mmix-common.c: Moved to...
* common/config/mmix/mmix-common.cc: ...here.
* common/config/mn10300/mn10300-common.c: Moved to...
* common/config/mn10300/mn10300-common.cc: ...here.
* common/config/msp430/msp430-common.c: Moved to...
* common/config/msp430/msp430-common.cc: ...here.
* common/config/nds32/nds32-common.c: Moved to...
* common/config/nds32/nds32-common.cc: ...here.
* common/config/nios2/nios2-common.c: Moved to...
* common/config/nios2/nios2-common.cc: ...here.
* common/config/nvptx/nvptx-common.c: Moved to...
* common/config/nvptx/nvptx-common.cc: ...here.
* common/config/or1k/or1k-common.c: Moved to...
* common/config/or1k/or1k-common.cc: ...here.
* common/config/pa/pa-common.c: Moved to...
* common/config/pa/pa-common.cc: ...here.
* common/config/pdp11/pdp11-common.c: Moved to...
* common/config/pdp11/pdp11-common.cc: ...here.
* common/config/pru/pru-common.c: Moved to...
* common/config/pru/pru-common.cc: ...here.
* common/config/riscv/riscv-common.c: Moved to...
* common/config/riscv/riscv-common.cc: ...here.
* common/config/rs6000/rs6000-common.c: Moved to...
* common/config/rs6000/rs6000-common.cc: ...here.
* common/config/rx/rx-common.c: Moved to...
* common/config/rx/rx-common.cc: ...here.
* common/config/s390/s390-common.c: Moved to...
* common/config/s390/s390-common.cc: ...here.
* common/config/sh/sh-common.c: Moved to...
* common/config/sh/sh-common.cc: ...here.
* common/config/sparc/sparc-common.c: Moved to...
* common/config/sparc/sparc-common.cc: ...here.
* common/config/tilegx/tilegx-common.c: Moved to...
* common/config/tilegx/tilegx-common.cc: ...here.
* common/config/tilepro/tilepro-common.c: Moved to...
* common/config/tilepro/tilepro-common.cc: ...here.
* common/config/v850/v850-common.c: Moved to...
* common/config/v850/v850-common.cc: ...here.
* common/config/vax/vax-common.c: Moved to...
* common/config/vax/vax-common.cc: ...here.
* common/config/visium/visium-common.c: Moved to...
* common/config/visium/visium-common.cc: ...here.
* common/config/xstormy16/xstormy16-common.c: Moved to...
* common/config/xstormy16/xstormy16-common.cc: ...here.
* common/config/xtensa/xtensa-common.c: Moved to...
* common/config/xtensa/xtensa-common.cc: ...here.
* compare-elim.c: Moved to...
* compare-elim.cc: ...here.
* config/aarch64/aarch64-bti-insert.c: Moved to...
* config/aarch64/aarch64-bti-insert.cc: ...here.
* config/aarch64/aarch64-builtins.c: Moved to...
* config/aarch64/aarch64-builtins.cc: ...here.
* config/aarch64/aarch64-c.c: Moved to...
* config/aarch64/aarch64-c.cc: ...here.
* config/aarch64/aarch64-d.c: Moved to...
* config/aarch64/aarch64-d.cc: ...here.
* config/aarch64/aarch64.c: Moved to...
* config/aarch64/aarch64.cc: ...here.
* config/aarch64/cortex-a57-fma-steering.c: Moved to...
* config/aarch64/cortex-a57-fma-steering.cc: ...here.
* config/aarch64/driver-aarch64.c: Moved to...
* config/aarch64/driver-aarch64.cc: ...here.
* config/aarch64/falkor-tag-collision-avoidance.c: Moved to...
* config/aarch64/falkor-tag-collision-avoidance.cc: ...here.
* config/aarch64/host-aarch64-darwin.c: Moved to...
* config/aarch64/host-aarch64-darwin.cc: ...here.
* config/alpha/alpha.c: Moved to...
* config/alpha/alpha.cc: ...here.
* config/alpha/driver-alpha.c: Moved to...
* config/alpha/driver-alpha.cc: ...here.
* config/arc/arc-c.c: Moved to...
* config/arc/arc-c.cc: ...here.
* config/arc/arc.c: Moved to...
* config/arc/arc.cc: ...here.
* config/arc/driver-arc.c: Moved to...
* config/arc/driver-arc.cc: ...here.
* config/arm/aarch-common.c: Moved to...
* config/arm/aarch-common.cc: ...here.
* config/arm/arm-builtins.c: Moved to...
* config/arm/arm-builtins.cc: ...here.
* config/arm/arm-c.c: Moved to...
* config/arm/arm-c.cc: ...here.
* config/arm/arm-d.c: Moved to...
* config/arm/arm-d.cc: ...here.
* config/arm/arm.c: Moved to...
* config/arm/arm.cc: ...here.
* config/arm/driver-arm.c: Moved to...
* config/arm/driver-arm.cc: ...here.
* config/avr/avr-c.c: Moved to...
* config/avr/avr-c.cc: ...here.
* config/avr/avr-devices.c: Moved to...
* config/avr/avr-devices.cc: ...here.
* config/avr/avr-log.c: Moved to...
* config/avr/avr-log.cc: ...here.
* config/avr/avr.c: Moved to...
* config/avr/avr.cc: ...here.
* config/avr/driver-avr.c: Moved to...
* config/avr/driver-avr.cc: ...here.
* config/avr/gen-avr-mmcu-specs.c: Moved to...
* config/avr/gen-avr-mmcu-specs.cc: ...here.
* config/avr/gen-avr-mmcu-texi.c: Moved to...
* config/avr/gen-avr-mmcu-texi.cc: ...here.
* config/bfin/bfin.c: Moved to...
* config/bfin/bfin.cc: ...here.
* config/bpf/bpf.c: Moved to...
* config/bpf/bpf.cc: ...here.
* config/bpf/coreout.c: Moved to...
* config/bpf/coreout.cc: ...here.
* config/c6x/c6x.c: Moved to...
* config/c6x/c6x.cc: ...here.
* config/cr16/cr16.c: Moved to...
* config/cr16/cr16.cc: ...here.
* config/cris/cris.c: Moved to...
* config/cris/cris.cc: ...here.
* config/csky/csky.c: Moved to...
* config/csky/csky.cc: ...here.
* config/darwin-c.c: Moved to...
* config/darwin-c.cc: ...here.
* config/darwin-d.c: Moved to...
* config/darwin-d.cc: ...here.
* config/darwin-driver.c: Moved to...
* config/darwin-driver.cc: ...here.
* config/darwin-f.c: Moved to...
* config/darwin-f.cc: ...here.
* config/darwin.c: Moved to...
* config/darwin.cc: ...here.
* config/default-c.c: Moved to...
* config/default-c.cc: ...here.
* config/default-d.c: Moved to...
* config/default-d.cc: ...here.
* config/dragonfly-d.c: Moved to...
* config/dragonfly-d.cc: ...here.
* config/epiphany/epiphany.c: Moved to...
* config/epiphany/epiphany.cc: ...here.
* config/epiphany/mode-switch-use.c: Moved to...
* config/epiphany/mode-switch-use.cc: ...here.
* config/epiphany/resolve-sw-modes.c: Moved to...
* config/epiphany/resolve-sw-modes.cc: ...here.
* config/fr30/fr30.c: Moved to...
* config/fr30/fr30.cc: ...here.
* config/freebsd-d.c: Moved to...
* config/freebsd-d.cc: ...here.
* config/frv/frv.c: Moved to...
* config/frv/frv.cc: ...here.
* config/ft32/ft32.c: Moved to...
* config/ft32/ft32.cc: ...here.
* config/gcn/driver-gcn.c: Moved to...
* config/gcn/driver-gcn.cc: ...here.
* config/gcn/gcn-run.c: Moved to...
* config/gcn/gcn-run.cc: ...here.
* config/gcn/gcn-tree.c: Moved to...
* config/gcn/gcn-tree.cc: ...here.
* config/gcn/gcn.c: Moved to...
* config/gcn/gcn.cc: ...here.
* config/gcn/mkoffload.c: Moved to...
* config/gcn/mkoffload.cc: ...here.
* config/glibc-c.c: Moved to...
* config/glibc-c.cc: ...here.
* config/glibc-d.c: Moved to...
* config/glibc-d.cc: ...here.
* config/h8300/h8300.c: Moved to...
* config/h8300/h8300.cc: ...here.
* config/host-darwin.c: Moved to...
* config/host-darwin.cc: ...here.
* config/host-hpux.c: Moved to...
* config/host-hpux.cc: ...here.
* config/host-linux.c: Moved to...
* config/host-linux.cc: ...here.
* config/host-netbsd.c: Moved to...
* config/host-netbsd.cc: ...here.
* config/host-openbsd.c: Moved to...
* config/host-openbsd.cc: ...here.
* config/host-solaris.c: Moved to...
* config/host-solaris.cc: ...here.
* config/i386/djgpp.c: Moved to...
* config/i386/djgpp.cc: ...here.
* config/i386/driver-i386.c: Moved to...
* config/i386/driver-i386.cc: ...here.
* config/i386/driver-mingw32.c: Moved to...
* config/i386/driver-mingw32.cc: ...here.
* config/i386/gnu-property.c: Moved to...
* config/i386/gnu-property.cc: ...here.
* config/i386/host-cygwin.c: Moved to...
* config/i386/host-cygwin.cc: ...here.
* config/i386/host-i386-darwin.c: Moved to...
* config/i386/host-i386-darwin.cc: ...here.
* config/i386/host-mingw32.c: Moved to...
* config/i386/host-mingw32.cc: ...here.
* config/i386/i386-builtins.c: Moved to...
* config/i386/i386-builtins.cc: ...here.
* config/i386/i386-c.c: Moved to...
* config/i386/i386-c.cc: ...here.
* config/i386/i386-d.c: Moved to...
* config/i386/i386-d.cc: ...here.
* config/i386/i386-expand.c: Moved to...
* config/i386/i386-expand.cc: ...here.
* config/i386/i386-features.c: Moved to...
* config/i386/i386-features.cc: ...here.
* config/i386/i386-options.c: Moved to...
* config/i386/i386-options.cc: ...here.
* config/i386/i386.c: Moved to...
* config/i386/i386.cc: ...here.
* config/i386/intelmic-mkoffload.c: Moved to...
* config/i386/intelmic-mkoffload.cc: ...here.
* config/i386/msformat-c.c: Moved to...
* config/i386/msformat-c.cc: ...here.
* config/i386/winnt-cxx.c: Moved to...
* config/i386/winnt-cxx.cc: ...here.
* config/i386/winnt-d.c: Moved to...
* config/i386/winnt-d.cc: ...here.
* config/i386/winnt-stubs.c: Moved to...
* config/i386/winnt-stubs.cc: ...here.
* config/i386/winnt.c: Moved to...
* config/i386/winnt.cc: ...here.
* config/i386/x86-tune-sched-atom.c: Moved to...
* config/i386/x86-tune-sched-atom.cc: ...here.
* config/i386/x86-tune-sched-bd.c: Moved to...
* config/i386/x86-tune-sched-bd.cc: ...here.
* config/i386/x86-tune-sched-core.c: Moved to...
* config/i386/x86-tune-sched-core.cc: ...here.
* config/i386/x86-tune-sched.c: Moved to...
* config/i386/x86-tune-sched.cc: ...here.
* config/ia64/ia64-c.c: Moved to...
* config/ia64/ia64-c.cc: ...here.
* config/ia64/ia64.c: Moved to...
* config/ia64/ia64.cc: ...here.
* config/iq2000/iq2000.c: Moved to...
* config/iq2000/iq2000.cc: ...here.
* config/linux.c: Moved to...
* config/linux.cc: ...here.
* config/lm32/lm32.c: Moved to...
* config/lm32/lm32.cc: ...here.
* config/m32c/m32c-pragma.c: Moved to...
* config/m32c/m32c-pragma.cc: ...here.
* config/m32c/m32c.c: Moved to...
* config/m32c/m32c.cc: ...here.
* config/m32r/m32r.c: Moved to...
* config/m32r/m32r.cc: ...here.
* config/m68k/m68k.c: Moved to...
* config/m68k/m68k.cc: ...here.
* config/mcore/mcore.c: Moved to...
* config/mcore/mcore.cc: ...here.
* config/microblaze/microblaze-c.c: Moved to...
* config/microblaze/microblaze-c.cc: ...here.
* config/microblaze/microblaze.c: Moved to...
* config/microblaze/microblaze.cc: ...here.
* config/mips/driver-native.c: Moved to...
* config/mips/driver-native.cc: ...here.
* config/mips/frame-header-opt.c: Moved to...
* config/mips/frame-header-opt.cc: ...here.
* config/mips/mips-d.c: Moved to...
* config/mips/mips-d.cc: ...here.
* config/mips/mips.c: Moved to...
* config/mips/mips.cc: ...here.
* config/mmix/mmix.c: Moved to...
* config/mmix/mmix.cc: ...here.
* config/mn10300/mn10300.c: Moved to...
* config/mn10300/mn10300.cc: ...here.
* config/moxie/moxie.c: Moved to...
* config/moxie/moxie.cc: ...here.
* config/msp430/driver-msp430.c: Moved to...
* config/msp430/driver-msp430.cc: ...here.
* config/msp430/msp430-c.c: Moved to...
* config/msp430/msp430-c.cc: ...here.
* config/msp430/msp430-devices.c: Moved to...
* config/msp430/msp430-devices.cc: ...here.
* config/msp430/msp430.c: Moved to...
* config/msp430/msp430.cc: ...here.
* config/nds32/nds32-cost.c: Moved to...
* config/nds32/nds32-cost.cc: ...here.
* config/nds32/nds32-fp-as-gp.c: Moved to...
* config/nds32/nds32-fp-as-gp.cc: ...here.
* config/nds32/nds32-intrinsic.c: Moved to...
* config/nds32/nds32-intrinsic.cc: ...here.
* config/nds32/nds32-isr.c: Moved to...
* config/nds32/nds32-isr.cc: ...here.
* config/nds32/nds32-md-auxiliary.c: Moved to...
* config/nds32/nds32-md-auxiliary.cc: ...here.
* config/nds32/nds32-memory-manipulation.c: Moved to...
* config/nds32/nds32-memory-manipulation.cc: ...here.
* config/nds32/nds32-pipelines-auxiliary.c: Moved to...
* config/nds32/nds32-pipelines-auxiliary.cc: ...here.
* config/nds32/nds32-predicates.c: Moved to...
* config/nds32/nds32-predicates.cc: ...here.
* config/nds32/nds32-relax-opt.c: Moved to...
* config/nds32/nds32-relax-opt.cc: ...here.
* config/nds32/nds32-utils.c: Moved to...
* config/nds32/nds32-utils.cc: ...here.
* config/nds32/nds32.c: Moved to...
* config/nds32/nds32.cc: ...here.
* config/netbsd-d.c: Moved to...
* config/netbsd-d.cc: ...here.
* config/netbsd.c: Moved to...
* config/netbsd.cc: ...here.
* config/nios2/nios2.c: Moved to...
* config/nios2/nios2.cc: ...here.
* config/nvptx/mkoffload.c: Moved to...
* config/nvptx/mkoffload.cc: ...here.
* config/nvptx/nvptx-c.c: Moved to...
* config/nvptx/nvptx-c.cc: ...here.
* config/nvptx/nvptx.c: Moved to...
* config/nvptx/nvptx.cc: ...here.
* config/openbsd-d.c: Moved to...
* config/openbsd-d.cc: ...here.
* config/or1k/or1k.c: Moved to...
* config/or1k/or1k.cc: ...here.
* config/pa/pa-d.c: Moved to...
* config/pa/pa-d.cc: ...here.
* config/pa/pa.c: Moved to...
* config/pa/pa.cc: ...here.
* config/pdp11/pdp11.c: Moved to...
* config/pdp11/pdp11.cc: ...here.
* config/pru/pru-passes.c: Moved to...
* config/pru/pru-passes.cc: ...here.
* config/pru/pru-pragma.c: Moved to...
* config/pru/pru-pragma.cc: ...here.
* config/pru/pru.c: Moved to...
* config/pru/pru.cc: ...here.
* config/riscv/riscv-builtins.c: Moved to...
* config/riscv/riscv-builtins.cc: ...here.
* config/riscv/riscv-c.c: Moved to...
* config/riscv/riscv-c.cc: ...here.
* config/riscv/riscv-d.c: Moved to...
* config/riscv/riscv-d.cc: ...here.
* config/riscv/riscv-shorten-memrefs.c: Moved to...
* config/riscv/riscv-shorten-memrefs.cc: ...here.
* config/riscv/riscv-sr.c: Moved to...
* config/riscv/riscv-sr.cc: ...here.
* config/riscv/riscv.c: Moved to...
* config/riscv/riscv.cc: ...here.
* config/rl78/rl78-c.c: Moved to...
* config/rl78/rl78-c.cc: ...here.
* config/rl78/rl78.c: Moved to...
* config/rl78/rl78.cc: ...here.
* config/rs6000/driver-rs6000.c: Moved to...
* config/rs6000/driver-rs6000.cc: ...here.
* config/rs6000/host-darwin.c: Moved to...
* config/rs6000/host-darwin.cc: ...here.
* config/rs6000/host-ppc64-darwin.c: Moved to...
* config/rs6000/host-ppc64-darwin.cc: ...here.
* config/rs6000/rbtree.c: Moved to...
* config/rs6000/rbtree.cc: ...here.
* config/rs6000/rs6000-c.c: Moved to...
* config/rs6000/rs6000-c.cc: ...here.
* config/rs6000/rs6000-call.c: Moved to...
* config/rs6000/rs6000-call.cc: ...here.
* config/rs6000/rs6000-d.c: Moved to...
* config/rs6000/rs6000-d.cc: ...here.
* config/rs6000/rs6000-gen-builtins.c: Moved to...
* config/rs6000/rs6000-gen-builtins.cc: ...here.
* config/rs6000/rs6000-linux.c: Moved to...
* config/rs6000/rs6000-linux.cc: ...here.
* config/rs6000/rs6000-logue.c: Moved to...
* config/rs6000/rs6000-logue.cc: ...here.
* config/rs6000/rs6000-p8swap.c: Moved to...
* config/rs6000/rs6000-p8swap.cc: ...here.
* config/rs6000/rs6000-pcrel-opt.c: Moved to...
* config/rs6000/rs6000-pcrel-opt.cc: ...here.
* config/rs6000/rs6000-string.c: Moved to...
* config/rs6000/rs6000-string.cc: ...here.
* config/rs6000/rs6000.c: Moved to...
* config/rs6000/rs6000.cc: ...here.
* config/rx/rx.c: Moved to...
* config/rx/rx.cc: ...here.
* config/s390/driver-native.c: Moved to...
* config/s390/driver-native.cc: ...here.
* config/s390/s390-c.c: Moved to...
* config/s390/s390-c.cc: ...here.
* config/s390/s390-d.c: Moved to...
* config/s390/s390-d.cc: ...here.
* config/s390/s390.c: Moved to...
* config/s390/s390.cc: ...here.
* config/sh/divtab-sh4-300.c: Moved to...
* config/sh/divtab-sh4-300.cc: ...here.
* config/sh/divtab-sh4.c: Moved to...
* config/sh/divtab-sh4.cc: ...here.
* config/sh/divtab.c: Moved to...
* config/sh/divtab.cc: ...here.
* config/sh/sh-c.c: Moved to...
* config/sh/sh-c.cc: ...here.
* config/sh/sh.c: Moved to...
* config/sh/sh.cc: ...here.
* config/sol2-c.c: Moved to...
* config/sol2-c.cc: ...here.
* config/sol2-cxx.c: Moved to...
* config/sol2-cxx.cc: ...here.
* config/sol2-d.c: Moved to...
* config/sol2-d.cc: ...here.
* config/sol2-stubs.c: Moved to...
* config/sol2-stubs.cc: ...here.
* config/sol2.c: Moved to...
* config/sol2.cc: ...here.
* config/sparc/driver-sparc.c: Moved to...
* config/sparc/driver-sparc.cc: ...here.
* config/sparc/sparc-c.c: Moved to...
* config/sparc/sparc-c.cc: ...here.
* config/sparc/sparc-d.c: Moved to...
* config/sparc/sparc-d.cc: ...here.
* config/sparc/sparc.c: Moved to...
* config/sparc/sparc.cc: ...here.
* config/stormy16/stormy16.c: Moved to...
* config/stormy16/stormy16.cc: ...here.
* config/tilegx/mul-tables.c: Moved to...
* config/tilegx/mul-tables.cc: ...here.
* config/tilegx/tilegx-c.c: Moved to...
* config/tilegx/tilegx-c.cc: ...here.
* config/tilegx/tilegx.c: Moved to...
* config/tilegx/tilegx.cc: ...here.
* config/tilepro/mul-tables.c: Moved to...
* config/tilepro/mul-tables.cc: ...here.
* config/tilepro/tilepro-c.c: Moved to...
* config/tilepro/tilepro-c.cc: ...here.
* config/tilepro/tilepro.c: Moved to...
* config/tilepro/tilepro.cc: ...here.
* config/v850/v850-c.c: Moved to...
* config/v850/v850-c.cc: ...here.
* config/v850/v850.c: Moved to...
* config/v850/v850.cc: ...here.
* config/vax/vax.c: Moved to...
* config/vax/vax.cc: ...here.
* config/visium/visium.c: Moved to...
* config/visium/visium.cc: ...here.
* config/vms/vms-c.c: Moved to...
* config/vms/vms-c.cc: ...here.
* config/vms/vms-f.c: Moved to...
* config/vms/vms-f.cc: ...here.
* config/vms/vms.c: Moved to...
* config/vms/vms.cc: ...here.
* config/vxworks-c.c: Moved to...
* config/vxworks-c.cc: ...here.
* config/vxworks.c: Moved to...
* config/vxworks.cc: ...here.
* config/winnt-c.c: Moved to...
* config/winnt-c.cc: ...here.
* config/xtensa/xtensa.c: Moved to...
* config/xtensa/xtensa.cc: ...here.
* context.c: Moved to...
* context.cc: ...here.
* convert.c: Moved to...
* convert.cc: ...here.
* coverage.c: Moved to...
* coverage.cc: ...here.
* cppbuiltin.c: Moved to...
* cppbuiltin.cc: ...here.
* cppdefault.c: Moved to...
* cppdefault.cc: ...here.
* cprop.c: Moved to...
* cprop.cc: ...here.
* cse.c: Moved to...
* cse.cc: ...here.
* cselib.c: Moved to...
* cselib.cc: ...here.
* ctfc.c: Moved to...
* ctfc.cc: ...here.
* ctfout.c: Moved to...
* ctfout.cc: ...here.
* data-streamer-in.c: Moved to...
* data-streamer-in.cc: ...here.
* data-streamer-out.c: Moved to...
* data-streamer-out.cc: ...here.
* data-streamer.c: Moved to...
* data-streamer.cc: ...here.
* dbgcnt.c: Moved to...
* dbgcnt.cc: ...here.
* dbxout.c: Moved to...
* dbxout.cc: ...here.
* dce.c: Moved to...
* dce.cc: ...here.
* ddg.c: Moved to...
* ddg.cc: ...here.
* debug.c: Moved to...
* debug.cc: ...here.
* df-core.c: Moved to...
* df-core.cc: ...here.
* df-problems.c: Moved to...
* df-problems.cc: ...here.
* df-scan.c: Moved to...
* df-scan.cc: ...here.
* dfp.c: Moved to...
* dfp.cc: ...here.
* diagnostic-color.c: Moved to...
* diagnostic-color.cc: ...here.
* diagnostic-show-locus.c: Moved to...
* diagnostic-show-locus.cc: ...here.
* diagnostic-spec.c: Moved to...
* diagnostic-spec.cc: ...here.
* diagnostic.c: Moved to...
* diagnostic.cc: ...here.
* dojump.c: Moved to...
* dojump.cc: ...here.
* dominance.c: Moved to...
* dominance.cc: ...here.
* domwalk.c: Moved to...
* domwalk.cc: ...here.
* double-int.c: Moved to...
* double-int.cc: ...here.
* dse.c: Moved to...
* dse.cc: ...here.
* dumpfile.c: Moved to...
* dumpfile.cc: ...here.
* dwarf2asm.c: Moved to...
* dwarf2asm.cc: ...here.
* dwarf2cfi.c: Moved to...
* dwarf2cfi.cc: ...here.
* dwarf2ctf.c: Moved to...
* dwarf2ctf.cc: ...here.
* dwarf2out.c: Moved to...
* dwarf2out.cc: ...here.
* early-remat.c: Moved to...
* early-remat.cc: ...here.
* edit-context.c: Moved to...
* edit-context.cc: ...here.
* emit-rtl.c: Moved to...
* emit-rtl.cc: ...here.
* errors.c: Moved to...
* errors.cc: ...here.
* et-forest.c: Moved to...
* et-forest.cc: ...here.
* except.c: Moved to...
* except.cc: ...here.
* explow.c: Moved to...
* explow.cc: ...here.
* expmed.c: Moved to...
* expmed.cc: ...here.
* expr.c: Moved to...
* expr.cc: ...here.
* fibonacci_heap.c: Moved to...
* fibonacci_heap.cc: ...here.
* file-find.c: Moved to...
* file-find.cc: ...here.
* file-prefix-map.c: Moved to...
* file-prefix-map.cc: ...here.
* final.c: Moved to...
* final.cc: ...here.
* fixed-value.c: Moved to...
* fixed-value.cc: ...here.
* fold-const-call.c: Moved to...
* fold-const-call.cc: ...here.
* fold-const.c: Moved to...
* fold-const.cc: ...here.
* fp-test.c: Moved to...
* fp-test.cc: ...here.
* function-tests.c: Moved to...
* function-tests.cc: ...here.
* function.c: Moved to...
* function.cc: ...here.
* fwprop.c: Moved to...
* fwprop.cc: ...here.
* gcc-ar.c: Moved to...
* gcc-ar.cc: ...here.
* gcc-main.c: Moved to...
* gcc-main.cc: ...here.
* gcc-rich-location.c: Moved to...
* gcc-rich-location.cc: ...here.
* gcc.c: Moved to...
* gcc.cc: ...here.
* gcov-dump.c: Moved to...
* gcov-dump.cc: ...here.
* gcov-io.c: Moved to...
* gcov-io.cc: ...here.
* gcov-tool.c: Moved to...
* gcov-tool.cc: ...here.
* gcov.c: Moved to...
* gcov.cc: ...here.
* gcse-common.c: Moved to...
* gcse-common.cc: ...here.
* gcse.c: Moved to...
* gcse.cc: ...here.
* genattr-common.c: Moved to...
* genattr-common.cc: ...here.
* genattr.c: Moved to...
* genattr.cc: ...here.
* genattrtab.c: Moved to...
* genattrtab.cc: ...here.
* genautomata.c: Moved to...
* genautomata.cc: ...here.
* gencfn-macros.c: Moved to...
* gencfn-macros.cc: ...here.
* gencheck.c: Moved to...
* gencheck.cc: ...here.
* genchecksum.c: Moved to...
* genchecksum.cc: ...here.
* gencodes.c: Moved to...
* gencodes.cc: ...here.
* genconditions.c: Moved to...
* genconditions.cc: ...here.
* genconfig.c: Moved to...
* genconfig.cc: ...here.
* genconstants.c: Moved to...
* genconstants.cc: ...here.
* genemit.c: Moved to...
* genemit.cc: ...here.
* genenums.c: Moved to...
* genenums.cc: ...here.
* generic-match-head.c: Moved to...
* generic-match-head.cc: ...here.
* genextract.c: Moved to...
* genextract.cc: ...here.
* genflags.c: Moved to...
* genflags.cc: ...here.
* gengenrtl.c: Moved to...
* gengenrtl.cc: ...here.
* gengtype-parse.c: Moved to...
* gengtype-parse.cc: ...here.
* gengtype-state.c: Moved to...
* gengtype-state.cc: ...here.
* gengtype.c: Moved to...
* gengtype.cc: ...here.
* genhooks.c: Moved to...
* genhooks.cc: ...here.
* genmatch.c: Moved to...
* genmatch.cc: ...here.
* genmddeps.c: Moved to...
* genmddeps.cc: ...here.
* genmddump.c: Moved to...
* genmddump.cc: ...here.
* genmodes.c: Moved to...
* genmodes.cc: ...here.
* genopinit.c: Moved to...
* genopinit.cc: ...here.
* genoutput.c: Moved to...
* genoutput.cc: ...here.
* genpeep.c: Moved to...
* genpeep.cc: ...here.
* genpreds.c: Moved to...
* genpreds.cc: ...here.
* genrecog.c: Moved to...
* genrecog.cc: ...here.
* gensupport.c: Moved to...
* gensupport.cc: ...here.
* gentarget-def.c: Moved to...
* gentarget-def.cc: ...here.
* genversion.c: Moved to...
* genversion.cc: ...here.
* ggc-common.c: Moved to...
* ggc-common.cc: ...here.
* ggc-none.c: Moved to...
* ggc-none.cc: ...here.
* ggc-page.c: Moved to...
* ggc-page.cc: ...here.
* ggc-tests.c: Moved to...
* ggc-tests.cc: ...here.
* gimple-builder.c: Moved to...
* gimple-builder.cc: ...here.
* gimple-expr.c: Moved to...
* gimple-expr.cc: ...here.
* gimple-fold.c: Moved to...
* gimple-fold.cc: ...here.
* gimple-iterator.c: Moved to...
* gimple-iterator.cc: ...here.
* gimple-laddress.c: Moved to...
* gimple-laddress.cc: ...here.
* gimple-loop-jam.c: Moved to...
* gimple-loop-jam.cc: ...here.
* gimple-low.c: Moved to...
* gimple-low.cc: ...here.
* gimple-match-head.c: Moved to...
* gimple-match-head.cc: ...here.
* gimple-pretty-print.c: Moved to...
* gimple-pretty-print.cc: ...here.
* gimple-ssa-backprop.c: Moved to...
* gimple-ssa-backprop.cc: ...here.
* gimple-ssa-evrp-analyze.c: Moved to...
* gimple-ssa-evrp-analyze.cc: ...here.
* gimple-ssa-evrp.c: Moved to...
* gimple-ssa-evrp.cc: ...here.
* gimple-ssa-isolate-paths.c: Moved to...
* gimple-ssa-isolate-paths.cc: ...here.
* gimple-ssa-nonnull-compare.c: Moved to...
* gimple-ssa-nonnull-compare.cc: ...here.
* gimple-ssa-split-paths.c: Moved to...
* gimple-ssa-split-paths.cc: ...here.
* gimple-ssa-sprintf.c: Moved to...
* gimple-ssa-sprintf.cc: ...here.
* gimple-ssa-store-merging.c: Moved to...
* gimple-ssa-store-merging.cc: ...here.
* gimple-ssa-strength-reduction.c: Moved to...
* gimple-ssa-strength-reduction.cc: ...here.
* gimple-ssa-warn-alloca.c: Moved to...
* gimple-ssa-warn-alloca.cc: ...here.
* gimple-ssa-warn-restrict.c: Moved to...
* gimple-ssa-warn-restrict.cc: ...here.
* gimple-streamer-in.c: Moved to...
* gimple-streamer-in.cc: ...here.
* gimple-streamer-out.c: Moved to...
* gimple-streamer-out.cc: ...here.
* gimple-walk.c: Moved to...
* gimple-walk.cc: ...here.
* gimple-warn-recursion.c: Moved to...
* gimple-warn-recursion.cc: ...here.
* gimple.c: Moved to...
* gimple.cc: ...here.
* gimplify-me.c: Moved to...
* gimplify-me.cc: ...here.
* gimplify.c: Moved to...
* gimplify.cc: ...here.
* godump.c: Moved to...
* godump.cc: ...here.
* graph.c: Moved to...
* graph.cc: ...here.
* graphds.c: Moved to...
* graphds.cc: ...here.
* graphite-dependences.c: Moved to...
* graphite-dependences.cc: ...here.
* graphite-isl-ast-to-gimple.c: Moved to...
* graphite-isl-ast-to-gimple.cc: ...here.
* graphite-optimize-isl.c: Moved to...
* graphite-optimize-isl.cc: ...here.
* graphite-poly.c: Moved to...
* graphite-poly.cc: ...here.
* graphite-scop-detection.c: Moved to...
* graphite-scop-detection.cc: ...here.
* graphite-sese-to-poly.c: Moved to...
* graphite-sese-to-poly.cc: ...here.
* graphite.c: Moved to...
* graphite.cc: ...here.
* haifa-sched.c: Moved to...
* haifa-sched.cc: ...here.
* hash-map-tests.c: Moved to...
* hash-map-tests.cc: ...here.
* hash-set-tests.c: Moved to...
* hash-set-tests.cc: ...here.
* hash-table.c: Moved to...
* hash-table.cc: ...here.
* hooks.c: Moved to...
* hooks.cc: ...here.
* host-default.c: Moved to...
* host-default.cc: ...here.
* hw-doloop.c: Moved to...
* hw-doloop.cc: ...here.
* hwint.c: Moved to...
* hwint.cc: ...here.
* ifcvt.c: Moved to...
* ifcvt.cc: ...here.
* inchash.c: Moved to...
* inchash.cc: ...here.
* incpath.c: Moved to...
* incpath.cc: ...here.
* init-regs.c: Moved to...
* init-regs.cc: ...here.
* input.c: Moved to...
* input.cc: ...here.
* internal-fn.c: Moved to...
* internal-fn.cc: ...here.
* intl.c: Moved to...
* intl.cc: ...here.
* ipa-comdats.c: Moved to...
* ipa-comdats.cc: ...here.
* ipa-cp.c: Moved to...
* ipa-cp.cc: ...here.
* ipa-devirt.c: Moved to...
* ipa-devirt.cc: ...here.
* ipa-fnsummary.c: Moved to...
* ipa-fnsummary.cc: ...here.
* ipa-icf-gimple.c: Moved to...
* ipa-icf-gimple.cc: ...here.
* ipa-icf.c: Moved to...
* ipa-icf.cc: ...here.
* ipa-inline-analysis.c: Moved to...
* ipa-inline-analysis.cc: ...here.
* ipa-inline-transform.c: Moved to...
* ipa-inline-transform.cc: ...here.
* ipa-inline.c: Moved to...
* ipa-inline.cc: ...here.
* ipa-modref-tree.c: Moved to...
* ipa-modref-tree.cc: ...here.
* ipa-modref.c: Moved to...
* ipa-modref.cc: ...here.
* ipa-param-manipulation.c: Moved to...
* ipa-param-manipulation.cc: ...here.
* ipa-polymorphic-call.c: Moved to...
* ipa-polymorphic-call.cc: ...here.
* ipa-predicate.c: Moved to...
* ipa-predicate.cc: ...here.
* ipa-profile.c: Moved to...
* ipa-profile.cc: ...here.
* ipa-prop.c: Moved to...
* ipa-prop.cc: ...here.
* ipa-pure-const.c: Moved to...
* ipa-pure-const.cc: ...here.
* ipa-ref.c: Moved to...
* ipa-ref.cc: ...here.
* ipa-reference.c: Moved to...
* ipa-reference.cc: ...here.
* ipa-split.c: Moved to...
* ipa-split.cc: ...here.
* ipa-sra.c: Moved to...
* ipa-sra.cc: ...here.
* ipa-utils.c: Moved to...
* ipa-utils.cc: ...here.
* ipa-visibility.c: Moved to...
* ipa-visibility.cc: ...here.
* ipa.c: Moved to...
* ipa.cc: ...here.
* ira-build.c: Moved to...
* ira-build.cc: ...here.
* ira-color.c: Moved to...
* ira-color.cc: ...here.
* ira-conflicts.c: Moved to...
* ira-conflicts.cc: ...here.
* ira-costs.c: Moved to...
* ira-costs.cc: ...here.
* ira-emit.c: Moved to...
* ira-emit.cc: ...here.
* ira-lives.c: Moved to...
* ira-lives.cc: ...here.
* ira.c: Moved to...
* ira.cc: ...here.
* jump.c: Moved to...
* jump.cc: ...here.
* langhooks.c: Moved to...
* langhooks.cc: ...here.
* lcm.c: Moved to...
* lcm.cc: ...here.
* lists.c: Moved to...
* lists.cc: ...here.
* loop-doloop.c: Moved to...
* loop-doloop.cc: ...here.
* loop-init.c: Moved to...
* loop-init.cc: ...here.
* loop-invariant.c: Moved to...
* loop-invariant.cc: ...here.
* loop-iv.c: Moved to...
* loop-iv.cc: ...here.
* loop-unroll.c: Moved to...
* loop-unroll.cc: ...here.
* lower-subreg.c: Moved to...
* lower-subreg.cc: ...here.
* lra-assigns.c: Moved to...
* lra-assigns.cc: ...here.
* lra-coalesce.c: Moved to...
* lra-coalesce.cc: ...here.
* lra-constraints.c: Moved to...
* lra-constraints.cc: ...here.
* lra-eliminations.c: Moved to...
* lra-eliminations.cc: ...here.
* lra-lives.c: Moved to...
* lra-lives.cc: ...here.
* lra-remat.c: Moved to...
* lra-remat.cc: ...here.
* lra-spills.c: Moved to...
* lra-spills.cc: ...here.
* lra.c: Moved to...
* lra.cc: ...here.
* lto-cgraph.c: Moved to...
* lto-cgraph.cc: ...here.
* lto-compress.c: Moved to...
* lto-compress.cc: ...here.
* lto-opts.c: Moved to...
* lto-opts.cc: ...here.
* lto-section-in.c: Moved to...
* lto-section-in.cc: ...here.
* lto-section-out.c: Moved to...
* lto-section-out.cc: ...here.
* lto-streamer-in.c: Moved to...
* lto-streamer-in.cc: ...here.
* lto-streamer-out.c: Moved to...
* lto-streamer-out.cc: ...here.
* lto-streamer.c: Moved to...
* lto-streamer.cc: ...here.
* lto-wrapper.c: Moved to...
* lto-wrapper.cc: ...here.
* main.c: Moved to...
* main.cc: ...here.
* mcf.c: Moved to...
* mcf.cc: ...here.
* mode-switching.c: Moved to...
* mode-switching.cc: ...here.
* modulo-sched.c: Moved to...
* modulo-sched.cc: ...here.
* multiple_target.c: Moved to...
* multiple_target.cc: ...here.
* omp-expand.c: Moved to...
* omp-expand.cc: ...here.
* omp-general.c: Moved to...
* omp-general.cc: ...here.
* omp-low.c: Moved to...
* omp-low.cc: ...here.
* omp-offload.c: Moved to...
* omp-offload.cc: ...here.
* omp-simd-clone.c: Moved to...
* omp-simd-clone.cc: ...here.
* opt-suggestions.c: Moved to...
* opt-suggestions.cc: ...here.
* optabs-libfuncs.c: Moved to...
* optabs-libfuncs.cc: ...here.
* optabs-query.c: Moved to...
* optabs-query.cc: ...here.
* optabs-tree.c: Moved to...
* optabs-tree.cc: ...here.
* optabs.c: Moved to...
* optabs.cc: ...here.
* opts-common.c: Moved to...
* opts-common.cc: ...here.
* opts-global.c: Moved to...
* opts-global.cc: ...here.
* opts.c: Moved to...
* opts.cc: ...here.
* passes.c: Moved to...
* passes.cc: ...here.
* plugin.c: Moved to...
* plugin.cc: ...here.
* postreload-gcse.c: Moved to...
* postreload-gcse.cc: ...here.
* postreload.c: Moved to...
* postreload.cc: ...here.
* predict.c: Moved to...
* predict.cc: ...here.
* prefix.c: Moved to...
* prefix.cc: ...here.
* pretty-print.c: Moved to...
* pretty-print.cc: ...here.
* print-rtl-function.c: Moved to...
* print-rtl-function.cc: ...here.
* print-rtl.c: Moved to...
* print-rtl.cc: ...here.
* print-tree.c: Moved to...
* print-tree.cc: ...here.
* profile-count.c: Moved to...
* profile-count.cc: ...here.
* profile.c: Moved to...
* profile.cc: ...here.
* read-md.c: Moved to...
* read-md.cc: ...here.
* read-rtl-function.c: Moved to...
* read-rtl-function.cc: ...here.
* read-rtl.c: Moved to...
* read-rtl.cc: ...here.
* real.c: Moved to...
* real.cc: ...here.
* realmpfr.c: Moved to...
* realmpfr.cc: ...here.
* recog.c: Moved to...
* recog.cc: ...here.
* ree.c: Moved to...
* ree.cc: ...here.
* reg-stack.c: Moved to...
* reg-stack.cc: ...here.
* regcprop.c: Moved to...
* regcprop.cc: ...here.
* reginfo.c: Moved to...
* reginfo.cc: ...here.
* regrename.c: Moved to...
* regrename.cc: ...here.
* regstat.c: Moved to...
* regstat.cc: ...here.
* reload.c: Moved to...
* reload.cc: ...here.
* reload1.c: Moved to...
* reload1.cc: ...here.
* reorg.c: Moved to...
* reorg.cc: ...here.
* resource.c: Moved to...
* resource.cc: ...here.
* rtl-error.c: Moved to...
* rtl-error.cc: ...here.
* rtl-tests.c: Moved to...
* rtl-tests.cc: ...here.
* rtl.c: Moved to...
* rtl.cc: ...here.
* rtlanal.c: Moved to...
* rtlanal.cc: ...here.
* rtlhash.c: Moved to...
* rtlhash.cc: ...here.
* rtlhooks.c: Moved to...
* rtlhooks.cc: ...here.
* rtx-vector-builder.c: Moved to...
* rtx-vector-builder.cc: ...here.
* run-rtl-passes.c: Moved to...
* run-rtl-passes.cc: ...here.
* sancov.c: Moved to...
* sancov.cc: ...here.
* sanopt.c: Moved to...
* sanopt.cc: ...here.
* sbitmap.c: Moved to...
* sbitmap.cc: ...here.
* sched-deps.c: Moved to...
* sched-deps.cc: ...here.
* sched-ebb.c: Moved to...
* sched-ebb.cc: ...here.
* sched-rgn.c: Moved to...
* sched-rgn.cc: ...here.
* sel-sched-dump.c: Moved to...
* sel-sched-dump.cc: ...here.
* sel-sched-ir.c: Moved to...
* sel-sched-ir.cc: ...here.
* sel-sched.c: Moved to...
* sel-sched.cc: ...here.
* selftest-diagnostic.c: Moved to...
* selftest-diagnostic.cc: ...here.
* selftest-rtl.c: Moved to...
* selftest-rtl.cc: ...here.
* selftest-run-tests.c: Moved to...
* selftest-run-tests.cc: ...here.
* selftest.c: Moved to...
* selftest.cc: ...here.
* sese.c: Moved to...
* sese.cc: ...here.
* shrink-wrap.c: Moved to...
* shrink-wrap.cc: ...here.
* simplify-rtx.c: Moved to...
* simplify-rtx.cc: ...here.
* sparseset.c: Moved to...
* sparseset.cc: ...here.
* spellcheck-tree.c: Moved to...
* spellcheck-tree.cc: ...here.
* spellcheck.c: Moved to...
* spellcheck.cc: ...here.
* sreal.c: Moved to...
* sreal.cc: ...here.
* stack-ptr-mod.c: Moved to...
* stack-ptr-mod.cc: ...here.
* statistics.c: Moved to...
* statistics.cc: ...here.
* stmt.c: Moved to...
* stmt.cc: ...here.
* stor-layout.c: Moved to...
* stor-layout.cc: ...here.
* store-motion.c: Moved to...
* store-motion.cc: ...here.
* streamer-hooks.c: Moved to...
* streamer-hooks.cc: ...here.
* stringpool.c: Moved to...
* stringpool.cc: ...here.
* substring-locations.c: Moved to...
* substring-locations.cc: ...here.
* symtab.c: Moved to...
* symtab.cc: ...here.
* target-globals.c: Moved to...
* target-globals.cc: ...here.
* targhooks.c: Moved to...
* targhooks.cc: ...here.
* timevar.c: Moved to...
* timevar.cc: ...here.
* toplev.c: Moved to...
* toplev.cc: ...here.
* tracer.c: Moved to...
* tracer.cc: ...here.
* trans-mem.c: Moved to...
* trans-mem.cc: ...here.
* tree-affine.c: Moved to...
* tree-affine.cc: ...here.
* tree-call-cdce.c: Moved to...
* tree-call-cdce.cc: ...here.
* tree-cfg.c: Moved to...
* tree-cfg.cc: ...here.
* tree-cfgcleanup.c: Moved to...
* tree-cfgcleanup.cc: ...here.
* tree-chrec.c: Moved to...
* tree-chrec.cc: ...here.
* tree-complex.c: Moved to...
* tree-complex.cc: ...here.
* tree-data-ref.c: Moved to...
* tree-data-ref.cc: ...here.
* tree-dfa.c: Moved to...
* tree-dfa.cc: ...here.
* tree-diagnostic.c: Moved to...
* tree-diagnostic.cc: ...here.
* tree-dump.c: Moved to...
* tree-dump.cc: ...here.
* tree-eh.c: Moved to...
* tree-eh.cc: ...here.
* tree-emutls.c: Moved to...
* tree-emutls.cc: ...here.
* tree-if-conv.c: Moved to...
* tree-if-conv.cc: ...here.
* tree-inline.c: Moved to...
* tree-inline.cc: ...here.
* tree-into-ssa.c: Moved to...
* tree-into-ssa.cc: ...here.
* tree-iterator.c: Moved to...
* tree-iterator.cc: ...here.
* tree-loop-distribution.c: Moved to...
* tree-loop-distribution.cc: ...here.
* tree-nested.c: Moved to...
* tree-nested.cc: ...here.
* tree-nrv.c: Moved to...
* tree-nrv.cc: ...here.
* tree-object-size.c: Moved to...
* tree-object-size.cc: ...here.
* tree-outof-ssa.c: Moved to...
* tree-outof-ssa.cc: ...here.
* tree-parloops.c: Moved to...
* tree-parloops.cc: ...here.
* tree-phinodes.c: Moved to...
* tree-phinodes.cc: ...here.
* tree-predcom.c: Moved to...
* tree-predcom.cc: ...here.
* tree-pretty-print.c: Moved to...
* tree-pretty-print.cc: ...here.
* tree-profile.c: Moved to...
* tree-profile.cc: ...here.
* tree-scalar-evolution.c: Moved to...
* tree-scalar-evolution.cc: ...here.
* tree-sra.c: Moved to...
* tree-sra.cc: ...here.
* tree-ssa-address.c: Moved to...
* tree-ssa-address.cc: ...here.
* tree-ssa-alias.c: Moved to...
* tree-ssa-alias.cc: ...here.
* tree-ssa-ccp.c: Moved to...
* tree-ssa-ccp.cc: ...here.
* tree-ssa-coalesce.c: Moved to...
* tree-ssa-coalesce.cc: ...here.
* tree-ssa-copy.c: Moved to...
* tree-ssa-copy.cc: ...here.
* tree-ssa-dce.c: Moved to...
* tree-ssa-dce.cc: ...here.
* tree-ssa-dom.c: Moved to...
* tree-ssa-dom.cc: ...here.
* tree-ssa-dse.c: Moved to...
* tree-ssa-dse.cc: ...here.
* tree-ssa-forwprop.c: Moved to...
* tree-ssa-forwprop.cc: ...here.
* tree-ssa-ifcombine.c: Moved to...
* tree-ssa-ifcombine.cc: ...here.
* tree-ssa-live.c: Moved to...
* tree-ssa-live.cc: ...here.
* tree-ssa-loop-ch.c: Moved to...
* tree-ssa-loop-ch.cc: ...here.
* tree-ssa-loop-im.c: Moved to...
* tree-ssa-loop-im.cc: ...here.
* tree-ssa-loop-ivcanon.c: Moved to...
* tree-ssa-loop-ivcanon.cc: ...here.
* tree-ssa-loop-ivopts.c: Moved to...
* tree-ssa-loop-ivopts.cc: ...here.
* tree-ssa-loop-manip.c: Moved to...
* tree-ssa-loop-manip.cc: ...here.
* tree-ssa-loop-niter.c: Moved to...
* tree-ssa-loop-niter.cc: ...here.
* tree-ssa-loop-prefetch.c: Moved to...
* tree-ssa-loop-prefetch.cc: ...here.
* tree-ssa-loop-split.c: Moved to...
* tree-ssa-loop-split.cc: ...here.
* tree-ssa-loop-unswitch.c: Moved to...
* tree-ssa-loop-unswitch.cc: ...here.
* tree-ssa-loop.c: Moved to...
* tree-ssa-loop.cc: ...here.
* tree-ssa-math-opts.c: Moved to...
* tree-ssa-math-opts.cc: ...here.
* tree-ssa-operands.c: Moved to...
* tree-ssa-operands.cc: ...here.
* tree-ssa-phiopt.c: Moved to...
* tree-ssa-phiopt.cc: ...here.
* tree-ssa-phiprop.c: Moved to...
* tree-ssa-phiprop.cc: ...here.
* tree-ssa-pre.c: Moved to...
* tree-ssa-pre.cc: ...here.
* tree-ssa-propagate.c: Moved to...
* tree-ssa-propagate.cc: ...here.
* tree-ssa-reassoc.c: Moved to...
* tree-ssa-reassoc.cc: ...here.
* tree-ssa-sccvn.c: Moved to...
* tree-ssa-sccvn.cc: ...here.
* tree-ssa-scopedtables.c: Moved to...
* tree-ssa-scopedtables.cc: ...here.
* tree-ssa-sink.c: Moved to...
* tree-ssa-sink.cc: ...here.
* tree-ssa-strlen.c: Moved to...
* tree-ssa-strlen.cc: ...here.
* tree-ssa-structalias.c: Moved to...
* tree-ssa-structalias.cc: ...here.
* tree-ssa-tail-merge.c: Moved to...
* tree-ssa-tail-merge.cc: ...here.
* tree-ssa-ter.c: Moved to...
* tree-ssa-ter.cc: ...here.
* tree-ssa-threadbackward.c: Moved to...
* tree-ssa-threadbackward.cc: ...here.
* tree-ssa-threadedge.c: Moved to...
* tree-ssa-threadedge.cc: ...here.
* tree-ssa-threadupdate.c: Moved to...
* tree-ssa-threadupdate.cc: ...here.
* tree-ssa-uncprop.c: Moved to...
* tree-ssa-uncprop.cc: ...here.
* tree-ssa-uninit.c: Moved to...
* tree-ssa-uninit.cc: ...here.
* tree-ssa.c: Moved to...
* tree-ssa.cc: ...here.
* tree-ssanames.c: Moved to...
* tree-ssanames.cc: ...here.
* tree-stdarg.c: Moved to...
* tree-stdarg.cc: ...here.
* tree-streamer-in.c: Moved to...
* tree-streamer-in.cc: ...here.
* tree-streamer-out.c: Moved to...
* tree-streamer-out.cc: ...here.
* tree-streamer.c: Moved to...
* tree-streamer.cc: ...here.
* tree-switch-conversion.c: Moved to...
* tree-switch-conversion.cc: ...here.
* tree-tailcall.c: Moved to...
* tree-tailcall.cc: ...here.
* tree-vect-data-refs.c: Moved to...
* tree-vect-data-refs.cc: ...here.
* tree-vect-generic.c: Moved to...
* tree-vect-generic.cc: ...here.
* tree-vect-loop-manip.c: Moved to...
* tree-vect-loop-manip.cc: ...here.
* tree-vect-loop.c: Moved to...
* tree-vect-loop.cc: ...here.
* tree-vect-patterns.c: Moved to...
* tree-vect-patterns.cc: ...here.
* tree-vect-slp-patterns.c: Moved to...
* tree-vect-slp-patterns.cc: ...here.
* tree-vect-slp.c: Moved to...
* tree-vect-slp.cc: ...here.
* tree-vect-stmts.c: Moved to...
* tree-vect-stmts.cc: ...here.
* tree-vector-builder.c: Moved to...
* tree-vector-builder.cc: ...here.
* tree-vectorizer.c: Moved to...
* tree-vectorizer.cc: ...here.
* tree-vrp.c: Moved to...
* tree-vrp.cc: ...here.
* tree.c: Moved to...
* tree.cc: ...here.
* tsan.c: Moved to...
* tsan.cc: ...here.
* typed-splay-tree.c: Moved to...
* typed-splay-tree.cc: ...here.
* ubsan.c: Moved to...
* ubsan.cc: ...here.
* valtrack.c: Moved to...
* valtrack.cc: ...here.
* value-prof.c: Moved to...
* value-prof.cc: ...here.
* var-tracking.c: Moved to...
* var-tracking.cc: ...here.
* varasm.c: Moved to...
* varasm.cc: ...here.
* varpool.c: Moved to...
* varpool.cc: ...here.
* vec-perm-indices.c: Moved to...
* vec-perm-indices.cc: ...here.
* vec.c: Moved to...
* vec.cc: ...here.
* vmsdbgout.c: Moved to...
* vmsdbgout.cc: ...here.
* vr-values.c: Moved to...
* vr-values.cc: ...here.
* vtable-verify.c: Moved to...
* vtable-verify.cc: ...here.
* web.c: Moved to...
* web.cc: ...here.
* xcoffout.c: Moved to...
* xcoffout.cc: ...here.
gcc/c-family/ChangeLog:
* c-ada-spec.c: Moved to...
* c-ada-spec.cc: ...here.
* c-attribs.c: Moved to...
* c-attribs.cc: ...here.
* c-common.c: Moved to...
* c-common.cc: ...here.
* c-cppbuiltin.c: Moved to...
* c-cppbuiltin.cc: ...here.
* c-dump.c: Moved to...
* c-dump.cc: ...here.
* c-format.c: Moved to...
* c-format.cc: ...here.
* c-gimplify.c: Moved to...
* c-gimplify.cc: ...here.
* c-indentation.c: Moved to...
* c-indentation.cc: ...here.
* c-lex.c: Moved to...
* c-lex.cc: ...here.
* c-omp.c: Moved to...
* c-omp.cc: ...here.
* c-opts.c: Moved to...
* c-opts.cc: ...here.
* c-pch.c: Moved to...
* c-pch.cc: ...here.
* c-ppoutput.c: Moved to...
* c-ppoutput.cc: ...here.
* c-pragma.c: Moved to...
* c-pragma.cc: ...here.
* c-pretty-print.c: Moved to...
* c-pretty-print.cc: ...here.
* c-semantics.c: Moved to...
* c-semantics.cc: ...here.
* c-ubsan.c: Moved to...
* c-ubsan.cc: ...here.
* c-warn.c: Moved to...
* c-warn.cc: ...here.
* cppspec.c: Moved to...
* cppspec.cc: ...here.
* stub-objc.c: Moved to...
* stub-objc.cc: ...here.
gcc/c/ChangeLog:
* c-aux-info.c: Moved to...
* c-aux-info.cc: ...here.
* c-convert.c: Moved to...
* c-convert.cc: ...here.
* c-decl.c: Moved to...
* c-decl.cc: ...here.
* c-errors.c: Moved to...
* c-errors.cc: ...here.
* c-fold.c: Moved to...
* c-fold.cc: ...here.
* c-lang.c: Moved to...
* c-lang.cc: ...here.
* c-objc-common.c: Moved to...
* c-objc-common.cc: ...here.
* c-parser.c: Moved to...
* c-parser.cc: ...here.
* c-typeck.c: Moved to...
* c-typeck.cc: ...here.
* gccspec.c: Moved to...
* gccspec.cc: ...here.
* gimple-parser.c: Moved to...
* gimple-parser.cc: ...here.
gcc/cp/ChangeLog:
* call.c: Moved to...
* call.cc: ...here.
* class.c: Moved to...
* class.cc: ...here.
* constexpr.c: Moved to...
* constexpr.cc: ...here.
* cp-gimplify.c: Moved to...
* cp-gimplify.cc: ...here.
* cp-lang.c: Moved to...
* cp-lang.cc: ...here.
* cp-objcp-common.c: Moved to...
* cp-objcp-common.cc: ...here.
* cp-ubsan.c: Moved to...
* cp-ubsan.cc: ...here.
* cvt.c: Moved to...
* cvt.cc: ...here.
* cxx-pretty-print.c: Moved to...
* cxx-pretty-print.cc: ...here.
* decl.c: Moved to...
* decl.cc: ...here.
* decl2.c: Moved to...
* decl2.cc: ...here.
* dump.c: Moved to...
* dump.cc: ...here.
* error.c: Moved to...
* error.cc: ...here.
* except.c: Moved to...
* except.cc: ...here.
* expr.c: Moved to...
* expr.cc: ...here.
* friend.c: Moved to...
* friend.cc: ...here.
* g++spec.c: Moved to...
* g++spec.cc: ...here.
* init.c: Moved to...
* init.cc: ...here.
* lambda.c: Moved to...
* lambda.cc: ...here.
* lex.c: Moved to...
* lex.cc: ...here.
* mangle.c: Moved to...
* mangle.cc: ...here.
* method.c: Moved to...
* method.cc: ...here.
* name-lookup.c: Moved to...
* name-lookup.cc: ...here.
* optimize.c: Moved to...
* optimize.cc: ...here.
* parser.c: Moved to...
* parser.cc: ...here.
* pt.c: Moved to...
* pt.cc: ...here.
* ptree.c: Moved to...
* ptree.cc: ...here.
* rtti.c: Moved to...
* rtti.cc: ...here.
* search.c: Moved to...
* search.cc: ...here.
* semantics.c: Moved to...
* semantics.cc: ...here.
* tree.c: Moved to...
* tree.cc: ...here.
* typeck.c: Moved to...
* typeck.cc: ...here.
* typeck2.c: Moved to...
* typeck2.cc: ...here.
* vtable-class-hierarchy.c: Moved to...
* vtable-class-hierarchy.cc: ...here.
gcc/fortran/ChangeLog:
* arith.c: Moved to...
* arith.cc: ...here.
* array.c: Moved to...
* array.cc: ...here.
* bbt.c: Moved to...
* bbt.cc: ...here.
* check.c: Moved to...
* check.cc: ...here.
* class.c: Moved to...
* class.cc: ...here.
* constructor.c: Moved to...
* constructor.cc: ...here.
* convert.c: Moved to...
* convert.cc: ...here.
* cpp.c: Moved to...
* cpp.cc: ...here.
* data.c: Moved to...
* data.cc: ...here.
* decl.c: Moved to...
* decl.cc: ...here.
* dependency.c: Moved to...
* dependency.cc: ...here.
* dump-parse-tree.c: Moved to...
* dump-parse-tree.cc: ...here.
* error.c: Moved to...
* error.cc: ...here.
* expr.c: Moved to...
* expr.cc: ...here.
* f95-lang.c: Moved to...
* f95-lang.cc: ...here.
* frontend-passes.c: Moved to...
* frontend-passes.cc: ...here.
* gfortranspec.c: Moved to...
* gfortranspec.cc: ...here.
* interface.c: Moved to...
* interface.cc: ...here.
* intrinsic.c: Moved to...
* intrinsic.cc: ...here.
* io.c: Moved to...
* io.cc: ...here.
* iresolve.c: Moved to...
* iresolve.cc: ...here.
* match.c: Moved to...
* match.cc: ...here.
* matchexp.c: Moved to...
* matchexp.cc: ...here.
* misc.c: Moved to...
* misc.cc: ...here.
* module.c: Moved to...
* module.cc: ...here.
* openmp.c: Moved to...
* openmp.cc: ...here.
* options.c: Moved to...
* options.cc: ...here.
* parse.c: Moved to...
* parse.cc: ...here.
* primary.c: Moved to...
* primary.cc: ...here.
* resolve.c: Moved to...
* resolve.cc: ...here.
* scanner.c: Moved to...
* scanner.cc: ...here.
* simplify.c: Moved to...
* simplify.cc: ...here.
* st.c: Moved to...
* st.cc: ...here.
* symbol.c: Moved to...
* symbol.cc: ...here.
* target-memory.c: Moved to...
* target-memory.cc: ...here.
* trans-array.c: Moved to...
* trans-array.cc: ...here.
* trans-common.c: Moved to...
* trans-common.cc: ...here.
* trans-const.c: Moved to...
* trans-const.cc: ...here.
* trans-decl.c: Moved to...
* trans-decl.cc: ...here.
* trans-expr.c: Moved to...
* trans-expr.cc: ...here.
* trans-intrinsic.c: Moved to...
* trans-intrinsic.cc: ...here.
* trans-io.c: Moved to...
* trans-io.cc: ...here.
* trans-openmp.c: Moved to...
* trans-openmp.cc: ...here.
* trans-stmt.c: Moved to...
* trans-stmt.cc: ...here.
* trans-types.c: Moved to...
* trans-types.cc: ...here.
* trans.c: Moved to...
* trans.cc: ...here.
gcc/go/ChangeLog:
* go-backend.c: Moved to...
* go-backend.cc: ...here.
* go-lang.c: Moved to...
* go-lang.cc: ...here.
* gospec.c: Moved to...
* gospec.cc: ...here.
gcc/jit/ChangeLog:
* dummy-frontend.c: Moved to...
* dummy-frontend.cc: ...here.
* jit-builtins.c: Moved to...
* jit-builtins.cc: ...here.
* jit-logging.c: Moved to...
* jit-logging.cc: ...here.
* jit-playback.c: Moved to...
* jit-playback.cc: ...here.
* jit-recording.c: Moved to...
* jit-recording.cc: ...here.
* jit-result.c: Moved to...
* jit-result.cc: ...here.
* jit-spec.c: Moved to...
* jit-spec.cc: ...here.
* jit-tempdir.c: Moved to...
* jit-tempdir.cc: ...here.
* jit-w32.c: Moved to...
* jit-w32.cc: ...here.
* libgccjit.c: Moved to...
* libgccjit.cc: ...here.
gcc/lto/ChangeLog:
* common.c: Moved to...
* common.cc: ...here.
* lto-common.c: Moved to...
* lto-common.cc: ...here.
* lto-dump.c: Moved to...
* lto-dump.cc: ...here.
* lto-lang.c: Moved to...
* lto-lang.cc: ...here.
* lto-object.c: Moved to...
* lto-object.cc: ...here.
* lto-partition.c: Moved to...
* lto-partition.cc: ...here.
* lto-symtab.c: Moved to...
* lto-symtab.cc: ...here.
* lto.c: Moved to...
* lto.cc: ...here.
gcc/objc/ChangeLog:
* objc-act.c: Moved to...
* objc-act.cc: ...here.
* objc-encoding.c: Moved to...
* objc-encoding.cc: ...here.
* objc-gnu-runtime-abi-01.c: Moved to...
* objc-gnu-runtime-abi-01.cc: ...here.
* objc-lang.c: Moved to...
* objc-lang.cc: ...here.
* objc-map.c: Moved to...
* objc-map.cc: ...here.
* objc-next-runtime-abi-01.c: Moved to...
* objc-next-runtime-abi-01.cc: ...here.
* objc-next-runtime-abi-02.c: Moved to...
* objc-next-runtime-abi-02.cc: ...here.
* objc-runtime-shared-support.c: Moved to...
* objc-runtime-shared-support.cc: ...here.
gcc/objcp/ChangeLog:
* objcp-decl.c: Moved to...
* objcp-decl.cc: ...here.
* objcp-lang.c: Moved to...
* objcp-lang.cc: ...here.
libcpp/ChangeLog:
* charset.c: Moved to...
* charset.cc: ...here.
* directives.c: Moved to...
* directives.cc: ...here.
* errors.c: Moved to...
* errors.cc: ...here.
* expr.c: Moved to...
* expr.cc: ...here.
* files.c: Moved to...
* files.cc: ...here.
* identifiers.c: Moved to...
* identifiers.cc: ...here.
* init.c: Moved to...
* init.cc: ...here.
* lex.c: Moved to...
* lex.cc: ...here.
* line-map.c: Moved to...
* line-map.cc: ...here.
* macro.c: Moved to...
* macro.cc: ...here.
* makeucnid.c: Moved to...
* makeucnid.cc: ...here.
* mkdeps.c: Moved to...
* mkdeps.cc: ...here.
* pch.c: Moved to...
* pch.cc: ...here.
* symtab.c: Moved to...
* symtab.cc: ...here.
* traditional.c: Moved to...
* traditional.cc: ...here.
Diffstat (limited to 'gcc/print-rtl.c')
-rw-r--r-- | gcc/print-rtl.c | 2185 |
1 files changed, 0 insertions, 2185 deletions
diff --git a/gcc/print-rtl.c b/gcc/print-rtl.c deleted file mode 100644 index 636113d..0000000 --- a/gcc/print-rtl.c +++ /dev/null @@ -1,2185 +0,0 @@ -/* Print RTL for GCC. - 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 file is compiled twice: once for the generator programs, - once for the compiler. */ -#ifdef GENERATOR_FILE -#include "bconfig.h" -#else -#include "config.h" -#endif - -#include "system.h" -#include "coretypes.h" -#include "tm.h" -#include "rtl.h" - -/* These headers all define things which are not available in - generator programs. */ -#ifndef GENERATOR_FILE -#include "alias.h" -#include "tree.h" -#include "basic-block.h" -#include "print-tree.h" -#include "flags.h" -#include "predict.h" -#include "function.h" -#include "cfg.h" -#include "basic-block.h" -#include "diagnostic.h" -#include "tree-pretty-print.h" -#include "alloc-pool.h" -#include "cselib.h" -#include "dumpfile.h" /* for dump_flags */ -#include "dwarf2out.h" -#include "pretty-print.h" -#endif - -#include "print-rtl.h" -#include "rtl-iter.h" - -/* Disable warnings about quoting issues in the pp_xxx calls below - that (intentionally) don't follow GCC diagnostic conventions. */ -#if __GNUC__ >= 10 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wformat-diag" -#endif - -/* String printed at beginning of each RTL when it is dumped. - This string is set to ASM_COMMENT_START when the RTL is dumped in - the assembly output file. */ -const char *print_rtx_head = ""; - -#ifdef GENERATOR_FILE -/* These are defined from the .opt file when not used in generator - programs. */ - -/* Nonzero means suppress output of instruction numbers - in debugging dumps. - This must be defined here so that programs like gencodes can be linked. */ -int flag_dump_unnumbered = 0; - -/* Nonzero means suppress output of instruction numbers for previous - and next insns in debugging dumps. - This must be defined here so that programs like gencodes can be linked. */ -int flag_dump_unnumbered_links = 0; -#endif - -/* Constructor for rtx_writer. */ - -rtx_writer::rtx_writer (FILE *outf, int ind, bool simple, bool compact, - rtx_reuse_manager *reuse_manager ATTRIBUTE_UNUSED) -: m_outfile (outf), m_sawclose (0), m_indent (ind), - m_in_call_function_usage (false), m_simple (simple), m_compact (compact) -#ifndef GENERATOR_FILE - , m_rtx_reuse_manager (reuse_manager) -#endif -{ -} - -#ifndef GENERATOR_FILE - -/* rtx_reuse_manager's ctor. */ - -rtx_reuse_manager::rtx_reuse_manager () -: m_next_id (0) -{ -} - -/* Determine if X is of a kind suitable for dumping via reuse_rtx. */ - -static bool -uses_rtx_reuse_p (const_rtx x) -{ - if (x == NULL) - return false; - - switch (GET_CODE (x)) - { - case DEBUG_EXPR: - case VALUE: - case SCRATCH: - return true; - - /* We don't use reuse_rtx for consts. */ - CASE_CONST_UNIQUE: - default: - return false; - } -} - -/* Traverse X and its descendents, determining if we see any rtx more than - once. Any rtx suitable for "reuse_rtx" that is seen more than once is - assigned an ID. */ - -void -rtx_reuse_manager::preprocess (const_rtx x) -{ - subrtx_iterator::array_type array; - FOR_EACH_SUBRTX (iter, array, x, NONCONST) - if (uses_rtx_reuse_p (*iter)) - { - if (int *count = m_rtx_occurrence_count.get (*iter)) - { - if (*(count++) == 1) - m_rtx_reuse_ids.put (*iter, m_next_id++); - } - else - m_rtx_occurrence_count.put (*iter, 1); - } -} - -/* Return true iff X has been assigned a reuse ID. If it has, - and OUT is non-NULL, then write the reuse ID to *OUT. */ - -bool -rtx_reuse_manager::has_reuse_id (const_rtx x, int *out) -{ - int *id = m_rtx_reuse_ids.get (x); - if (id) - { - if (out) - *out = *id; - return true; - } - else - return false; -} - -/* Determine if set_seen_def has been called for the given reuse ID. */ - -bool -rtx_reuse_manager::seen_def_p (int reuse_id) -{ - return bitmap_bit_p (m_defs_seen, reuse_id); -} - -/* Record that the definition of the given reuse ID has been seen. */ - -void -rtx_reuse_manager::set_seen_def (int reuse_id) -{ - bitmap_set_bit (m_defs_seen, reuse_id); -} - -#endif /* #ifndef GENERATOR_FILE */ - -#ifndef GENERATOR_FILE -void -print_mem_expr (FILE *outfile, const_tree expr) -{ - fputc (' ', outfile); - print_generic_expr (outfile, CONST_CAST_TREE (expr), - dump_flags | TDF_SLIM); -} -#endif - -/* Print X to FILE. */ - -static void -print_poly_int (FILE *file, poly_int64 x) -{ - HOST_WIDE_INT const_x; - if (x.is_constant (&const_x)) - fprintf (file, HOST_WIDE_INT_PRINT_DEC, const_x); - else - { - fprintf (file, "[" HOST_WIDE_INT_PRINT_DEC, x.coeffs[0]); - for (int i = 1; i < NUM_POLY_INT_COEFFS; ++i) - fprintf (file, ", " HOST_WIDE_INT_PRINT_DEC, x.coeffs[i]); - fprintf (file, "]"); - } -} - -/* Subroutine of print_rtx_operand for handling code '0'. - 0 indicates a field for internal use that should not be printed. - However there are various special cases, such as the third field - of a NOTE, where it indicates that the field has several different - valid contents. */ - -void -rtx_writer::print_rtx_operand_code_0 (const_rtx in_rtx ATTRIBUTE_UNUSED, - int idx ATTRIBUTE_UNUSED) -{ -#ifndef GENERATOR_FILE - if (idx == 1 && GET_CODE (in_rtx) == SYMBOL_REF) - { - int flags = SYMBOL_REF_FLAGS (in_rtx); - if (flags) - fprintf (m_outfile, " [flags %#x]", flags); - tree decl = SYMBOL_REF_DECL (in_rtx); - if (decl) - print_node_brief (m_outfile, "", decl, dump_flags); - } - else if (idx == 3 && NOTE_P (in_rtx)) - { - switch (NOTE_KIND (in_rtx)) - { - case NOTE_INSN_EH_REGION_BEG: - case NOTE_INSN_EH_REGION_END: - if (flag_dump_unnumbered) - fprintf (m_outfile, " #"); - else - fprintf (m_outfile, " %d", NOTE_EH_HANDLER (in_rtx)); - m_sawclose = 1; - break; - - case NOTE_INSN_BLOCK_BEG: - case NOTE_INSN_BLOCK_END: - dump_addr (m_outfile, " ", NOTE_BLOCK (in_rtx)); - m_sawclose = 1; - break; - - case NOTE_INSN_BASIC_BLOCK: - { - basic_block bb = NOTE_BASIC_BLOCK (in_rtx); - if (bb != 0) - fprintf (m_outfile, " [bb %d]", bb->index); - break; - } - - case NOTE_INSN_DELETED_LABEL: - case NOTE_INSN_DELETED_DEBUG_LABEL: - { - const char *label = NOTE_DELETED_LABEL_NAME (in_rtx); - if (label) - fprintf (m_outfile, " (\"%s\")", label); - else - fprintf (m_outfile, " \"\""); - } - break; - - case NOTE_INSN_SWITCH_TEXT_SECTIONS: - { - basic_block bb = NOTE_BASIC_BLOCK (in_rtx); - if (bb != 0) - fprintf (m_outfile, " [bb %d]", bb->index); - break; - } - - case NOTE_INSN_VAR_LOCATION: - fputc (' ', m_outfile); - print_rtx (NOTE_VAR_LOCATION (in_rtx)); - break; - - case NOTE_INSN_CFI: - fputc ('\n', m_outfile); - output_cfi_directive (m_outfile, NOTE_CFI (in_rtx)); - fputc ('\t', m_outfile); - break; - - case NOTE_INSN_BEGIN_STMT: - case NOTE_INSN_INLINE_ENTRY: -#ifndef GENERATOR_FILE - { - expanded_location xloc - = expand_location (NOTE_MARKER_LOCATION (in_rtx)); - fprintf (m_outfile, " %s:%i", xloc.file, xloc.line); - } -#endif - break; - - default: - break; - } - } - else if (idx == 7 && JUMP_P (in_rtx) && JUMP_LABEL (in_rtx) != NULL - && !m_compact) - { - /* Output the JUMP_LABEL reference. */ - fprintf (m_outfile, "\n%s%*s -> ", print_rtx_head, m_indent * 2, ""); - if (GET_CODE (JUMP_LABEL (in_rtx)) == RETURN) - fprintf (m_outfile, "return"); - else if (GET_CODE (JUMP_LABEL (in_rtx)) == SIMPLE_RETURN) - fprintf (m_outfile, "simple_return"); - else - fprintf (m_outfile, "%d", INSN_UID (JUMP_LABEL (in_rtx))); - } - else if (idx == 0 && GET_CODE (in_rtx) == VALUE) - { - cselib_val *val = CSELIB_VAL_PTR (in_rtx); - - fprintf (m_outfile, " %u:%u", val->uid, val->hash); - dump_addr (m_outfile, " @", in_rtx); - dump_addr (m_outfile, "/", (void*)val); - } - else if (idx == 0 && GET_CODE (in_rtx) == DEBUG_EXPR) - { - fprintf (m_outfile, " D#%i", - DEBUG_TEMP_UID (DEBUG_EXPR_TREE_DECL (in_rtx))); - } - else if (idx == 0 && GET_CODE (in_rtx) == ENTRY_VALUE) - { - m_indent += 2; - if (!m_sawclose) - fprintf (m_outfile, " "); - print_rtx (ENTRY_VALUE_EXP (in_rtx)); - m_indent -= 2; - } -#endif -} - -/* Subroutine of print_rtx_operand for handling code 'e'. - Also called by print_rtx_operand_code_u for handling code 'u' - for LABEL_REFs when they don't reference a CODE_LABEL. */ - -void -rtx_writer::print_rtx_operand_code_e (const_rtx in_rtx, int idx) -{ - m_indent += 2; - if (idx == 6 && INSN_P (in_rtx)) - /* Put REG_NOTES on their own line. */ - fprintf (m_outfile, "\n%s%*s", - print_rtx_head, m_indent * 2, ""); - if (!m_sawclose) - fprintf (m_outfile, " "); - if (idx == 7 && CALL_P (in_rtx)) - { - m_in_call_function_usage = true; - print_rtx (XEXP (in_rtx, idx)); - m_in_call_function_usage = false; - } - else - print_rtx (XEXP (in_rtx, idx)); - m_indent -= 2; -} - -/* Subroutine of print_rtx_operand for handling codes 'E' and 'V'. */ - -void -rtx_writer::print_rtx_operand_codes_E_and_V (const_rtx in_rtx, int idx) -{ - m_indent += 2; - if (m_sawclose) - { - fprintf (m_outfile, "\n%s%*s", - print_rtx_head, m_indent * 2, ""); - m_sawclose = 0; - } - if (GET_CODE (in_rtx) == CONST_VECTOR - && !GET_MODE_NUNITS (GET_MODE (in_rtx)).is_constant () - && CONST_VECTOR_DUPLICATE_P (in_rtx)) - fprintf (m_outfile, " repeat"); - fputs (" [", m_outfile); - if (XVEC (in_rtx, idx) != NULL) - { - m_indent += 2; - if (XVECLEN (in_rtx, idx)) - m_sawclose = 1; - - int barrier = XVECLEN (in_rtx, idx); - if (GET_CODE (in_rtx) == CONST_VECTOR - && !GET_MODE_NUNITS (GET_MODE (in_rtx)).is_constant ()) - barrier = CONST_VECTOR_NPATTERNS (in_rtx); - - for (int j = 0; j < XVECLEN (in_rtx, idx); j++) - { - int j1; - - if (j == barrier) - { - fprintf (m_outfile, "\n%s%*s", - print_rtx_head, m_indent * 2, ""); - if (!CONST_VECTOR_STEPPED_P (in_rtx)) - fprintf (m_outfile, "repeat ["); - else if (CONST_VECTOR_NPATTERNS (in_rtx) == 1) - fprintf (m_outfile, "stepped ["); - else - fprintf (m_outfile, "stepped (interleave %d) [", - CONST_VECTOR_NPATTERNS (in_rtx)); - m_indent += 2; - } - - print_rtx (XVECEXP (in_rtx, idx, j)); - int limit = MIN (barrier, XVECLEN (in_rtx, idx)); - for (j1 = j + 1; j1 < limit; j1++) - if (XVECEXP (in_rtx, idx, j) != XVECEXP (in_rtx, idx, j1)) - break; - - if (j1 != j + 1) - { - fprintf (m_outfile, " repeated x%i", j1 - j); - j = j1 - 1; - } - } - - if (barrier < XVECLEN (in_rtx, idx)) - { - m_indent -= 2; - fprintf (m_outfile, "\n%s%*s]", print_rtx_head, m_indent * 2, ""); - } - - m_indent -= 2; - } - if (m_sawclose) - fprintf (m_outfile, "\n%s%*s", print_rtx_head, m_indent * 2, ""); - - fputs ("]", m_outfile); - m_sawclose = 1; - m_indent -= 2; -} - -/* Subroutine of print_rtx_operand for handling code 'i'. */ - -void -rtx_writer::print_rtx_operand_code_i (const_rtx in_rtx, int idx) -{ - if (idx == 4 && INSN_P (in_rtx)) - { -#ifndef GENERATOR_FILE - const rtx_insn *in_insn = as_a <const rtx_insn *> (in_rtx); - - /* Pretty-print insn locations. Ignore scoping as it is mostly - redundant with line number information and do not print anything - when there is no location information available. */ - if (INSN_HAS_LOCATION (in_insn)) - { - expanded_location xloc = insn_location (in_insn); - fprintf (m_outfile, " \"%s\":%i:%i", xloc.file, xloc.line, - xloc.column); - } -#endif - } - else if (idx == 6 && GET_CODE (in_rtx) == ASM_OPERANDS) - { -#ifndef GENERATOR_FILE - if (ASM_OPERANDS_SOURCE_LOCATION (in_rtx) != UNKNOWN_LOCATION) - fprintf (m_outfile, " %s:%i", - LOCATION_FILE (ASM_OPERANDS_SOURCE_LOCATION (in_rtx)), - LOCATION_LINE (ASM_OPERANDS_SOURCE_LOCATION (in_rtx))); -#endif - } - else if (idx == 1 && GET_CODE (in_rtx) == ASM_INPUT) - { -#ifndef GENERATOR_FILE - if (ASM_INPUT_SOURCE_LOCATION (in_rtx) != UNKNOWN_LOCATION) - fprintf (m_outfile, " %s:%i", - LOCATION_FILE (ASM_INPUT_SOURCE_LOCATION (in_rtx)), - LOCATION_LINE (ASM_INPUT_SOURCE_LOCATION (in_rtx))); -#endif - } - else if (idx == 5 && NOTE_P (in_rtx)) - { - /* This field is only used for NOTE_INSN_DELETED_LABEL, and - other times often contains garbage from INSN->NOTE death. */ - if (NOTE_KIND (in_rtx) == NOTE_INSN_DELETED_LABEL - || NOTE_KIND (in_rtx) == NOTE_INSN_DELETED_DEBUG_LABEL) - fprintf (m_outfile, " %d", XINT (in_rtx, idx)); - } -#if !defined(GENERATOR_FILE) && NUM_UNSPECV_VALUES > 0 - else if (idx == 1 - && GET_CODE (in_rtx) == UNSPEC_VOLATILE - && XINT (in_rtx, 1) >= 0 - && XINT (in_rtx, 1) < NUM_UNSPECV_VALUES) - fprintf (m_outfile, " %s", unspecv_strings[XINT (in_rtx, 1)]); -#endif -#if !defined(GENERATOR_FILE) && NUM_UNSPEC_VALUES > 0 - else if (idx == 1 - && (GET_CODE (in_rtx) == UNSPEC - || GET_CODE (in_rtx) == UNSPEC_VOLATILE) - && XINT (in_rtx, 1) >= 0 - && XINT (in_rtx, 1) < NUM_UNSPEC_VALUES) - fprintf (m_outfile, " %s", unspec_strings[XINT (in_rtx, 1)]); -#endif - else - { - int value = XINT (in_rtx, idx); - const char *name; - int is_insn = INSN_P (in_rtx); - - /* Don't print INSN_CODEs in compact mode. */ - if (m_compact && is_insn && &INSN_CODE (in_rtx) == &XINT (in_rtx, idx)) - { - m_sawclose = 0; - return; - } - - if (flag_dump_unnumbered - && (is_insn || NOTE_P (in_rtx))) - fputc ('#', m_outfile); - else - fprintf (m_outfile, " %d", value); - - if (is_insn && &INSN_CODE (in_rtx) == &XINT (in_rtx, idx) - && XINT (in_rtx, idx) >= 0 - && (name = get_insn_name (XINT (in_rtx, idx))) != NULL) - fprintf (m_outfile, " {%s}", name); - m_sawclose = 0; - } -} - -/* Subroutine of print_rtx_operand for handling code 'r'. */ - -void -rtx_writer::print_rtx_operand_code_r (const_rtx in_rtx) -{ - int is_insn = INSN_P (in_rtx); - unsigned int regno = REGNO (in_rtx); - -#ifndef GENERATOR_FILE - /* For hard registers and virtuals, always print the - regno, except in compact mode. */ - if (regno <= LAST_VIRTUAL_REGISTER && !m_compact) - fprintf (m_outfile, " %d", regno); - if (regno < FIRST_PSEUDO_REGISTER) - fprintf (m_outfile, " %s", reg_names[regno]); - else if (regno <= LAST_VIRTUAL_REGISTER) - { - if (regno == VIRTUAL_INCOMING_ARGS_REGNUM) - fprintf (m_outfile, " virtual-incoming-args"); - else if (regno == VIRTUAL_STACK_VARS_REGNUM) - fprintf (m_outfile, " virtual-stack-vars"); - else if (regno == VIRTUAL_STACK_DYNAMIC_REGNUM) - fprintf (m_outfile, " virtual-stack-dynamic"); - else if (regno == VIRTUAL_OUTGOING_ARGS_REGNUM) - fprintf (m_outfile, " virtual-outgoing-args"); - else if (regno == VIRTUAL_CFA_REGNUM) - fprintf (m_outfile, " virtual-cfa"); - else if (regno == VIRTUAL_PREFERRED_STACK_BOUNDARY_REGNUM) - fprintf (m_outfile, " virtual-preferred-stack-boundary"); - else - fprintf (m_outfile, " virtual-reg-%d", regno-FIRST_VIRTUAL_REGISTER); - } - else -#endif - if (flag_dump_unnumbered && is_insn) - fputc ('#', m_outfile); - else if (m_compact) - { - /* In compact mode, print pseudos with '< and '>' wrapping the regno, - offseting it by (LAST_VIRTUAL_REGISTER + 1), so that the - first non-virtual pseudo is dumped as "<0>". */ - gcc_assert (regno > LAST_VIRTUAL_REGISTER); - fprintf (m_outfile, " <%d>", regno - (LAST_VIRTUAL_REGISTER + 1)); - } - else - fprintf (m_outfile, " %d", regno); - -#ifndef GENERATOR_FILE - if (REG_ATTRS (in_rtx)) - { - fputs (" [", m_outfile); - if (regno != ORIGINAL_REGNO (in_rtx)) - fprintf (m_outfile, "orig:%i", ORIGINAL_REGNO (in_rtx)); - if (REG_EXPR (in_rtx)) - print_mem_expr (m_outfile, REG_EXPR (in_rtx)); - - if (maybe_ne (REG_OFFSET (in_rtx), 0)) - { - fprintf (m_outfile, "+"); - print_poly_int (m_outfile, REG_OFFSET (in_rtx)); - } - fputs (" ]", m_outfile); - } - if (regno != ORIGINAL_REGNO (in_rtx)) - fprintf (m_outfile, " [%d]", ORIGINAL_REGNO (in_rtx)); -#endif -} - -/* Subroutine of print_rtx_operand for handling code 'u'. */ - -void -rtx_writer::print_rtx_operand_code_u (const_rtx in_rtx, int idx) -{ - /* Don't print insn UIDs for PREV/NEXT_INSN in compact mode. */ - if (m_compact && INSN_CHAIN_CODE_P (GET_CODE (in_rtx)) && idx < 2) - return; - - if (XEXP (in_rtx, idx) != NULL) - { - rtx sub = XEXP (in_rtx, idx); - enum rtx_code subc = GET_CODE (sub); - - if (GET_CODE (in_rtx) == LABEL_REF) - { - if (subc == NOTE - && NOTE_KIND (sub) == NOTE_INSN_DELETED_LABEL) - { - if (flag_dump_unnumbered) - fprintf (m_outfile, " [# deleted]"); - else - fprintf (m_outfile, " [%d deleted]", INSN_UID (sub)); - m_sawclose = 0; - return; - } - - if (subc != CODE_LABEL) - { - print_rtx_operand_code_e (in_rtx, idx); - return; - } - } - - if (flag_dump_unnumbered - || (flag_dump_unnumbered_links && idx <= 1 - && (INSN_P (in_rtx) || NOTE_P (in_rtx) - || LABEL_P (in_rtx) || BARRIER_P (in_rtx)))) - fputs (" #", m_outfile); - else - fprintf (m_outfile, " %d", INSN_UID (sub)); - } - else - fputs (" 0", m_outfile); - m_sawclose = 0; -} - -/* Subroutine of print_rtx. Print operand IDX of IN_RTX. */ - -void -rtx_writer::print_rtx_operand (const_rtx in_rtx, int idx) -{ - const char *format_ptr = GET_RTX_FORMAT (GET_CODE (in_rtx)); - - switch (format_ptr[idx]) - { - const char *str; - - case 'T': - str = XTMPL (in_rtx, idx); - goto string; - - case 'S': - case 's': - str = XSTR (in_rtx, idx); - string: - - if (str == 0) - fputs (" (nil)", m_outfile); - else - fprintf (m_outfile, " (\"%s\")", str); - m_sawclose = 1; - break; - - case '0': - print_rtx_operand_code_0 (in_rtx, idx); - break; - - case 'e': - print_rtx_operand_code_e (in_rtx, idx); - break; - - case 'E': - case 'V': - print_rtx_operand_codes_E_and_V (in_rtx, idx); - break; - - case 'w': - if (! m_simple) - fprintf (m_outfile, " "); - fprintf (m_outfile, HOST_WIDE_INT_PRINT_DEC, XWINT (in_rtx, idx)); - if (! m_simple && !m_compact) - fprintf (m_outfile, " [" HOST_WIDE_INT_PRINT_HEX "]", - (unsigned HOST_WIDE_INT) XWINT (in_rtx, idx)); - break; - - case 'i': - print_rtx_operand_code_i (in_rtx, idx); - break; - - case 'p': - fprintf (m_outfile, " "); - print_poly_int (m_outfile, SUBREG_BYTE (in_rtx)); - break; - - case 'r': - print_rtx_operand_code_r (in_rtx); - break; - - /* Print NOTE_INSN names rather than integer codes. */ - - case 'n': - fprintf (m_outfile, " %s", GET_NOTE_INSN_NAME (XINT (in_rtx, idx))); - m_sawclose = 0; - break; - - case 'u': - print_rtx_operand_code_u (in_rtx, idx); - break; - - case 't': -#ifndef GENERATOR_FILE - if (idx == 0 && GET_CODE (in_rtx) == DEBUG_IMPLICIT_PTR) - print_mem_expr (m_outfile, DEBUG_IMPLICIT_PTR_DECL (in_rtx)); - else if (idx == 0 && GET_CODE (in_rtx) == DEBUG_PARAMETER_REF) - print_mem_expr (m_outfile, DEBUG_PARAMETER_REF_DECL (in_rtx)); - else - dump_addr (m_outfile, " ", XTREE (in_rtx, idx)); -#endif - break; - - case '*': - fputs (" Unknown", m_outfile); - m_sawclose = 0; - break; - - case 'B': - /* Don't print basic block ids in compact mode. */ - if (m_compact) - break; -#ifndef GENERATOR_FILE - if (XBBDEF (in_rtx, idx)) - fprintf (m_outfile, " %i", XBBDEF (in_rtx, idx)->index); -#endif - break; - - default: - gcc_unreachable (); - } -} - -/* Subroutine of rtx_writer::print_rtx. - In compact mode, determine if operand IDX of IN_RTX is interesting - to dump, or (if in a trailing position) it can be omitted. */ - -bool -rtx_writer::operand_has_default_value_p (const_rtx in_rtx, int idx) -{ - const char *format_ptr = GET_RTX_FORMAT (GET_CODE (in_rtx)); - - switch (format_ptr[idx]) - { - case 'e': - case 'u': - return XEXP (in_rtx, idx) == NULL_RTX; - - case 's': - return XSTR (in_rtx, idx) == NULL; - - case '0': - switch (GET_CODE (in_rtx)) - { - case JUMP_INSN: - /* JUMP_LABELs are always omitted in compact mode, so treat - any value here as omittable, so that earlier operands can - potentially be omitted also. */ - return m_compact; - - default: - return false; - - } - - default: - return false; - } -} - -/* Print IN_RTX onto m_outfile. This is the recursive part of printing. */ - -void -rtx_writer::print_rtx (const_rtx in_rtx) -{ - int idx = 0; - - if (m_sawclose) - { - if (m_simple) - fputc (' ', m_outfile); - else - fprintf (m_outfile, "\n%s%*s", print_rtx_head, m_indent * 2, ""); - m_sawclose = 0; - } - - if (in_rtx == 0) - { - fputs ("(nil)", m_outfile); - m_sawclose = 1; - return; - } - else if (GET_CODE (in_rtx) > NUM_RTX_CODE) - { - fprintf (m_outfile, "(??? bad code %d\n%s%*s)", GET_CODE (in_rtx), - print_rtx_head, m_indent * 2, ""); - m_sawclose = 1; - return; - } - - fputc ('(', m_outfile); - - /* Print name of expression code. */ - - /* Handle reuse. */ -#ifndef GENERATOR_FILE - if (m_rtx_reuse_manager) - { - int reuse_id; - if (m_rtx_reuse_manager->has_reuse_id (in_rtx, &reuse_id)) - { - /* Have we already seen the defn of this rtx? */ - if (m_rtx_reuse_manager->seen_def_p (reuse_id)) - { - fprintf (m_outfile, "reuse_rtx %i)", reuse_id); - m_sawclose = 1; - return; - } - else - { - /* First time we've seen this reused-rtx. */ - fprintf (m_outfile, "%i|", reuse_id); - m_rtx_reuse_manager->set_seen_def (reuse_id); - } - } - } -#endif /* #ifndef GENERATOR_FILE */ - - /* In compact mode, prefix the code of insns with "c", - giving "cinsn", "cnote" etc. */ - if (m_compact && is_a <const rtx_insn *, const struct rtx_def> (in_rtx)) - { - /* "ccode_label" is slightly awkward, so special-case it as - just "clabel". */ - rtx_code code = GET_CODE (in_rtx); - if (code == CODE_LABEL) - fprintf (m_outfile, "clabel"); - else - fprintf (m_outfile, "c%s", GET_RTX_NAME (code)); - } - else if (m_simple && CONST_INT_P (in_rtx)) - ; /* no code. */ - else - fprintf (m_outfile, "%s", GET_RTX_NAME (GET_CODE (in_rtx))); - - if (! m_simple) - { - if (RTX_FLAG (in_rtx, in_struct)) - fputs ("/s", m_outfile); - - if (RTX_FLAG (in_rtx, volatil)) - fputs ("/v", m_outfile); - - if (RTX_FLAG (in_rtx, unchanging)) - fputs ("/u", m_outfile); - - if (RTX_FLAG (in_rtx, frame_related)) - fputs ("/f", m_outfile); - - if (RTX_FLAG (in_rtx, jump)) - fputs ("/j", m_outfile); - - if (RTX_FLAG (in_rtx, call)) - fputs ("/c", m_outfile); - - if (RTX_FLAG (in_rtx, return_val)) - fputs ("/i", m_outfile); - - /* Print REG_NOTE names for EXPR_LIST and INSN_LIST. */ - if ((GET_CODE (in_rtx) == EXPR_LIST - || GET_CODE (in_rtx) == INSN_LIST - || GET_CODE (in_rtx) == INT_LIST) - && (int)GET_MODE (in_rtx) < REG_NOTE_MAX - && !m_in_call_function_usage) - fprintf (m_outfile, ":%s", - GET_REG_NOTE_NAME (GET_MODE (in_rtx))); - - /* For other rtl, print the mode if it's not VOID. */ - else if (GET_MODE (in_rtx) != VOIDmode) - fprintf (m_outfile, ":%s", GET_MODE_NAME (GET_MODE (in_rtx))); - -#ifndef GENERATOR_FILE - if (GET_CODE (in_rtx) == VAR_LOCATION) - { - if (TREE_CODE (PAT_VAR_LOCATION_DECL (in_rtx)) == STRING_CST) - fputs (" <debug string placeholder>", m_outfile); - else - print_mem_expr (m_outfile, PAT_VAR_LOCATION_DECL (in_rtx)); - fputc (' ', m_outfile); - print_rtx (PAT_VAR_LOCATION_LOC (in_rtx)); - if (PAT_VAR_LOCATION_STATUS (in_rtx) - == VAR_INIT_STATUS_UNINITIALIZED) - fprintf (m_outfile, " [uninit]"); - m_sawclose = 1; - idx = GET_RTX_LENGTH (VAR_LOCATION); - } -#endif - } - -#ifndef GENERATOR_FILE - if (CONST_DOUBLE_AS_FLOAT_P (in_rtx)) - idx = 5; -#endif - - /* For insns, print the INSN_UID. */ - if (INSN_CHAIN_CODE_P (GET_CODE (in_rtx))) - { - if (flag_dump_unnumbered) - fprintf (m_outfile, " #"); - else - fprintf (m_outfile, " %d", INSN_UID (in_rtx)); - } - - /* Determine which is the final operand to print. - In compact mode, skip trailing operands that have the default values - e.g. trailing "(nil)" values. */ - int limit = GET_RTX_LENGTH (GET_CODE (in_rtx)); - if (m_compact) - while (limit > idx && operand_has_default_value_p (in_rtx, limit - 1)) - limit--; - - /* Get the format string and skip the first elements if we have handled - them already. */ - - for (; idx < limit; idx++) - print_rtx_operand (in_rtx, idx); - - switch (GET_CODE (in_rtx)) - { -#ifndef GENERATOR_FILE - case MEM: - if (__builtin_expect (final_insns_dump_p, false)) - fprintf (m_outfile, " ["); - else - fprintf (m_outfile, " [" HOST_WIDE_INT_PRINT_DEC, - (HOST_WIDE_INT) MEM_ALIAS_SET (in_rtx)); - - if (MEM_EXPR (in_rtx)) - print_mem_expr (m_outfile, MEM_EXPR (in_rtx)); - else - fputc (' ', m_outfile); - - if (MEM_OFFSET_KNOWN_P (in_rtx)) - { - fprintf (m_outfile, "+"); - print_poly_int (m_outfile, MEM_OFFSET (in_rtx)); - } - - if (MEM_SIZE_KNOWN_P (in_rtx)) - { - fprintf (m_outfile, " S"); - print_poly_int (m_outfile, MEM_SIZE (in_rtx)); - } - - if (MEM_ALIGN (in_rtx) != 1) - fprintf (m_outfile, " A%u", MEM_ALIGN (in_rtx)); - - if (!ADDR_SPACE_GENERIC_P (MEM_ADDR_SPACE (in_rtx))) - fprintf (m_outfile, " AS%u", MEM_ADDR_SPACE (in_rtx)); - - fputc (']', m_outfile); - break; - - case CONST_DOUBLE: - if (FLOAT_MODE_P (GET_MODE (in_rtx))) - { - char s[60]; - - real_to_decimal (s, CONST_DOUBLE_REAL_VALUE (in_rtx), - sizeof (s), 0, 1); - fprintf (m_outfile, " %s", s); - - real_to_hexadecimal (s, CONST_DOUBLE_REAL_VALUE (in_rtx), - sizeof (s), 0, 1); - fprintf (m_outfile, " [%s]", s); - } - break; - - case CONST_WIDE_INT: - fprintf (m_outfile, " "); - cwi_output_hex (m_outfile, in_rtx); - break; - - case CONST_POLY_INT: - fprintf (m_outfile, " ["); - print_dec (CONST_POLY_INT_COEFFS (in_rtx)[0], m_outfile, SIGNED); - for (unsigned int i = 1; i < NUM_POLY_INT_COEFFS; ++i) - { - fprintf (m_outfile, ", "); - print_dec (CONST_POLY_INT_COEFFS (in_rtx)[i], m_outfile, SIGNED); - } - fprintf (m_outfile, "]"); - break; -#endif - - case CODE_LABEL: - if (!m_compact) - fprintf (m_outfile, " [%d uses]", LABEL_NUSES (in_rtx)); - switch (LABEL_KIND (in_rtx)) - { - case LABEL_NORMAL: break; - case LABEL_STATIC_ENTRY: fputs (" [entry]", m_outfile); break; - case LABEL_GLOBAL_ENTRY: fputs (" [global entry]", m_outfile); break; - case LABEL_WEAK_ENTRY: fputs (" [weak entry]", m_outfile); break; - default: gcc_unreachable (); - } - break; - - default: - break; - } - - fputc (')', m_outfile); - m_sawclose = 1; -} - -/* Emit a closing parenthesis and newline. */ - -void -rtx_writer::finish_directive () -{ - fprintf (m_outfile, ")\n"); - m_sawclose = 0; -} - -/* Print an rtx on the current line of FILE. Initially indent IND - characters. */ - -void -print_inline_rtx (FILE *outf, const_rtx x, int ind) -{ - rtx_writer w (outf, ind, false, false, NULL); - w.print_rtx (x); -} - -/* Call this function from the debugger to see what X looks like. */ - -DEBUG_FUNCTION void -debug_rtx (const_rtx x) -{ - rtx_writer w (stderr, 0, false, false, NULL); - w.print_rtx (x); - fprintf (stderr, "\n"); -} - -/* Dump rtx REF. */ - -DEBUG_FUNCTION void -debug (const rtx_def &ref) -{ - debug_rtx (&ref); -} - -DEBUG_FUNCTION void -debug (const rtx_def *ptr) -{ - if (ptr) - debug (*ptr); - else - fprintf (stderr, "<nil>\n"); -} - -/* Like debug_rtx but with no newline, as debug_helper will add one. - - Note: No debug_slim(rtx_insn *) variant implemented, as this - function can serve for both rtx and rtx_insn. */ - -static void -debug_slim (const_rtx x) -{ - rtx_writer w (stderr, 0, false, false, NULL); - w.print_rtx (x); -} - -DEFINE_DEBUG_VEC (rtx_def *) -DEFINE_DEBUG_VEC (rtx_insn *) -DEFINE_DEBUG_HASH_SET (rtx_def *) -DEFINE_DEBUG_HASH_SET (rtx_insn *) - -/* Count of rtx's to print with debug_rtx_list. - This global exists because gdb user defined commands have no arguments. */ - -DEBUG_VARIABLE int debug_rtx_count = 0; /* 0 is treated as equivalent to 1 */ - -/* Call this function to print list from X on. - - N is a count of the rtx's to print. Positive values print from the specified - rtx_insn on. Negative values print a window around the rtx_insn. - EG: -5 prints 2 rtx_insn's on either side (in addition to the specified - rtx_insn). */ - -DEBUG_FUNCTION void -debug_rtx_list (const rtx_insn *x, int n) -{ - int i,count; - const rtx_insn *insn; - - count = n == 0 ? 1 : n < 0 ? -n : n; - - /* If we are printing a window, back up to the start. */ - - if (n < 0) - for (i = count / 2; i > 0; i--) - { - if (PREV_INSN (x) == 0) - break; - x = PREV_INSN (x); - } - - for (i = count, insn = x; i > 0 && insn != 0; i--, insn = NEXT_INSN (insn)) - { - debug_rtx (insn); - fprintf (stderr, "\n"); - } -} - -/* Call this function to print an rtx_insn list from START to END - inclusive. */ - -DEBUG_FUNCTION void -debug_rtx_range (const rtx_insn *start, const rtx_insn *end) -{ - while (1) - { - debug_rtx (start); - fprintf (stderr, "\n"); - if (!start || start == end) - break; - start = NEXT_INSN (start); - } -} - -/* Call this function to search an rtx_insn list to find one with insn uid UID, - and then call debug_rtx_list to print it, using DEBUG_RTX_COUNT. - The found insn is returned to enable further debugging analysis. */ - -DEBUG_FUNCTION const rtx_insn * -debug_rtx_find (const rtx_insn *x, int uid) -{ - while (x != 0 && INSN_UID (x) != uid) - x = NEXT_INSN (x); - if (x != 0) - { - debug_rtx_list (x, debug_rtx_count); - return x; - } - else - { - fprintf (stderr, "insn uid %d not found\n", uid); - return 0; - } -} - -/* External entry point for printing a chain of insns - starting with RTX_FIRST. - A blank line separates insns. - - If RTX_FIRST is not an insn, then it alone is printed, with no newline. */ - -void -rtx_writer::print_rtl (const_rtx rtx_first) -{ - const rtx_insn *tmp_rtx; - - if (rtx_first == 0) - { - fputs (print_rtx_head, m_outfile); - fputs ("(nil)\n", m_outfile); - } - else - switch (GET_CODE (rtx_first)) - { - case INSN: - case JUMP_INSN: - case CALL_INSN: - case NOTE: - case CODE_LABEL: - case JUMP_TABLE_DATA: - case BARRIER: - for (tmp_rtx = as_a <const rtx_insn *> (rtx_first); - tmp_rtx != 0; - tmp_rtx = NEXT_INSN (tmp_rtx)) - { - fputs (print_rtx_head, m_outfile); - print_rtx (tmp_rtx); - fprintf (m_outfile, "\n"); - } - break; - - default: - fputs (print_rtx_head, m_outfile); - print_rtx (rtx_first); - } -} - -/* External entry point for printing a chain of insns - starting with RTX_FIRST onto file OUTF. - A blank line separates insns. - - If RTX_FIRST is not an insn, then it alone is printed, with no newline. */ - -void -print_rtl (FILE *outf, const_rtx rtx_first) -{ - rtx_writer w (outf, 0, false, false, NULL); - w.print_rtl (rtx_first); -} - -/* Like print_rtx, except specify a file. */ -/* Return nonzero if we actually printed anything. */ - -int -print_rtl_single (FILE *outf, const_rtx x) -{ - rtx_writer w (outf, 0, false, false, NULL); - return w.print_rtl_single_with_indent (x, 0); -} - -/* Like print_rtl_single, except specify an indentation. */ - -int -rtx_writer::print_rtl_single_with_indent (const_rtx x, int ind) -{ - char *s_indent = (char *) alloca ((size_t) ind + 1); - memset ((void *) s_indent, ' ', (size_t) ind); - s_indent[ind] = '\0'; - fputs (s_indent, m_outfile); - fputs (print_rtx_head, m_outfile); - - int old_indent = m_indent; - m_indent = ind; - m_sawclose = 0; - print_rtx (x); - putc ('\n', m_outfile); - m_indent = old_indent; - return 1; -} - - -/* Like print_rtl except without all the detail; for example, - if RTX is a CONST_INT then print in decimal format. */ - -void -print_simple_rtl (FILE *outf, const_rtx x) -{ - rtx_writer w (outf, 0, true, false, NULL); - w.print_rtl (x); -} - -/* Print the elements of VEC to FILE. */ - -void -print_rtx_insn_vec (FILE *file, const vec<rtx_insn *> &vec) -{ - fputc('{', file); - - unsigned int len = vec.length (); - for (unsigned int i = 0; i < len; i++) - { - print_rtl_single (file, vec[i]); - if (i < len - 1) - fputs (", ", file); - } - - fputc ('}', file); -} - -#ifndef GENERATOR_FILE -/* The functions below try to print RTL in a form resembling assembler - mnemonics. Because this form is more concise than the "traditional" form - of RTL printing in Lisp-style, the form printed by this file is called - "slim". RTL dumps in slim format can be obtained by appending the "-slim" - option to -fdump-rtl-<pass>. Control flow graph output as a DOT file is - always printed in slim form. - - The normal interface to the functionality provided in this pretty-printer - is through the dump_*_slim functions to print to a stream, or via the - print_*_slim functions to print into a user's pretty-printer. - - It is also possible to obtain a string for a single pattern as a string - pointer, via str_pattern_slim, but this usage is discouraged. */ - -/* This recognizes rtx'en classified as expressions. These are always - represent some action on values or results of other expression, that - may be stored in objects representing values. */ - -static void -print_exp (pretty_printer *pp, const_rtx x, int verbose) -{ - const char *st[4]; - const char *fun; - rtx op[4]; - int i; - - fun = (char *) 0; - for (i = 0; i < 4; i++) - { - st[i] = (char *) 0; - op[i] = NULL_RTX; - } - - switch (GET_CODE (x)) - { - case PLUS: - op[0] = XEXP (x, 0); - if (CONST_INT_P (XEXP (x, 1)) - && INTVAL (XEXP (x, 1)) < 0) - { - st[1] = "-"; - op[1] = GEN_INT (-INTVAL (XEXP (x, 1))); - } - else - { - st[1] = "+"; - op[1] = XEXP (x, 1); - } - break; - case LO_SUM: - op[0] = XEXP (x, 0); - st[1] = "+low("; - op[1] = XEXP (x, 1); - st[2] = ")"; - break; - case MINUS: - op[0] = XEXP (x, 0); - st[1] = "-"; - op[1] = XEXP (x, 1); - break; - case COMPARE: - fun = "cmp"; - op[0] = XEXP (x, 0); - op[1] = XEXP (x, 1); - break; - case NEG: - st[0] = "-"; - op[0] = XEXP (x, 0); - break; - case FMA: - st[0] = "{"; - op[0] = XEXP (x, 0); - st[1] = "*"; - op[1] = XEXP (x, 1); - st[2] = "+"; - op[2] = XEXP (x, 2); - st[3] = "}"; - break; - case MULT: - op[0] = XEXP (x, 0); - st[1] = "*"; - op[1] = XEXP (x, 1); - break; - case DIV: - op[0] = XEXP (x, 0); - st[1] = "/"; - op[1] = XEXP (x, 1); - break; - case UDIV: - fun = "udiv"; - op[0] = XEXP (x, 0); - op[1] = XEXP (x, 1); - break; - case MOD: - op[0] = XEXP (x, 0); - st[1] = "%"; - op[1] = XEXP (x, 1); - break; - case UMOD: - fun = "umod"; - op[0] = XEXP (x, 0); - op[1] = XEXP (x, 1); - break; - case SMIN: - fun = "smin"; - op[0] = XEXP (x, 0); - op[1] = XEXP (x, 1); - break; - case SMAX: - fun = "smax"; - op[0] = XEXP (x, 0); - op[1] = XEXP (x, 1); - break; - case UMIN: - fun = "umin"; - op[0] = XEXP (x, 0); - op[1] = XEXP (x, 1); - break; - case UMAX: - fun = "umax"; - op[0] = XEXP (x, 0); - op[1] = XEXP (x, 1); - break; - case NOT: - st[0] = "~"; - op[0] = XEXP (x, 0); - break; - case AND: - op[0] = XEXP (x, 0); - st[1] = "&"; - op[1] = XEXP (x, 1); - break; - case IOR: - op[0] = XEXP (x, 0); - st[1] = "|"; - op[1] = XEXP (x, 1); - break; - case XOR: - op[0] = XEXP (x, 0); - st[1] = "^"; - op[1] = XEXP (x, 1); - break; - case ASHIFT: - op[0] = XEXP (x, 0); - st[1] = "<<"; - op[1] = XEXP (x, 1); - break; - case LSHIFTRT: - op[0] = XEXP (x, 0); - st[1] = " 0>>"; - op[1] = XEXP (x, 1); - break; - case ASHIFTRT: - op[0] = XEXP (x, 0); - st[1] = ">>"; - op[1] = XEXP (x, 1); - break; - case ROTATE: - op[0] = XEXP (x, 0); - st[1] = "<-<"; - op[1] = XEXP (x, 1); - break; - case ROTATERT: - op[0] = XEXP (x, 0); - st[1] = ">->"; - op[1] = XEXP (x, 1); - break; - case NE: - op[0] = XEXP (x, 0); - st[1] = "!="; - op[1] = XEXP (x, 1); - break; - case EQ: - op[0] = XEXP (x, 0); - st[1] = "=="; - op[1] = XEXP (x, 1); - break; - case GE: - op[0] = XEXP (x, 0); - st[1] = ">="; - op[1] = XEXP (x, 1); - break; - case GT: - op[0] = XEXP (x, 0); - st[1] = ">"; - op[1] = XEXP (x, 1); - break; - case LE: - op[0] = XEXP (x, 0); - st[1] = "<="; - op[1] = XEXP (x, 1); - break; - case LT: - op[0] = XEXP (x, 0); - st[1] = "<"; - op[1] = XEXP (x, 1); - break; - case SIGN_EXTRACT: - fun = (verbose) ? "sign_extract" : "sxt"; - op[0] = XEXP (x, 0); - op[1] = XEXP (x, 1); - op[2] = XEXP (x, 2); - break; - case ZERO_EXTRACT: - fun = (verbose) ? "zero_extract" : "zxt"; - op[0] = XEXP (x, 0); - op[1] = XEXP (x, 1); - op[2] = XEXP (x, 2); - break; - case SIGN_EXTEND: - fun = (verbose) ? "sign_extend" : "sxn"; - op[0] = XEXP (x, 0); - break; - case ZERO_EXTEND: - fun = (verbose) ? "zero_extend" : "zxn"; - op[0] = XEXP (x, 0); - break; - case FLOAT_EXTEND: - fun = (verbose) ? "float_extend" : "fxn"; - op[0] = XEXP (x, 0); - break; - case TRUNCATE: - fun = (verbose) ? "trunc" : "trn"; - op[0] = XEXP (x, 0); - break; - case FLOAT_TRUNCATE: - fun = (verbose) ? "float_trunc" : "ftr"; - op[0] = XEXP (x, 0); - break; - case FLOAT: - fun = (verbose) ? "float" : "flt"; - op[0] = XEXP (x, 0); - break; - case UNSIGNED_FLOAT: - fun = (verbose) ? "uns_float" : "ufl"; - op[0] = XEXP (x, 0); - break; - case FIX: - fun = "fix"; - op[0] = XEXP (x, 0); - break; - case UNSIGNED_FIX: - fun = (verbose) ? "uns_fix" : "ufx"; - op[0] = XEXP (x, 0); - break; - case PRE_DEC: - st[0] = "--"; - op[0] = XEXP (x, 0); - break; - case PRE_INC: - st[0] = "++"; - op[0] = XEXP (x, 0); - break; - case POST_DEC: - op[0] = XEXP (x, 0); - st[1] = "--"; - break; - case POST_INC: - op[0] = XEXP (x, 0); - st[1] = "++"; - break; - case PRE_MODIFY: - st[0] = "pre "; - op[0] = XEXP (XEXP (x, 1), 0); - st[1] = "+="; - op[1] = XEXP (XEXP (x, 1), 1); - break; - case POST_MODIFY: - st[0] = "post "; - op[0] = XEXP (XEXP (x, 1), 0); - st[1] = "+="; - op[1] = XEXP (XEXP (x, 1), 1); - break; - case CALL: - st[0] = "call "; - op[0] = XEXP (x, 0); - if (verbose) - { - st[1] = " argc:"; - op[1] = XEXP (x, 1); - } - break; - case IF_THEN_ELSE: - st[0] = "{("; - op[0] = XEXP (x, 0); - st[1] = ")?"; - op[1] = XEXP (x, 1); - st[2] = ":"; - op[2] = XEXP (x, 2); - st[3] = "}"; - break; - case TRAP_IF: - fun = "trap_if"; - op[0] = TRAP_CONDITION (x); - break; - case PREFETCH: - fun = "prefetch"; - op[0] = XEXP (x, 0); - op[1] = XEXP (x, 1); - op[2] = XEXP (x, 2); - break; - case UNSPEC: - case UNSPEC_VOLATILE: - { - pp_string (pp, "unspec"); - if (GET_CODE (x) == UNSPEC_VOLATILE) - pp_string (pp, "/v"); - pp_left_bracket (pp); - for (i = 0; i < XVECLEN (x, 0); i++) - { - if (i != 0) - pp_comma (pp); - print_pattern (pp, XVECEXP (x, 0, i), verbose); - } - pp_string (pp, "] "); - pp_decimal_int (pp, XINT (x, 1)); - } - break; - default: - { - /* Most unhandled codes can be printed as pseudo-functions. */ - if (GET_RTX_CLASS (GET_CODE (x)) == RTX_UNARY) - { - fun = GET_RTX_NAME (GET_CODE (x)); - op[0] = XEXP (x, 0); - } - else if (GET_RTX_CLASS (GET_CODE (x)) == RTX_COMPARE - || GET_RTX_CLASS (GET_CODE (x)) == RTX_COMM_COMPARE - || GET_RTX_CLASS (GET_CODE (x)) == RTX_BIN_ARITH - || GET_RTX_CLASS (GET_CODE (x)) == RTX_COMM_ARITH) - { - fun = GET_RTX_NAME (GET_CODE (x)); - op[0] = XEXP (x, 0); - op[1] = XEXP (x, 1); - } - else if (GET_RTX_CLASS (GET_CODE (x)) == RTX_TERNARY) - { - fun = GET_RTX_NAME (GET_CODE (x)); - op[0] = XEXP (x, 0); - op[1] = XEXP (x, 1); - op[2] = XEXP (x, 2); - } - else - /* Give up, just print the RTX name. */ - st[0] = GET_RTX_NAME (GET_CODE (x)); - } - break; - } - - /* Print this as a function? */ - if (fun) - { - pp_string (pp, fun); - pp_left_paren (pp); - } - - for (i = 0; i < 4; i++) - { - if (st[i]) - pp_string (pp, st[i]); - - if (op[i]) - { - if (fun && i != 0) - pp_comma (pp); - print_value (pp, op[i], verbose); - } - } - - if (fun) - pp_right_paren (pp); -} /* print_exp */ - -/* Prints rtxes, I customarily classified as values. They're constants, - registers, labels, symbols and memory accesses. */ - -void -print_value (pretty_printer *pp, const_rtx x, int verbose) -{ - char tmp[1024]; - - if (!x) - { - pp_string (pp, "(nil)"); - return; - } - switch (GET_CODE (x)) - { - case CONST_INT: - pp_scalar (pp, HOST_WIDE_INT_PRINT_HEX, - (unsigned HOST_WIDE_INT) INTVAL (x)); - break; - - case CONST_WIDE_INT: - { - const char *sep = "<"; - int i; - for (i = CONST_WIDE_INT_NUNITS (x) - 1; i >= 0; i--) - { - pp_string (pp, sep); - sep = ","; - sprintf (tmp, HOST_WIDE_INT_PRINT_HEX, - (unsigned HOST_WIDE_INT) CONST_WIDE_INT_ELT (x, i)); - pp_string (pp, tmp); - } - pp_greater (pp); - } - break; - - case CONST_POLY_INT: - pp_left_bracket (pp); - pp_wide_int (pp, CONST_POLY_INT_COEFFS (x)[0], SIGNED); - for (unsigned int i = 1; i < NUM_POLY_INT_COEFFS; ++i) - { - pp_string (pp, ", "); - pp_wide_int (pp, CONST_POLY_INT_COEFFS (x)[i], SIGNED); - } - pp_right_bracket (pp); - break; - - case CONST_DOUBLE: - if (FLOAT_MODE_P (GET_MODE (x))) - { - real_to_decimal (tmp, CONST_DOUBLE_REAL_VALUE (x), - sizeof (tmp), 0, 1); - pp_string (pp, tmp); - } - else - pp_printf (pp, "<%wx,%wx>", - (unsigned HOST_WIDE_INT) CONST_DOUBLE_LOW (x), - (unsigned HOST_WIDE_INT) CONST_DOUBLE_HIGH (x)); - break; - case CONST_FIXED: - fixed_to_decimal (tmp, CONST_FIXED_VALUE (x), sizeof (tmp)); - pp_string (pp, tmp); - break; - case CONST_STRING: - pp_string (pp, "\""); - pretty_print_string (pp, XSTR (x, 0), strlen (XSTR (x, 0))); - pp_string (pp, "\""); - break; - case SYMBOL_REF: - pp_printf (pp, "`%s'", XSTR (x, 0)); - break; - case LABEL_REF: - pp_printf (pp, "L%d", INSN_UID (label_ref_label (x))); - break; - case CONST: - case HIGH: - case STRICT_LOW_PART: - pp_printf (pp, "%s(", GET_RTX_NAME (GET_CODE (x))); - print_value (pp, XEXP (x, 0), verbose); - pp_right_paren (pp); - break; - case REG: - if (REGNO (x) < FIRST_PSEUDO_REGISTER) - { - if (ISDIGIT (reg_names[REGNO (x)][0])) - pp_modulo (pp); - pp_string (pp, reg_names[REGNO (x)]); - } - else - pp_printf (pp, "r%d", REGNO (x)); - if (verbose) - pp_printf (pp, ":%s", GET_MODE_NAME (GET_MODE (x))); - break; - case SUBREG: - print_value (pp, SUBREG_REG (x), verbose); - pp_printf (pp, "#"); - pp_wide_integer (pp, SUBREG_BYTE (x)); - break; - case SCRATCH: - case PC: - pp_string (pp, GET_RTX_NAME (GET_CODE (x))); - break; - case MEM: - pp_left_bracket (pp); - print_value (pp, XEXP (x, 0), verbose); - pp_right_bracket (pp); - break; - case DEBUG_EXPR: - pp_printf (pp, "D#%i", DEBUG_TEMP_UID (DEBUG_EXPR_TREE_DECL (x))); - break; - default: - print_exp (pp, x, verbose); - break; - } -} /* print_value */ - -/* The next step in insn detalization, its pattern recognition. */ - -void -print_pattern (pretty_printer *pp, const_rtx x, int verbose) -{ - if (! x) - { - pp_string (pp, "(nil)"); - return; - } - - switch (GET_CODE (x)) - { - case SET: - print_value (pp, SET_DEST (x), verbose); - pp_equal (pp); - print_value (pp, SET_SRC (x), verbose); - break; - case RETURN: - case SIMPLE_RETURN: - case EH_RETURN: - pp_string (pp, GET_RTX_NAME (GET_CODE (x))); - break; - case CALL: - print_exp (pp, x, verbose); - break; - case CLOBBER: - case USE: - pp_printf (pp, "%s ", GET_RTX_NAME (GET_CODE (x))); - print_value (pp, XEXP (x, 0), verbose); - break; - case VAR_LOCATION: - pp_string (pp, "loc "); - print_value (pp, PAT_VAR_LOCATION_LOC (x), verbose); - break; - case COND_EXEC: - pp_left_paren (pp); - if (GET_CODE (COND_EXEC_TEST (x)) == NE - && XEXP (COND_EXEC_TEST (x), 1) == const0_rtx) - print_value (pp, XEXP (COND_EXEC_TEST (x), 0), verbose); - else if (GET_CODE (COND_EXEC_TEST (x)) == EQ - && XEXP (COND_EXEC_TEST (x), 1) == const0_rtx) - { - pp_exclamation (pp); - print_value (pp, XEXP (COND_EXEC_TEST (x), 0), verbose); - } - else - print_value (pp, COND_EXEC_TEST (x), verbose); - pp_string (pp, ") "); - print_pattern (pp, COND_EXEC_CODE (x), verbose); - break; - case PARALLEL: - { - int i; - - pp_left_brace (pp); - for (i = 0; i < XVECLEN (x, 0); i++) - { - print_pattern (pp, XVECEXP (x, 0, i), verbose); - pp_semicolon (pp); - } - pp_right_brace (pp); - } - break; - case SEQUENCE: - { - const rtx_sequence *seq = as_a <const rtx_sequence *> (x); - pp_string (pp, "sequence{"); - if (INSN_P (seq->element (0))) - { - /* Print the sequence insns indented. */ - const char * save_print_rtx_head = print_rtx_head; - char indented_print_rtx_head[32]; - - pp_newline (pp); - gcc_assert (strlen (print_rtx_head) < sizeof (indented_print_rtx_head) - 4); - snprintf (indented_print_rtx_head, - sizeof (indented_print_rtx_head), - "%s ", print_rtx_head); - print_rtx_head = indented_print_rtx_head; - for (int i = 0; i < seq->len (); i++) - print_insn_with_notes (pp, seq->insn (i)); - pp_printf (pp, "%s ", save_print_rtx_head); - print_rtx_head = save_print_rtx_head; - } - else - { - for (int i = 0; i < seq->len (); i++) - { - print_pattern (pp, seq->element (i), verbose); - pp_semicolon (pp); - } - } - pp_right_brace (pp); - } - break; - case ASM_INPUT: - pp_printf (pp, "asm {%s}", XSTR (x, 0)); - break; - case ADDR_VEC: - for (int i = 0; i < XVECLEN (x, 0); i++) - { - print_value (pp, XVECEXP (x, 0, i), verbose); - pp_semicolon (pp); - } - break; - case ADDR_DIFF_VEC: - for (int i = 0; i < XVECLEN (x, 1); i++) - { - print_value (pp, XVECEXP (x, 1, i), verbose); - pp_semicolon (pp); - } - break; - case TRAP_IF: - pp_string (pp, "trap_if "); - print_value (pp, TRAP_CONDITION (x), verbose); - break; - case UNSPEC: - case UNSPEC_VOLATILE: - /* Fallthru -- leave UNSPECs to print_exp. */ - default: - print_value (pp, x, verbose); - } -} /* print_pattern */ - -/* This is the main function in slim rtl visualization mechanism. - - X is an insn, to be printed into PP. - - This function tries to print it properly in human-readable form, - resembling assembler mnemonics (instead of the older Lisp-style - form). - - If VERBOSE is TRUE, insns are printed with more complete (but - longer) pattern names and with extra information, and prefixed - with their INSN_UIDs. */ - -void -print_insn (pretty_printer *pp, const rtx_insn *x, int verbose) -{ - if (verbose) - { - /* Blech, pretty-print can't print integers with a specified width. */ - char uid_prefix[32]; - snprintf (uid_prefix, sizeof uid_prefix, " %4d: ", INSN_UID (x)); - pp_string (pp, uid_prefix); - } - - switch (GET_CODE (x)) - { - case INSN: - print_pattern (pp, PATTERN (x), verbose); - break; - - case DEBUG_INSN: - { - if (DEBUG_MARKER_INSN_P (x)) - { - switch (INSN_DEBUG_MARKER_KIND (x)) - { - case NOTE_INSN_BEGIN_STMT: - pp_string (pp, "debug begin stmt marker"); - break; - - case NOTE_INSN_INLINE_ENTRY: - pp_string (pp, "debug inline entry marker"); - break; - - default: - gcc_unreachable (); - } - break; - } - - const char *name = "?"; - char idbuf[32]; - - if (DECL_P (INSN_VAR_LOCATION_DECL (x))) - { - tree id = DECL_NAME (INSN_VAR_LOCATION_DECL (x)); - if (id) - name = IDENTIFIER_POINTER (id); - else if (TREE_CODE (INSN_VAR_LOCATION_DECL (x)) - == DEBUG_EXPR_DECL) - { - sprintf (idbuf, "D#%i", - DEBUG_TEMP_UID (INSN_VAR_LOCATION_DECL (x))); - name = idbuf; - } - else - { - sprintf (idbuf, "D.%i", - DECL_UID (INSN_VAR_LOCATION_DECL (x))); - name = idbuf; - } - } - pp_printf (pp, "debug %s => ", name); - if (VAR_LOC_UNKNOWN_P (INSN_VAR_LOCATION_LOC (x))) - pp_string (pp, "optimized away"); - else - print_pattern (pp, INSN_VAR_LOCATION_LOC (x), verbose); - } - break; - - case JUMP_INSN: - print_pattern (pp, PATTERN (x), verbose); - break; - case CALL_INSN: - if (GET_CODE (PATTERN (x)) == PARALLEL) - print_pattern (pp, XVECEXP (PATTERN (x), 0, 0), verbose); - else - print_pattern (pp, PATTERN (x), verbose); - break; - case CODE_LABEL: - pp_printf (pp, "L%d:", INSN_UID (x)); - break; - case JUMP_TABLE_DATA: - pp_string (pp, "jump_table_data{\n"); - print_pattern (pp, PATTERN (x), verbose); - pp_right_brace (pp); - break; - case BARRIER: - pp_string (pp, "barrier"); - break; - case NOTE: - { - pp_string (pp, GET_NOTE_INSN_NAME (NOTE_KIND (x))); - switch (NOTE_KIND (x)) - { - case NOTE_INSN_EH_REGION_BEG: - case NOTE_INSN_EH_REGION_END: - pp_printf (pp, " %d", NOTE_EH_HANDLER (x)); - break; - - case NOTE_INSN_BLOCK_BEG: - case NOTE_INSN_BLOCK_END: - pp_printf (pp, " %d", BLOCK_NUMBER (NOTE_BLOCK (x))); - break; - - case NOTE_INSN_BASIC_BLOCK: - pp_printf (pp, " %d", NOTE_BASIC_BLOCK (x)->index); - break; - - case NOTE_INSN_DELETED_LABEL: - case NOTE_INSN_DELETED_DEBUG_LABEL: - { - const char *label = NOTE_DELETED_LABEL_NAME (x); - if (label == NULL) - label = ""; - pp_printf (pp, " (\"%s\")", label); - } - break; - - case NOTE_INSN_VAR_LOCATION: - pp_left_brace (pp); - print_pattern (pp, NOTE_VAR_LOCATION (x), verbose); - pp_right_brace (pp); - break; - - default: - break; - } - break; - } - default: - gcc_unreachable (); - } -} /* print_insn */ - -/* Pretty-print a slim dump of X (an insn) to PP, including any register - note attached to the instruction. */ - -void -print_insn_with_notes (pretty_printer *pp, const rtx_insn *x) -{ - pp_string (pp, print_rtx_head); - print_insn (pp, x, 1); - pp_newline (pp); - if (INSN_P (x) && REG_NOTES (x)) - for (rtx note = REG_NOTES (x); note; note = XEXP (note, 1)) - { - pp_printf (pp, "%s %s ", print_rtx_head, - GET_REG_NOTE_NAME (REG_NOTE_KIND (note))); - if (GET_CODE (note) == INT_LIST) - pp_printf (pp, "%d", XINT (note, 0)); - else - print_pattern (pp, XEXP (note, 0), 1); - pp_newline (pp); - } -} - -/* Print X, an RTL value node, to file F in slim format. Include - additional information if VERBOSE is nonzero. - - Value nodes are constants, registers, labels, symbols and - memory. */ - -void -dump_value_slim (FILE *f, const_rtx x, int verbose) -{ - pretty_printer rtl_slim_pp; - rtl_slim_pp.buffer->stream = f; - print_value (&rtl_slim_pp, x, verbose); - pp_flush (&rtl_slim_pp); -} - -/* Emit a slim dump of X (an insn) to the file F, including any register - note attached to the instruction. */ -void -dump_insn_slim (FILE *f, const rtx_insn *x) -{ - pretty_printer rtl_slim_pp; - rtl_slim_pp.buffer->stream = f; - print_insn_with_notes (&rtl_slim_pp, x); - pp_flush (&rtl_slim_pp); -} - -/* Same as above, but stop at LAST or when COUNT == 0. - If COUNT < 0 it will stop only at LAST or NULL rtx. */ - -void -dump_rtl_slim (FILE *f, const rtx_insn *first, const rtx_insn *last, - int count, int flags ATTRIBUTE_UNUSED) -{ - const rtx_insn *insn, *tail; - pretty_printer rtl_slim_pp; - rtl_slim_pp.buffer->stream = f; - - tail = last ? NEXT_INSN (last) : NULL; - for (insn = first; - (insn != NULL) && (insn != tail) && (count != 0); - insn = NEXT_INSN (insn)) - { - print_insn_with_notes (&rtl_slim_pp, insn); - if (count > 0) - count--; - } - - pp_flush (&rtl_slim_pp); -} - -/* Dumps basic block BB to pretty-printer PP in slim form and without and - no indentation, for use as a label of a DOT graph record-node. */ - -void -rtl_dump_bb_for_graph (pretty_printer *pp, basic_block bb) -{ - rtx_insn *insn; - bool first = true; - - /* TODO: inter-bb stuff. */ - FOR_BB_INSNS (bb, insn) - { - if (! first) - { - pp_bar (pp); - pp_write_text_to_stream (pp); - } - first = false; - print_insn_with_notes (pp, insn); - pp_write_text_as_dot_label_to_stream (pp, /*for_record=*/true); - } -} - -/* Pretty-print pattern X of some insn in non-verbose mode. - Return a string pointer to the pretty-printer buffer. - - This function is only exported exists only to accommodate some older users - of the slim RTL pretty printers. Please do not use it for new code. */ - -const char * -str_pattern_slim (const_rtx x) -{ - pretty_printer rtl_slim_pp; - print_pattern (&rtl_slim_pp, x, 0); - return ggc_strdup (pp_formatted_text (&rtl_slim_pp)); -} - -/* Emit a slim dump of X (an insn) to stderr. */ -extern void debug_insn_slim (const rtx_insn *); -DEBUG_FUNCTION void -debug_insn_slim (const rtx_insn *x) -{ - dump_insn_slim (stderr, x); -} - -/* Same as above, but using dump_rtl_slim. */ -extern void debug_rtl_slim (FILE *, const rtx_insn *, const rtx_insn *, - int, int); -DEBUG_FUNCTION void -debug_rtl_slim (const rtx_insn *first, const rtx_insn *last, int count, - int flags) -{ - dump_rtl_slim (stderr, first, last, count, flags); -} - -extern void debug_bb_slim (basic_block); -DEBUG_FUNCTION void -debug_bb_slim (basic_block bb) -{ - debug_bb (bb, TDF_SLIM | TDF_BLOCKS); -} - -extern void debug_bb_n_slim (int); -DEBUG_FUNCTION void -debug_bb_n_slim (int n) -{ - basic_block bb = BASIC_BLOCK_FOR_FN (cfun, n); - debug_bb_slim (bb); -} - -#endif - -#if __GNUC__ >= 10 -# pragma GCC diagnostic pop -#endif |