aboutsummaryrefslogtreecommitdiff
path: root/gcc/print-rtl.c
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2022-01-14 16:56:44 +0100
committerMartin Liska <mliska@suse.cz>2022-01-17 22:12:04 +0100
commit5c69acb32329d49e58c26fa41ae74229a52b9106 (patch)
treeddb05f9d73afb6f998457d2ac4b720e3b3b60483 /gcc/print-rtl.c
parent490e23032baaece71f2ec09fa1805064b150fbc2 (diff)
downloadgcc-5c69acb32329d49e58c26fa41ae74229a52b9106.zip
gcc-5c69acb32329d49e58c26fa41ae74229a52b9106.tar.gz
gcc-5c69acb32329d49e58c26fa41ae74229a52b9106.tar.bz2
Rename .c files to .cc files.
gcc/ada/ChangeLog: * adadecode.c: Moved to... * adadecode.cc: ...here. * affinity.c: Moved to... * affinity.cc: ...here. * argv-lynxos178-raven-cert.c: Moved to... * argv-lynxos178-raven-cert.cc: ...here. * argv.c: Moved to... * argv.cc: ...here. * aux-io.c: Moved to... * aux-io.cc: ...here. * cio.c: Moved to... * cio.cc: ...here. * cstreams.c: Moved to... * cstreams.cc: ...here. * env.c: Moved to... * env.cc: ...here. * exit.c: Moved to... * exit.cc: ...here. * expect.c: Moved to... * expect.cc: ...here. * final.c: Moved to... * final.cc: ...here. * gcc-interface/cuintp.c: Moved to... * gcc-interface/cuintp.cc: ...here. * gcc-interface/decl.c: Moved to... * gcc-interface/decl.cc: ...here. * gcc-interface/misc.c: Moved to... * gcc-interface/misc.cc: ...here. * gcc-interface/targtyps.c: Moved to... * gcc-interface/targtyps.cc: ...here. * gcc-interface/trans.c: Moved to... * gcc-interface/trans.cc: ...here. * gcc-interface/utils.c: Moved to... * gcc-interface/utils.cc: ...here. * gcc-interface/utils2.c: Moved to... * gcc-interface/utils2.cc: ...here. * init.c: Moved to... * init.cc: ...here. * initialize.c: Moved to... * initialize.cc: ...here. * libgnarl/thread.c: Moved to... * libgnarl/thread.cc: ...here. * link.c: Moved to... * link.cc: ...here. * locales.c: Moved to... * locales.cc: ...here. * mkdir.c: Moved to... * mkdir.cc: ...here. * raise.c: Moved to... * raise.cc: ...here. * rtfinal.c: Moved to... * rtfinal.cc: ...here. * rtinit.c: Moved to... * rtinit.cc: ...here. * seh_init.c: Moved to... * seh_init.cc: ...here. * sigtramp-armdroid.c: Moved to... * sigtramp-armdroid.cc: ...here. * sigtramp-ios.c: Moved to... * sigtramp-ios.cc: ...here. * sigtramp-qnx.c: Moved to... * sigtramp-qnx.cc: ...here. * sigtramp-vxworks.c: Moved to... * sigtramp-vxworks.cc: ...here. * socket.c: Moved to... * socket.cc: ...here. * tracebak.c: Moved to... * tracebak.cc: ...here. * version.c: Moved to... * version.cc: ...here. * vx_stack_info.c: Moved to... * vx_stack_info.cc: ...here. gcc/ChangeLog: * adjust-alignment.c: Moved to... * adjust-alignment.cc: ...here. * alias.c: Moved to... * alias.cc: ...here. * alloc-pool.c: Moved to... * alloc-pool.cc: ...here. * asan.c: Moved to... * asan.cc: ...here. * attribs.c: Moved to... * attribs.cc: ...here. * auto-inc-dec.c: Moved to... * auto-inc-dec.cc: ...here. * auto-profile.c: Moved to... * auto-profile.cc: ...here. * bb-reorder.c: Moved to... * bb-reorder.cc: ...here. * bitmap.c: Moved to... * bitmap.cc: ...here. * btfout.c: Moved to... * btfout.cc: ...here. * builtins.c: Moved to... * builtins.cc: ...here. * caller-save.c: Moved to... * caller-save.cc: ...here. * calls.c: Moved to... * calls.cc: ...here. * ccmp.c: Moved to... * ccmp.cc: ...here. * cfg.c: Moved to... * cfg.cc: ...here. * cfganal.c: Moved to... * cfganal.cc: ...here. * cfgbuild.c: Moved to... * cfgbuild.cc: ...here. * cfgcleanup.c: Moved to... * cfgcleanup.cc: ...here. * cfgexpand.c: Moved to... * cfgexpand.cc: ...here. * cfghooks.c: Moved to... * cfghooks.cc: ...here. * cfgloop.c: Moved to... * cfgloop.cc: ...here. * cfgloopanal.c: Moved to... * cfgloopanal.cc: ...here. * cfgloopmanip.c: Moved to... * cfgloopmanip.cc: ...here. * cfgrtl.c: Moved to... * cfgrtl.cc: ...here. * cgraph.c: Moved to... * cgraph.cc: ...here. * cgraphbuild.c: Moved to... * cgraphbuild.cc: ...here. * cgraphclones.c: Moved to... * cgraphclones.cc: ...here. * cgraphunit.c: Moved to... * cgraphunit.cc: ...here. * collect-utils.c: Moved to... * collect-utils.cc: ...here. * collect2-aix.c: Moved to... * collect2-aix.cc: ...here. * collect2.c: Moved to... * collect2.cc: ...here. * combine-stack-adj.c: Moved to... * combine-stack-adj.cc: ...here. * combine.c: Moved to... * combine.cc: ...here. * common/common-targhooks.c: Moved to... * common/common-targhooks.cc: ...here. * common/config/aarch64/aarch64-common.c: Moved to... * common/config/aarch64/aarch64-common.cc: ...here. * common/config/alpha/alpha-common.c: Moved to... * common/config/alpha/alpha-common.cc: ...here. * common/config/arc/arc-common.c: Moved to... * common/config/arc/arc-common.cc: ...here. * common/config/arm/arm-common.c: Moved to... * common/config/arm/arm-common.cc: ...here. * common/config/avr/avr-common.c: Moved to... * common/config/avr/avr-common.cc: ...here. * common/config/bfin/bfin-common.c: Moved to... * common/config/bfin/bfin-common.cc: ...here. * common/config/bpf/bpf-common.c: Moved to... * common/config/bpf/bpf-common.cc: ...here. * common/config/c6x/c6x-common.c: Moved to... * common/config/c6x/c6x-common.cc: ...here. * common/config/cr16/cr16-common.c: Moved to... * common/config/cr16/cr16-common.cc: ...here. * common/config/cris/cris-common.c: Moved to... * common/config/cris/cris-common.cc: ...here. * common/config/csky/csky-common.c: Moved to... * common/config/csky/csky-common.cc: ...here. * common/config/default-common.c: Moved to... * common/config/default-common.cc: ...here. * common/config/epiphany/epiphany-common.c: Moved to... * common/config/epiphany/epiphany-common.cc: ...here. * common/config/fr30/fr30-common.c: Moved to... * common/config/fr30/fr30-common.cc: ...here. * common/config/frv/frv-common.c: Moved to... * common/config/frv/frv-common.cc: ...here. * common/config/gcn/gcn-common.c: Moved to... * common/config/gcn/gcn-common.cc: ...here. * common/config/h8300/h8300-common.c: Moved to... * common/config/h8300/h8300-common.cc: ...here. * common/config/i386/i386-common.c: Moved to... * common/config/i386/i386-common.cc: ...here. * common/config/ia64/ia64-common.c: Moved to... * common/config/ia64/ia64-common.cc: ...here. * common/config/iq2000/iq2000-common.c: Moved to... * common/config/iq2000/iq2000-common.cc: ...here. * common/config/lm32/lm32-common.c: Moved to... * common/config/lm32/lm32-common.cc: ...here. * common/config/m32r/m32r-common.c: Moved to... * common/config/m32r/m32r-common.cc: ...here. * common/config/m68k/m68k-common.c: Moved to... * common/config/m68k/m68k-common.cc: ...here. * common/config/mcore/mcore-common.c: Moved to... * common/config/mcore/mcore-common.cc: ...here. * common/config/microblaze/microblaze-common.c: Moved to... * common/config/microblaze/microblaze-common.cc: ...here. * common/config/mips/mips-common.c: Moved to... * common/config/mips/mips-common.cc: ...here. * common/config/mmix/mmix-common.c: Moved to... * common/config/mmix/mmix-common.cc: ...here. * common/config/mn10300/mn10300-common.c: Moved to... * common/config/mn10300/mn10300-common.cc: ...here. * common/config/msp430/msp430-common.c: Moved to... * common/config/msp430/msp430-common.cc: ...here. * common/config/nds32/nds32-common.c: Moved to... * common/config/nds32/nds32-common.cc: ...here. * common/config/nios2/nios2-common.c: Moved to... * common/config/nios2/nios2-common.cc: ...here. * common/config/nvptx/nvptx-common.c: Moved to... * common/config/nvptx/nvptx-common.cc: ...here. * common/config/or1k/or1k-common.c: Moved to... * common/config/or1k/or1k-common.cc: ...here. * common/config/pa/pa-common.c: Moved to... * common/config/pa/pa-common.cc: ...here. * common/config/pdp11/pdp11-common.c: Moved to... * common/config/pdp11/pdp11-common.cc: ...here. * common/config/pru/pru-common.c: Moved to... * common/config/pru/pru-common.cc: ...here. * common/config/riscv/riscv-common.c: Moved to... * common/config/riscv/riscv-common.cc: ...here. * common/config/rs6000/rs6000-common.c: Moved to... * common/config/rs6000/rs6000-common.cc: ...here. * common/config/rx/rx-common.c: Moved to... * common/config/rx/rx-common.cc: ...here. * common/config/s390/s390-common.c: Moved to... * common/config/s390/s390-common.cc: ...here. * common/config/sh/sh-common.c: Moved to... * common/config/sh/sh-common.cc: ...here. * common/config/sparc/sparc-common.c: Moved to... * common/config/sparc/sparc-common.cc: ...here. * common/config/tilegx/tilegx-common.c: Moved to... * common/config/tilegx/tilegx-common.cc: ...here. * common/config/tilepro/tilepro-common.c: Moved to... * common/config/tilepro/tilepro-common.cc: ...here. * common/config/v850/v850-common.c: Moved to... * common/config/v850/v850-common.cc: ...here. * common/config/vax/vax-common.c: Moved to... * common/config/vax/vax-common.cc: ...here. * common/config/visium/visium-common.c: Moved to... * common/config/visium/visium-common.cc: ...here. * common/config/xstormy16/xstormy16-common.c: Moved to... * common/config/xstormy16/xstormy16-common.cc: ...here. * common/config/xtensa/xtensa-common.c: Moved to... * common/config/xtensa/xtensa-common.cc: ...here. * compare-elim.c: Moved to... * compare-elim.cc: ...here. * config/aarch64/aarch64-bti-insert.c: Moved to... * config/aarch64/aarch64-bti-insert.cc: ...here. * config/aarch64/aarch64-builtins.c: Moved to... * config/aarch64/aarch64-builtins.cc: ...here. * config/aarch64/aarch64-c.c: Moved to... * config/aarch64/aarch64-c.cc: ...here. * config/aarch64/aarch64-d.c: Moved to... * config/aarch64/aarch64-d.cc: ...here. * config/aarch64/aarch64.c: Moved to... * config/aarch64/aarch64.cc: ...here. * config/aarch64/cortex-a57-fma-steering.c: Moved to... * config/aarch64/cortex-a57-fma-steering.cc: ...here. * config/aarch64/driver-aarch64.c: Moved to... * config/aarch64/driver-aarch64.cc: ...here. * config/aarch64/falkor-tag-collision-avoidance.c: Moved to... * config/aarch64/falkor-tag-collision-avoidance.cc: ...here. * config/aarch64/host-aarch64-darwin.c: Moved to... * config/aarch64/host-aarch64-darwin.cc: ...here. * config/alpha/alpha.c: Moved to... * config/alpha/alpha.cc: ...here. * config/alpha/driver-alpha.c: Moved to... * config/alpha/driver-alpha.cc: ...here. * config/arc/arc-c.c: Moved to... * config/arc/arc-c.cc: ...here. * config/arc/arc.c: Moved to... * config/arc/arc.cc: ...here. * config/arc/driver-arc.c: Moved to... * config/arc/driver-arc.cc: ...here. * config/arm/aarch-common.c: Moved to... * config/arm/aarch-common.cc: ...here. * config/arm/arm-builtins.c: Moved to... * config/arm/arm-builtins.cc: ...here. * config/arm/arm-c.c: Moved to... * config/arm/arm-c.cc: ...here. * config/arm/arm-d.c: Moved to... * config/arm/arm-d.cc: ...here. * config/arm/arm.c: Moved to... * config/arm/arm.cc: ...here. * config/arm/driver-arm.c: Moved to... * config/arm/driver-arm.cc: ...here. * config/avr/avr-c.c: Moved to... * config/avr/avr-c.cc: ...here. * config/avr/avr-devices.c: Moved to... * config/avr/avr-devices.cc: ...here. * config/avr/avr-log.c: Moved to... * config/avr/avr-log.cc: ...here. * config/avr/avr.c: Moved to... * config/avr/avr.cc: ...here. * config/avr/driver-avr.c: Moved to... * config/avr/driver-avr.cc: ...here. * config/avr/gen-avr-mmcu-specs.c: Moved to... * config/avr/gen-avr-mmcu-specs.cc: ...here. * config/avr/gen-avr-mmcu-texi.c: Moved to... * config/avr/gen-avr-mmcu-texi.cc: ...here. * config/bfin/bfin.c: Moved to... * config/bfin/bfin.cc: ...here. * config/bpf/bpf.c: Moved to... * config/bpf/bpf.cc: ...here. * config/bpf/coreout.c: Moved to... * config/bpf/coreout.cc: ...here. * config/c6x/c6x.c: Moved to... * config/c6x/c6x.cc: ...here. * config/cr16/cr16.c: Moved to... * config/cr16/cr16.cc: ...here. * config/cris/cris.c: Moved to... * config/cris/cris.cc: ...here. * config/csky/csky.c: Moved to... * config/csky/csky.cc: ...here. * config/darwin-c.c: Moved to... * config/darwin-c.cc: ...here. * config/darwin-d.c: Moved to... * config/darwin-d.cc: ...here. * config/darwin-driver.c: Moved to... * config/darwin-driver.cc: ...here. * config/darwin-f.c: Moved to... * config/darwin-f.cc: ...here. * config/darwin.c: Moved to... * config/darwin.cc: ...here. * config/default-c.c: Moved to... * config/default-c.cc: ...here. * config/default-d.c: Moved to... * config/default-d.cc: ...here. * config/dragonfly-d.c: Moved to... * config/dragonfly-d.cc: ...here. * config/epiphany/epiphany.c: Moved to... * config/epiphany/epiphany.cc: ...here. * config/epiphany/mode-switch-use.c: Moved to... * config/epiphany/mode-switch-use.cc: ...here. * config/epiphany/resolve-sw-modes.c: Moved to... * config/epiphany/resolve-sw-modes.cc: ...here. * config/fr30/fr30.c: Moved to... * config/fr30/fr30.cc: ...here. * config/freebsd-d.c: Moved to... * config/freebsd-d.cc: ...here. * config/frv/frv.c: Moved to... * config/frv/frv.cc: ...here. * config/ft32/ft32.c: Moved to... * config/ft32/ft32.cc: ...here. * config/gcn/driver-gcn.c: Moved to... * config/gcn/driver-gcn.cc: ...here. * config/gcn/gcn-run.c: Moved to... * config/gcn/gcn-run.cc: ...here. * config/gcn/gcn-tree.c: Moved to... * config/gcn/gcn-tree.cc: ...here. * config/gcn/gcn.c: Moved to... * config/gcn/gcn.cc: ...here. * config/gcn/mkoffload.c: Moved to... * config/gcn/mkoffload.cc: ...here. * config/glibc-c.c: Moved to... * config/glibc-c.cc: ...here. * config/glibc-d.c: Moved to... * config/glibc-d.cc: ...here. * config/h8300/h8300.c: Moved to... * config/h8300/h8300.cc: ...here. * config/host-darwin.c: Moved to... * config/host-darwin.cc: ...here. * config/host-hpux.c: Moved to... * config/host-hpux.cc: ...here. * config/host-linux.c: Moved to... * config/host-linux.cc: ...here. * config/host-netbsd.c: Moved to... * config/host-netbsd.cc: ...here. * config/host-openbsd.c: Moved to... * config/host-openbsd.cc: ...here. * config/host-solaris.c: Moved to... * config/host-solaris.cc: ...here. * config/i386/djgpp.c: Moved to... * config/i386/djgpp.cc: ...here. * config/i386/driver-i386.c: Moved to... * config/i386/driver-i386.cc: ...here. * config/i386/driver-mingw32.c: Moved to... * config/i386/driver-mingw32.cc: ...here. * config/i386/gnu-property.c: Moved to... * config/i386/gnu-property.cc: ...here. * config/i386/host-cygwin.c: Moved to... * config/i386/host-cygwin.cc: ...here. * config/i386/host-i386-darwin.c: Moved to... * config/i386/host-i386-darwin.cc: ...here. * config/i386/host-mingw32.c: Moved to... * config/i386/host-mingw32.cc: ...here. * config/i386/i386-builtins.c: Moved to... * config/i386/i386-builtins.cc: ...here. * config/i386/i386-c.c: Moved to... * config/i386/i386-c.cc: ...here. * config/i386/i386-d.c: Moved to... * config/i386/i386-d.cc: ...here. * config/i386/i386-expand.c: Moved to... * config/i386/i386-expand.cc: ...here. * config/i386/i386-features.c: Moved to... * config/i386/i386-features.cc: ...here. * config/i386/i386-options.c: Moved to... * config/i386/i386-options.cc: ...here. * config/i386/i386.c: Moved to... * config/i386/i386.cc: ...here. * config/i386/intelmic-mkoffload.c: Moved to... * config/i386/intelmic-mkoffload.cc: ...here. * config/i386/msformat-c.c: Moved to... * config/i386/msformat-c.cc: ...here. * config/i386/winnt-cxx.c: Moved to... * config/i386/winnt-cxx.cc: ...here. * config/i386/winnt-d.c: Moved to... * config/i386/winnt-d.cc: ...here. * config/i386/winnt-stubs.c: Moved to... * config/i386/winnt-stubs.cc: ...here. * config/i386/winnt.c: Moved to... * config/i386/winnt.cc: ...here. * config/i386/x86-tune-sched-atom.c: Moved to... * config/i386/x86-tune-sched-atom.cc: ...here. * config/i386/x86-tune-sched-bd.c: Moved to... * config/i386/x86-tune-sched-bd.cc: ...here. * config/i386/x86-tune-sched-core.c: Moved to... * config/i386/x86-tune-sched-core.cc: ...here. * config/i386/x86-tune-sched.c: Moved to... * config/i386/x86-tune-sched.cc: ...here. * config/ia64/ia64-c.c: Moved to... * config/ia64/ia64-c.cc: ...here. * config/ia64/ia64.c: Moved to... * config/ia64/ia64.cc: ...here. * config/iq2000/iq2000.c: Moved to... * config/iq2000/iq2000.cc: ...here. * config/linux.c: Moved to... * config/linux.cc: ...here. * config/lm32/lm32.c: Moved to... * config/lm32/lm32.cc: ...here. * config/m32c/m32c-pragma.c: Moved to... * config/m32c/m32c-pragma.cc: ...here. * config/m32c/m32c.c: Moved to... * config/m32c/m32c.cc: ...here. * config/m32r/m32r.c: Moved to... * config/m32r/m32r.cc: ...here. * config/m68k/m68k.c: Moved to... * config/m68k/m68k.cc: ...here. * config/mcore/mcore.c: Moved to... * config/mcore/mcore.cc: ...here. * config/microblaze/microblaze-c.c: Moved to... * config/microblaze/microblaze-c.cc: ...here. * config/microblaze/microblaze.c: Moved to... * config/microblaze/microblaze.cc: ...here. * config/mips/driver-native.c: Moved to... * config/mips/driver-native.cc: ...here. * config/mips/frame-header-opt.c: Moved to... * config/mips/frame-header-opt.cc: ...here. * config/mips/mips-d.c: Moved to... * config/mips/mips-d.cc: ...here. * config/mips/mips.c: Moved to... * config/mips/mips.cc: ...here. * config/mmix/mmix.c: Moved to... * config/mmix/mmix.cc: ...here. * config/mn10300/mn10300.c: Moved to... * config/mn10300/mn10300.cc: ...here. * config/moxie/moxie.c: Moved to... * config/moxie/moxie.cc: ...here. * config/msp430/driver-msp430.c: Moved to... * config/msp430/driver-msp430.cc: ...here. * config/msp430/msp430-c.c: Moved to... * config/msp430/msp430-c.cc: ...here. * config/msp430/msp430-devices.c: Moved to... * config/msp430/msp430-devices.cc: ...here. * config/msp430/msp430.c: Moved to... * config/msp430/msp430.cc: ...here. * config/nds32/nds32-cost.c: Moved to... * config/nds32/nds32-cost.cc: ...here. * config/nds32/nds32-fp-as-gp.c: Moved to... * config/nds32/nds32-fp-as-gp.cc: ...here. * config/nds32/nds32-intrinsic.c: Moved to... * config/nds32/nds32-intrinsic.cc: ...here. * config/nds32/nds32-isr.c: Moved to... * config/nds32/nds32-isr.cc: ...here. * config/nds32/nds32-md-auxiliary.c: Moved to... * config/nds32/nds32-md-auxiliary.cc: ...here. * config/nds32/nds32-memory-manipulation.c: Moved to... * config/nds32/nds32-memory-manipulation.cc: ...here. * config/nds32/nds32-pipelines-auxiliary.c: Moved to... * config/nds32/nds32-pipelines-auxiliary.cc: ...here. * config/nds32/nds32-predicates.c: Moved to... * config/nds32/nds32-predicates.cc: ...here. * config/nds32/nds32-relax-opt.c: Moved to... * config/nds32/nds32-relax-opt.cc: ...here. * config/nds32/nds32-utils.c: Moved to... * config/nds32/nds32-utils.cc: ...here. * config/nds32/nds32.c: Moved to... * config/nds32/nds32.cc: ...here. * config/netbsd-d.c: Moved to... * config/netbsd-d.cc: ...here. * config/netbsd.c: Moved to... * config/netbsd.cc: ...here. * config/nios2/nios2.c: Moved to... * config/nios2/nios2.cc: ...here. * config/nvptx/mkoffload.c: Moved to... * config/nvptx/mkoffload.cc: ...here. * config/nvptx/nvptx-c.c: Moved to... * config/nvptx/nvptx-c.cc: ...here. * config/nvptx/nvptx.c: Moved to... * config/nvptx/nvptx.cc: ...here. * config/openbsd-d.c: Moved to... * config/openbsd-d.cc: ...here. * config/or1k/or1k.c: Moved to... * config/or1k/or1k.cc: ...here. * config/pa/pa-d.c: Moved to... * config/pa/pa-d.cc: ...here. * config/pa/pa.c: Moved to... * config/pa/pa.cc: ...here. * config/pdp11/pdp11.c: Moved to... * config/pdp11/pdp11.cc: ...here. * config/pru/pru-passes.c: Moved to... * config/pru/pru-passes.cc: ...here. * config/pru/pru-pragma.c: Moved to... * config/pru/pru-pragma.cc: ...here. * config/pru/pru.c: Moved to... * config/pru/pru.cc: ...here. * config/riscv/riscv-builtins.c: Moved to... * config/riscv/riscv-builtins.cc: ...here. * config/riscv/riscv-c.c: Moved to... * config/riscv/riscv-c.cc: ...here. * config/riscv/riscv-d.c: Moved to... * config/riscv/riscv-d.cc: ...here. * config/riscv/riscv-shorten-memrefs.c: Moved to... * config/riscv/riscv-shorten-memrefs.cc: ...here. * config/riscv/riscv-sr.c: Moved to... * config/riscv/riscv-sr.cc: ...here. * config/riscv/riscv.c: Moved to... * config/riscv/riscv.cc: ...here. * config/rl78/rl78-c.c: Moved to... * config/rl78/rl78-c.cc: ...here. * config/rl78/rl78.c: Moved to... * config/rl78/rl78.cc: ...here. * config/rs6000/driver-rs6000.c: Moved to... * config/rs6000/driver-rs6000.cc: ...here. * config/rs6000/host-darwin.c: Moved to... * config/rs6000/host-darwin.cc: ...here. * config/rs6000/host-ppc64-darwin.c: Moved to... * config/rs6000/host-ppc64-darwin.cc: ...here. * config/rs6000/rbtree.c: Moved to... * config/rs6000/rbtree.cc: ...here. * config/rs6000/rs6000-c.c: Moved to... * config/rs6000/rs6000-c.cc: ...here. * config/rs6000/rs6000-call.c: Moved to... * config/rs6000/rs6000-call.cc: ...here. * config/rs6000/rs6000-d.c: Moved to... * config/rs6000/rs6000-d.cc: ...here. * config/rs6000/rs6000-gen-builtins.c: Moved to... * config/rs6000/rs6000-gen-builtins.cc: ...here. * config/rs6000/rs6000-linux.c: Moved to... * config/rs6000/rs6000-linux.cc: ...here. * config/rs6000/rs6000-logue.c: Moved to... * config/rs6000/rs6000-logue.cc: ...here. * config/rs6000/rs6000-p8swap.c: Moved to... * config/rs6000/rs6000-p8swap.cc: ...here. * config/rs6000/rs6000-pcrel-opt.c: Moved to... * config/rs6000/rs6000-pcrel-opt.cc: ...here. * config/rs6000/rs6000-string.c: Moved to... * config/rs6000/rs6000-string.cc: ...here. * config/rs6000/rs6000.c: Moved to... * config/rs6000/rs6000.cc: ...here. * config/rx/rx.c: Moved to... * config/rx/rx.cc: ...here. * config/s390/driver-native.c: Moved to... * config/s390/driver-native.cc: ...here. * config/s390/s390-c.c: Moved to... * config/s390/s390-c.cc: ...here. * config/s390/s390-d.c: Moved to... * config/s390/s390-d.cc: ...here. * config/s390/s390.c: Moved to... * config/s390/s390.cc: ...here. * config/sh/divtab-sh4-300.c: Moved to... * config/sh/divtab-sh4-300.cc: ...here. * config/sh/divtab-sh4.c: Moved to... * config/sh/divtab-sh4.cc: ...here. * config/sh/divtab.c: Moved to... * config/sh/divtab.cc: ...here. * config/sh/sh-c.c: Moved to... * config/sh/sh-c.cc: ...here. * config/sh/sh.c: Moved to... * config/sh/sh.cc: ...here. * config/sol2-c.c: Moved to... * config/sol2-c.cc: ...here. * config/sol2-cxx.c: Moved to... * config/sol2-cxx.cc: ...here. * config/sol2-d.c: Moved to... * config/sol2-d.cc: ...here. * config/sol2-stubs.c: Moved to... * config/sol2-stubs.cc: ...here. * config/sol2.c: Moved to... * config/sol2.cc: ...here. * config/sparc/driver-sparc.c: Moved to... * config/sparc/driver-sparc.cc: ...here. * config/sparc/sparc-c.c: Moved to... * config/sparc/sparc-c.cc: ...here. * config/sparc/sparc-d.c: Moved to... * config/sparc/sparc-d.cc: ...here. * config/sparc/sparc.c: Moved to... * config/sparc/sparc.cc: ...here. * config/stormy16/stormy16.c: Moved to... * config/stormy16/stormy16.cc: ...here. * config/tilegx/mul-tables.c: Moved to... * config/tilegx/mul-tables.cc: ...here. * config/tilegx/tilegx-c.c: Moved to... * config/tilegx/tilegx-c.cc: ...here. * config/tilegx/tilegx.c: Moved to... * config/tilegx/tilegx.cc: ...here. * config/tilepro/mul-tables.c: Moved to... * config/tilepro/mul-tables.cc: ...here. * config/tilepro/tilepro-c.c: Moved to... * config/tilepro/tilepro-c.cc: ...here. * config/tilepro/tilepro.c: Moved to... * config/tilepro/tilepro.cc: ...here. * config/v850/v850-c.c: Moved to... * config/v850/v850-c.cc: ...here. * config/v850/v850.c: Moved to... * config/v850/v850.cc: ...here. * config/vax/vax.c: Moved to... * config/vax/vax.cc: ...here. * config/visium/visium.c: Moved to... * config/visium/visium.cc: ...here. * config/vms/vms-c.c: Moved to... * config/vms/vms-c.cc: ...here. * config/vms/vms-f.c: Moved to... * config/vms/vms-f.cc: ...here. * config/vms/vms.c: Moved to... * config/vms/vms.cc: ...here. * config/vxworks-c.c: Moved to... * config/vxworks-c.cc: ...here. * config/vxworks.c: Moved to... * config/vxworks.cc: ...here. * config/winnt-c.c: Moved to... * config/winnt-c.cc: ...here. * config/xtensa/xtensa.c: Moved to... * config/xtensa/xtensa.cc: ...here. * context.c: Moved to... * context.cc: ...here. * convert.c: Moved to... * convert.cc: ...here. * coverage.c: Moved to... * coverage.cc: ...here. * cppbuiltin.c: Moved to... * cppbuiltin.cc: ...here. * cppdefault.c: Moved to... * cppdefault.cc: ...here. * cprop.c: Moved to... * cprop.cc: ...here. * cse.c: Moved to... * cse.cc: ...here. * cselib.c: Moved to... * cselib.cc: ...here. * ctfc.c: Moved to... * ctfc.cc: ...here. * ctfout.c: Moved to... * ctfout.cc: ...here. * data-streamer-in.c: Moved to... * data-streamer-in.cc: ...here. * data-streamer-out.c: Moved to... * data-streamer-out.cc: ...here. * data-streamer.c: Moved to... * data-streamer.cc: ...here. * dbgcnt.c: Moved to... * dbgcnt.cc: ...here. * dbxout.c: Moved to... * dbxout.cc: ...here. * dce.c: Moved to... * dce.cc: ...here. * ddg.c: Moved to... * ddg.cc: ...here. * debug.c: Moved to... * debug.cc: ...here. * df-core.c: Moved to... * df-core.cc: ...here. * df-problems.c: Moved to... * df-problems.cc: ...here. * df-scan.c: Moved to... * df-scan.cc: ...here. * dfp.c: Moved to... * dfp.cc: ...here. * diagnostic-color.c: Moved to... * diagnostic-color.cc: ...here. * diagnostic-show-locus.c: Moved to... * diagnostic-show-locus.cc: ...here. * diagnostic-spec.c: Moved to... * diagnostic-spec.cc: ...here. * diagnostic.c: Moved to... * diagnostic.cc: ...here. * dojump.c: Moved to... * dojump.cc: ...here. * dominance.c: Moved to... * dominance.cc: ...here. * domwalk.c: Moved to... * domwalk.cc: ...here. * double-int.c: Moved to... * double-int.cc: ...here. * dse.c: Moved to... * dse.cc: ...here. * dumpfile.c: Moved to... * dumpfile.cc: ...here. * dwarf2asm.c: Moved to... * dwarf2asm.cc: ...here. * dwarf2cfi.c: Moved to... * dwarf2cfi.cc: ...here. * dwarf2ctf.c: Moved to... * dwarf2ctf.cc: ...here. * dwarf2out.c: Moved to... * dwarf2out.cc: ...here. * early-remat.c: Moved to... * early-remat.cc: ...here. * edit-context.c: Moved to... * edit-context.cc: ...here. * emit-rtl.c: Moved to... * emit-rtl.cc: ...here. * errors.c: Moved to... * errors.cc: ...here. * et-forest.c: Moved to... * et-forest.cc: ...here. * except.c: Moved to... * except.cc: ...here. * explow.c: Moved to... * explow.cc: ...here. * expmed.c: Moved to... * expmed.cc: ...here. * expr.c: Moved to... * expr.cc: ...here. * fibonacci_heap.c: Moved to... * fibonacci_heap.cc: ...here. * file-find.c: Moved to... * file-find.cc: ...here. * file-prefix-map.c: Moved to... * file-prefix-map.cc: ...here. * final.c: Moved to... * final.cc: ...here. * fixed-value.c: Moved to... * fixed-value.cc: ...here. * fold-const-call.c: Moved to... * fold-const-call.cc: ...here. * fold-const.c: Moved to... * fold-const.cc: ...here. * fp-test.c: Moved to... * fp-test.cc: ...here. * function-tests.c: Moved to... * function-tests.cc: ...here. * function.c: Moved to... * function.cc: ...here. * fwprop.c: Moved to... * fwprop.cc: ...here. * gcc-ar.c: Moved to... * gcc-ar.cc: ...here. * gcc-main.c: Moved to... * gcc-main.cc: ...here. * gcc-rich-location.c: Moved to... * gcc-rich-location.cc: ...here. * gcc.c: Moved to... * gcc.cc: ...here. * gcov-dump.c: Moved to... * gcov-dump.cc: ...here. * gcov-io.c: Moved to... * gcov-io.cc: ...here. * gcov-tool.c: Moved to... * gcov-tool.cc: ...here. * gcov.c: Moved to... * gcov.cc: ...here. * gcse-common.c: Moved to... * gcse-common.cc: ...here. * gcse.c: Moved to... * gcse.cc: ...here. * genattr-common.c: Moved to... * genattr-common.cc: ...here. * genattr.c: Moved to... * genattr.cc: ...here. * genattrtab.c: Moved to... * genattrtab.cc: ...here. * genautomata.c: Moved to... * genautomata.cc: ...here. * gencfn-macros.c: Moved to... * gencfn-macros.cc: ...here. * gencheck.c: Moved to... * gencheck.cc: ...here. * genchecksum.c: Moved to... * genchecksum.cc: ...here. * gencodes.c: Moved to... * gencodes.cc: ...here. * genconditions.c: Moved to... * genconditions.cc: ...here. * genconfig.c: Moved to... * genconfig.cc: ...here. * genconstants.c: Moved to... * genconstants.cc: ...here. * genemit.c: Moved to... * genemit.cc: ...here. * genenums.c: Moved to... * genenums.cc: ...here. * generic-match-head.c: Moved to... * generic-match-head.cc: ...here. * genextract.c: Moved to... * genextract.cc: ...here. * genflags.c: Moved to... * genflags.cc: ...here. * gengenrtl.c: Moved to... * gengenrtl.cc: ...here. * gengtype-parse.c: Moved to... * gengtype-parse.cc: ...here. * gengtype-state.c: Moved to... * gengtype-state.cc: ...here. * gengtype.c: Moved to... * gengtype.cc: ...here. * genhooks.c: Moved to... * genhooks.cc: ...here. * genmatch.c: Moved to... * genmatch.cc: ...here. * genmddeps.c: Moved to... * genmddeps.cc: ...here. * genmddump.c: Moved to... * genmddump.cc: ...here. * genmodes.c: Moved to... * genmodes.cc: ...here. * genopinit.c: Moved to... * genopinit.cc: ...here. * genoutput.c: Moved to... * genoutput.cc: ...here. * genpeep.c: Moved to... * genpeep.cc: ...here. * genpreds.c: Moved to... * genpreds.cc: ...here. * genrecog.c: Moved to... * genrecog.cc: ...here. * gensupport.c: Moved to... * gensupport.cc: ...here. * gentarget-def.c: Moved to... * gentarget-def.cc: ...here. * genversion.c: Moved to... * genversion.cc: ...here. * ggc-common.c: Moved to... * ggc-common.cc: ...here. * ggc-none.c: Moved to... * ggc-none.cc: ...here. * ggc-page.c: Moved to... * ggc-page.cc: ...here. * ggc-tests.c: Moved to... * ggc-tests.cc: ...here. * gimple-builder.c: Moved to... * gimple-builder.cc: ...here. * gimple-expr.c: Moved to... * gimple-expr.cc: ...here. * gimple-fold.c: Moved to... * gimple-fold.cc: ...here. * gimple-iterator.c: Moved to... * gimple-iterator.cc: ...here. * gimple-laddress.c: Moved to... * gimple-laddress.cc: ...here. * gimple-loop-jam.c: Moved to... * gimple-loop-jam.cc: ...here. * gimple-low.c: Moved to... * gimple-low.cc: ...here. * gimple-match-head.c: Moved to... * gimple-match-head.cc: ...here. * gimple-pretty-print.c: Moved to... * gimple-pretty-print.cc: ...here. * gimple-ssa-backprop.c: Moved to... * gimple-ssa-backprop.cc: ...here. * gimple-ssa-evrp-analyze.c: Moved to... * gimple-ssa-evrp-analyze.cc: ...here. * gimple-ssa-evrp.c: Moved to... * gimple-ssa-evrp.cc: ...here. * gimple-ssa-isolate-paths.c: Moved to... * gimple-ssa-isolate-paths.cc: ...here. * gimple-ssa-nonnull-compare.c: Moved to... * gimple-ssa-nonnull-compare.cc: ...here. * gimple-ssa-split-paths.c: Moved to... * gimple-ssa-split-paths.cc: ...here. * gimple-ssa-sprintf.c: Moved to... * gimple-ssa-sprintf.cc: ...here. * gimple-ssa-store-merging.c: Moved to... * gimple-ssa-store-merging.cc: ...here. * gimple-ssa-strength-reduction.c: Moved to... * gimple-ssa-strength-reduction.cc: ...here. * gimple-ssa-warn-alloca.c: Moved to... * gimple-ssa-warn-alloca.cc: ...here. * gimple-ssa-warn-restrict.c: Moved to... * gimple-ssa-warn-restrict.cc: ...here. * gimple-streamer-in.c: Moved to... * gimple-streamer-in.cc: ...here. * gimple-streamer-out.c: Moved to... * gimple-streamer-out.cc: ...here. * gimple-walk.c: Moved to... * gimple-walk.cc: ...here. * gimple-warn-recursion.c: Moved to... * gimple-warn-recursion.cc: ...here. * gimple.c: Moved to... * gimple.cc: ...here. * gimplify-me.c: Moved to... * gimplify-me.cc: ...here. * gimplify.c: Moved to... * gimplify.cc: ...here. * godump.c: Moved to... * godump.cc: ...here. * graph.c: Moved to... * graph.cc: ...here. * graphds.c: Moved to... * graphds.cc: ...here. * graphite-dependences.c: Moved to... * graphite-dependences.cc: ...here. * graphite-isl-ast-to-gimple.c: Moved to... * graphite-isl-ast-to-gimple.cc: ...here. * graphite-optimize-isl.c: Moved to... * graphite-optimize-isl.cc: ...here. * graphite-poly.c: Moved to... * graphite-poly.cc: ...here. * graphite-scop-detection.c: Moved to... * graphite-scop-detection.cc: ...here. * graphite-sese-to-poly.c: Moved to... * graphite-sese-to-poly.cc: ...here. * graphite.c: Moved to... * graphite.cc: ...here. * haifa-sched.c: Moved to... * haifa-sched.cc: ...here. * hash-map-tests.c: Moved to... * hash-map-tests.cc: ...here. * hash-set-tests.c: Moved to... * hash-set-tests.cc: ...here. * hash-table.c: Moved to... * hash-table.cc: ...here. * hooks.c: Moved to... * hooks.cc: ...here. * host-default.c: Moved to... * host-default.cc: ...here. * hw-doloop.c: Moved to... * hw-doloop.cc: ...here. * hwint.c: Moved to... * hwint.cc: ...here. * ifcvt.c: Moved to... * ifcvt.cc: ...here. * inchash.c: Moved to... * inchash.cc: ...here. * incpath.c: Moved to... * incpath.cc: ...here. * init-regs.c: Moved to... * init-regs.cc: ...here. * input.c: Moved to... * input.cc: ...here. * internal-fn.c: Moved to... * internal-fn.cc: ...here. * intl.c: Moved to... * intl.cc: ...here. * ipa-comdats.c: Moved to... * ipa-comdats.cc: ...here. * ipa-cp.c: Moved to... * ipa-cp.cc: ...here. * ipa-devirt.c: Moved to... * ipa-devirt.cc: ...here. * ipa-fnsummary.c: Moved to... * ipa-fnsummary.cc: ...here. * ipa-icf-gimple.c: Moved to... * ipa-icf-gimple.cc: ...here. * ipa-icf.c: Moved to... * ipa-icf.cc: ...here. * ipa-inline-analysis.c: Moved to... * ipa-inline-analysis.cc: ...here. * ipa-inline-transform.c: Moved to... * ipa-inline-transform.cc: ...here. * ipa-inline.c: Moved to... * ipa-inline.cc: ...here. * ipa-modref-tree.c: Moved to... * ipa-modref-tree.cc: ...here. * ipa-modref.c: Moved to... * ipa-modref.cc: ...here. * ipa-param-manipulation.c: Moved to... * ipa-param-manipulation.cc: ...here. * ipa-polymorphic-call.c: Moved to... * ipa-polymorphic-call.cc: ...here. * ipa-predicate.c: Moved to... * ipa-predicate.cc: ...here. * ipa-profile.c: Moved to... * ipa-profile.cc: ...here. * ipa-prop.c: Moved to... * ipa-prop.cc: ...here. * ipa-pure-const.c: Moved to... * ipa-pure-const.cc: ...here. * ipa-ref.c: Moved to... * ipa-ref.cc: ...here. * ipa-reference.c: Moved to... * ipa-reference.cc: ...here. * ipa-split.c: Moved to... * ipa-split.cc: ...here. * ipa-sra.c: Moved to... * ipa-sra.cc: ...here. * ipa-utils.c: Moved to... * ipa-utils.cc: ...here. * ipa-visibility.c: Moved to... * ipa-visibility.cc: ...here. * ipa.c: Moved to... * ipa.cc: ...here. * ira-build.c: Moved to... * ira-build.cc: ...here. * ira-color.c: Moved to... * ira-color.cc: ...here. * ira-conflicts.c: Moved to... * ira-conflicts.cc: ...here. * ira-costs.c: Moved to... * ira-costs.cc: ...here. * ira-emit.c: Moved to... * ira-emit.cc: ...here. * ira-lives.c: Moved to... * ira-lives.cc: ...here. * ira.c: Moved to... * ira.cc: ...here. * jump.c: Moved to... * jump.cc: ...here. * langhooks.c: Moved to... * langhooks.cc: ...here. * lcm.c: Moved to... * lcm.cc: ...here. * lists.c: Moved to... * lists.cc: ...here. * loop-doloop.c: Moved to... * loop-doloop.cc: ...here. * loop-init.c: Moved to... * loop-init.cc: ...here. * loop-invariant.c: Moved to... * loop-invariant.cc: ...here. * loop-iv.c: Moved to... * loop-iv.cc: ...here. * loop-unroll.c: Moved to... * loop-unroll.cc: ...here. * lower-subreg.c: Moved to... * lower-subreg.cc: ...here. * lra-assigns.c: Moved to... * lra-assigns.cc: ...here. * lra-coalesce.c: Moved to... * lra-coalesce.cc: ...here. * lra-constraints.c: Moved to... * lra-constraints.cc: ...here. * lra-eliminations.c: Moved to... * lra-eliminations.cc: ...here. * lra-lives.c: Moved to... * lra-lives.cc: ...here. * lra-remat.c: Moved to... * lra-remat.cc: ...here. * lra-spills.c: Moved to... * lra-spills.cc: ...here. * lra.c: Moved to... * lra.cc: ...here. * lto-cgraph.c: Moved to... * lto-cgraph.cc: ...here. * lto-compress.c: Moved to... * lto-compress.cc: ...here. * lto-opts.c: Moved to... * lto-opts.cc: ...here. * lto-section-in.c: Moved to... * lto-section-in.cc: ...here. * lto-section-out.c: Moved to... * lto-section-out.cc: ...here. * lto-streamer-in.c: Moved to... * lto-streamer-in.cc: ...here. * lto-streamer-out.c: Moved to... * lto-streamer-out.cc: ...here. * lto-streamer.c: Moved to... * lto-streamer.cc: ...here. * lto-wrapper.c: Moved to... * lto-wrapper.cc: ...here. * main.c: Moved to... * main.cc: ...here. * mcf.c: Moved to... * mcf.cc: ...here. * mode-switching.c: Moved to... * mode-switching.cc: ...here. * modulo-sched.c: Moved to... * modulo-sched.cc: ...here. * multiple_target.c: Moved to... * multiple_target.cc: ...here. * omp-expand.c: Moved to... * omp-expand.cc: ...here. * omp-general.c: Moved to... * omp-general.cc: ...here. * omp-low.c: Moved to... * omp-low.cc: ...here. * omp-offload.c: Moved to... * omp-offload.cc: ...here. * omp-simd-clone.c: Moved to... * omp-simd-clone.cc: ...here. * opt-suggestions.c: Moved to... * opt-suggestions.cc: ...here. * optabs-libfuncs.c: Moved to... * optabs-libfuncs.cc: ...here. * optabs-query.c: Moved to... * optabs-query.cc: ...here. * optabs-tree.c: Moved to... * optabs-tree.cc: ...here. * optabs.c: Moved to... * optabs.cc: ...here. * opts-common.c: Moved to... * opts-common.cc: ...here. * opts-global.c: Moved to... * opts-global.cc: ...here. * opts.c: Moved to... * opts.cc: ...here. * passes.c: Moved to... * passes.cc: ...here. * plugin.c: Moved to... * plugin.cc: ...here. * postreload-gcse.c: Moved to... * postreload-gcse.cc: ...here. * postreload.c: Moved to... * postreload.cc: ...here. * predict.c: Moved to... * predict.cc: ...here. * prefix.c: Moved to... * prefix.cc: ...here. * pretty-print.c: Moved to... * pretty-print.cc: ...here. * print-rtl-function.c: Moved to... * print-rtl-function.cc: ...here. * print-rtl.c: Moved to... * print-rtl.cc: ...here. * print-tree.c: Moved to... * print-tree.cc: ...here. * profile-count.c: Moved to... * profile-count.cc: ...here. * profile.c: Moved to... * profile.cc: ...here. * read-md.c: Moved to... * read-md.cc: ...here. * read-rtl-function.c: Moved to... * read-rtl-function.cc: ...here. * read-rtl.c: Moved to... * read-rtl.cc: ...here. * real.c: Moved to... * real.cc: ...here. * realmpfr.c: Moved to... * realmpfr.cc: ...here. * recog.c: Moved to... * recog.cc: ...here. * ree.c: Moved to... * ree.cc: ...here. * reg-stack.c: Moved to... * reg-stack.cc: ...here. * regcprop.c: Moved to... * regcprop.cc: ...here. * reginfo.c: Moved to... * reginfo.cc: ...here. * regrename.c: Moved to... * regrename.cc: ...here. * regstat.c: Moved to... * regstat.cc: ...here. * reload.c: Moved to... * reload.cc: ...here. * reload1.c: Moved to... * reload1.cc: ...here. * reorg.c: Moved to... * reorg.cc: ...here. * resource.c: Moved to... * resource.cc: ...here. * rtl-error.c: Moved to... * rtl-error.cc: ...here. * rtl-tests.c: Moved to... * rtl-tests.cc: ...here. * rtl.c: Moved to... * rtl.cc: ...here. * rtlanal.c: Moved to... * rtlanal.cc: ...here. * rtlhash.c: Moved to... * rtlhash.cc: ...here. * rtlhooks.c: Moved to... * rtlhooks.cc: ...here. * rtx-vector-builder.c: Moved to... * rtx-vector-builder.cc: ...here. * run-rtl-passes.c: Moved to... * run-rtl-passes.cc: ...here. * sancov.c: Moved to... * sancov.cc: ...here. * sanopt.c: Moved to... * sanopt.cc: ...here. * sbitmap.c: Moved to... * sbitmap.cc: ...here. * sched-deps.c: Moved to... * sched-deps.cc: ...here. * sched-ebb.c: Moved to... * sched-ebb.cc: ...here. * sched-rgn.c: Moved to... * sched-rgn.cc: ...here. * sel-sched-dump.c: Moved to... * sel-sched-dump.cc: ...here. * sel-sched-ir.c: Moved to... * sel-sched-ir.cc: ...here. * sel-sched.c: Moved to... * sel-sched.cc: ...here. * selftest-diagnostic.c: Moved to... * selftest-diagnostic.cc: ...here. * selftest-rtl.c: Moved to... * selftest-rtl.cc: ...here. * selftest-run-tests.c: Moved to... * selftest-run-tests.cc: ...here. * selftest.c: Moved to... * selftest.cc: ...here. * sese.c: Moved to... * sese.cc: ...here. * shrink-wrap.c: Moved to... * shrink-wrap.cc: ...here. * simplify-rtx.c: Moved to... * simplify-rtx.cc: ...here. * sparseset.c: Moved to... * sparseset.cc: ...here. * spellcheck-tree.c: Moved to... * spellcheck-tree.cc: ...here. * spellcheck.c: Moved to... * spellcheck.cc: ...here. * sreal.c: Moved to... * sreal.cc: ...here. * stack-ptr-mod.c: Moved to... * stack-ptr-mod.cc: ...here. * statistics.c: Moved to... * statistics.cc: ...here. * stmt.c: Moved to... * stmt.cc: ...here. * stor-layout.c: Moved to... * stor-layout.cc: ...here. * store-motion.c: Moved to... * store-motion.cc: ...here. * streamer-hooks.c: Moved to... * streamer-hooks.cc: ...here. * stringpool.c: Moved to... * stringpool.cc: ...here. * substring-locations.c: Moved to... * substring-locations.cc: ...here. * symtab.c: Moved to... * symtab.cc: ...here. * target-globals.c: Moved to... * target-globals.cc: ...here. * targhooks.c: Moved to... * targhooks.cc: ...here. * timevar.c: Moved to... * timevar.cc: ...here. * toplev.c: Moved to... * toplev.cc: ...here. * tracer.c: Moved to... * tracer.cc: ...here. * trans-mem.c: Moved to... * trans-mem.cc: ...here. * tree-affine.c: Moved to... * tree-affine.cc: ...here. * tree-call-cdce.c: Moved to... * tree-call-cdce.cc: ...here. * tree-cfg.c: Moved to... * tree-cfg.cc: ...here. * tree-cfgcleanup.c: Moved to... * tree-cfgcleanup.cc: ...here. * tree-chrec.c: Moved to... * tree-chrec.cc: ...here. * tree-complex.c: Moved to... * tree-complex.cc: ...here. * tree-data-ref.c: Moved to... * tree-data-ref.cc: ...here. * tree-dfa.c: Moved to... * tree-dfa.cc: ...here. * tree-diagnostic.c: Moved to... * tree-diagnostic.cc: ...here. * tree-dump.c: Moved to... * tree-dump.cc: ...here. * tree-eh.c: Moved to... * tree-eh.cc: ...here. * tree-emutls.c: Moved to... * tree-emutls.cc: ...here. * tree-if-conv.c: Moved to... * tree-if-conv.cc: ...here. * tree-inline.c: Moved to... * tree-inline.cc: ...here. * tree-into-ssa.c: Moved to... * tree-into-ssa.cc: ...here. * tree-iterator.c: Moved to... * tree-iterator.cc: ...here. * tree-loop-distribution.c: Moved to... * tree-loop-distribution.cc: ...here. * tree-nested.c: Moved to... * tree-nested.cc: ...here. * tree-nrv.c: Moved to... * tree-nrv.cc: ...here. * tree-object-size.c: Moved to... * tree-object-size.cc: ...here. * tree-outof-ssa.c: Moved to... * tree-outof-ssa.cc: ...here. * tree-parloops.c: Moved to... * tree-parloops.cc: ...here. * tree-phinodes.c: Moved to... * tree-phinodes.cc: ...here. * tree-predcom.c: Moved to... * tree-predcom.cc: ...here. * tree-pretty-print.c: Moved to... * tree-pretty-print.cc: ...here. * tree-profile.c: Moved to... * tree-profile.cc: ...here. * tree-scalar-evolution.c: Moved to... * tree-scalar-evolution.cc: ...here. * tree-sra.c: Moved to... * tree-sra.cc: ...here. * tree-ssa-address.c: Moved to... * tree-ssa-address.cc: ...here. * tree-ssa-alias.c: Moved to... * tree-ssa-alias.cc: ...here. * tree-ssa-ccp.c: Moved to... * tree-ssa-ccp.cc: ...here. * tree-ssa-coalesce.c: Moved to... * tree-ssa-coalesce.cc: ...here. * tree-ssa-copy.c: Moved to... * tree-ssa-copy.cc: ...here. * tree-ssa-dce.c: Moved to... * tree-ssa-dce.cc: ...here. * tree-ssa-dom.c: Moved to... * tree-ssa-dom.cc: ...here. * tree-ssa-dse.c: Moved to... * tree-ssa-dse.cc: ...here. * tree-ssa-forwprop.c: Moved to... * tree-ssa-forwprop.cc: ...here. * tree-ssa-ifcombine.c: Moved to... * tree-ssa-ifcombine.cc: ...here. * tree-ssa-live.c: Moved to... * tree-ssa-live.cc: ...here. * tree-ssa-loop-ch.c: Moved to... * tree-ssa-loop-ch.cc: ...here. * tree-ssa-loop-im.c: Moved to... * tree-ssa-loop-im.cc: ...here. * tree-ssa-loop-ivcanon.c: Moved to... * tree-ssa-loop-ivcanon.cc: ...here. * tree-ssa-loop-ivopts.c: Moved to... * tree-ssa-loop-ivopts.cc: ...here. * tree-ssa-loop-manip.c: Moved to... * tree-ssa-loop-manip.cc: ...here. * tree-ssa-loop-niter.c: Moved to... * tree-ssa-loop-niter.cc: ...here. * tree-ssa-loop-prefetch.c: Moved to... * tree-ssa-loop-prefetch.cc: ...here. * tree-ssa-loop-split.c: Moved to... * tree-ssa-loop-split.cc: ...here. * tree-ssa-loop-unswitch.c: Moved to... * tree-ssa-loop-unswitch.cc: ...here. * tree-ssa-loop.c: Moved to... * tree-ssa-loop.cc: ...here. * tree-ssa-math-opts.c: Moved to... * tree-ssa-math-opts.cc: ...here. * tree-ssa-operands.c: Moved to... * tree-ssa-operands.cc: ...here. * tree-ssa-phiopt.c: Moved to... * tree-ssa-phiopt.cc: ...here. * tree-ssa-phiprop.c: Moved to... * tree-ssa-phiprop.cc: ...here. * tree-ssa-pre.c: Moved to... * tree-ssa-pre.cc: ...here. * tree-ssa-propagate.c: Moved to... * tree-ssa-propagate.cc: ...here. * tree-ssa-reassoc.c: Moved to... * tree-ssa-reassoc.cc: ...here. * tree-ssa-sccvn.c: Moved to... * tree-ssa-sccvn.cc: ...here. * tree-ssa-scopedtables.c: Moved to... * tree-ssa-scopedtables.cc: ...here. * tree-ssa-sink.c: Moved to... * tree-ssa-sink.cc: ...here. * tree-ssa-strlen.c: Moved to... * tree-ssa-strlen.cc: ...here. * tree-ssa-structalias.c: Moved to... * tree-ssa-structalias.cc: ...here. * tree-ssa-tail-merge.c: Moved to... * tree-ssa-tail-merge.cc: ...here. * tree-ssa-ter.c: Moved to... * tree-ssa-ter.cc: ...here. * tree-ssa-threadbackward.c: Moved to... * tree-ssa-threadbackward.cc: ...here. * tree-ssa-threadedge.c: Moved to... * tree-ssa-threadedge.cc: ...here. * tree-ssa-threadupdate.c: Moved to... * tree-ssa-threadupdate.cc: ...here. * tree-ssa-uncprop.c: Moved to... * tree-ssa-uncprop.cc: ...here. * tree-ssa-uninit.c: Moved to... * tree-ssa-uninit.cc: ...here. * tree-ssa.c: Moved to... * tree-ssa.cc: ...here. * tree-ssanames.c: Moved to... * tree-ssanames.cc: ...here. * tree-stdarg.c: Moved to... * tree-stdarg.cc: ...here. * tree-streamer-in.c: Moved to... * tree-streamer-in.cc: ...here. * tree-streamer-out.c: Moved to... * tree-streamer-out.cc: ...here. * tree-streamer.c: Moved to... * tree-streamer.cc: ...here. * tree-switch-conversion.c: Moved to... * tree-switch-conversion.cc: ...here. * tree-tailcall.c: Moved to... * tree-tailcall.cc: ...here. * tree-vect-data-refs.c: Moved to... * tree-vect-data-refs.cc: ...here. * tree-vect-generic.c: Moved to... * tree-vect-generic.cc: ...here. * tree-vect-loop-manip.c: Moved to... * tree-vect-loop-manip.cc: ...here. * tree-vect-loop.c: Moved to... * tree-vect-loop.cc: ...here. * tree-vect-patterns.c: Moved to... * tree-vect-patterns.cc: ...here. * tree-vect-slp-patterns.c: Moved to... * tree-vect-slp-patterns.cc: ...here. * tree-vect-slp.c: Moved to... * tree-vect-slp.cc: ...here. * tree-vect-stmts.c: Moved to... * tree-vect-stmts.cc: ...here. * tree-vector-builder.c: Moved to... * tree-vector-builder.cc: ...here. * tree-vectorizer.c: Moved to... * tree-vectorizer.cc: ...here. * tree-vrp.c: Moved to... * tree-vrp.cc: ...here. * tree.c: Moved to... * tree.cc: ...here. * tsan.c: Moved to... * tsan.cc: ...here. * typed-splay-tree.c: Moved to... * typed-splay-tree.cc: ...here. * ubsan.c: Moved to... * ubsan.cc: ...here. * valtrack.c: Moved to... * valtrack.cc: ...here. * value-prof.c: Moved to... * value-prof.cc: ...here. * var-tracking.c: Moved to... * var-tracking.cc: ...here. * varasm.c: Moved to... * varasm.cc: ...here. * varpool.c: Moved to... * varpool.cc: ...here. * vec-perm-indices.c: Moved to... * vec-perm-indices.cc: ...here. * vec.c: Moved to... * vec.cc: ...here. * vmsdbgout.c: Moved to... * vmsdbgout.cc: ...here. * vr-values.c: Moved to... * vr-values.cc: ...here. * vtable-verify.c: Moved to... * vtable-verify.cc: ...here. * web.c: Moved to... * web.cc: ...here. * xcoffout.c: Moved to... * xcoffout.cc: ...here. gcc/c-family/ChangeLog: * c-ada-spec.c: Moved to... * c-ada-spec.cc: ...here. * c-attribs.c: Moved to... * c-attribs.cc: ...here. * c-common.c: Moved to... * c-common.cc: ...here. * c-cppbuiltin.c: Moved to... * c-cppbuiltin.cc: ...here. * c-dump.c: Moved to... * c-dump.cc: ...here. * c-format.c: Moved to... * c-format.cc: ...here. * c-gimplify.c: Moved to... * c-gimplify.cc: ...here. * c-indentation.c: Moved to... * c-indentation.cc: ...here. * c-lex.c: Moved to... * c-lex.cc: ...here. * c-omp.c: Moved to... * c-omp.cc: ...here. * c-opts.c: Moved to... * c-opts.cc: ...here. * c-pch.c: Moved to... * c-pch.cc: ...here. * c-ppoutput.c: Moved to... * c-ppoutput.cc: ...here. * c-pragma.c: Moved to... * c-pragma.cc: ...here. * c-pretty-print.c: Moved to... * c-pretty-print.cc: ...here. * c-semantics.c: Moved to... * c-semantics.cc: ...here. * c-ubsan.c: Moved to... * c-ubsan.cc: ...here. * c-warn.c: Moved to... * c-warn.cc: ...here. * cppspec.c: Moved to... * cppspec.cc: ...here. * stub-objc.c: Moved to... * stub-objc.cc: ...here. gcc/c/ChangeLog: * c-aux-info.c: Moved to... * c-aux-info.cc: ...here. * c-convert.c: Moved to... * c-convert.cc: ...here. * c-decl.c: Moved to... * c-decl.cc: ...here. * c-errors.c: Moved to... * c-errors.cc: ...here. * c-fold.c: Moved to... * c-fold.cc: ...here. * c-lang.c: Moved to... * c-lang.cc: ...here. * c-objc-common.c: Moved to... * c-objc-common.cc: ...here. * c-parser.c: Moved to... * c-parser.cc: ...here. * c-typeck.c: Moved to... * c-typeck.cc: ...here. * gccspec.c: Moved to... * gccspec.cc: ...here. * gimple-parser.c: Moved to... * gimple-parser.cc: ...here. gcc/cp/ChangeLog: * call.c: Moved to... * call.cc: ...here. * class.c: Moved to... * class.cc: ...here. * constexpr.c: Moved to... * constexpr.cc: ...here. * cp-gimplify.c: Moved to... * cp-gimplify.cc: ...here. * cp-lang.c: Moved to... * cp-lang.cc: ...here. * cp-objcp-common.c: Moved to... * cp-objcp-common.cc: ...here. * cp-ubsan.c: Moved to... * cp-ubsan.cc: ...here. * cvt.c: Moved to... * cvt.cc: ...here. * cxx-pretty-print.c: Moved to... * cxx-pretty-print.cc: ...here. * decl.c: Moved to... * decl.cc: ...here. * decl2.c: Moved to... * decl2.cc: ...here. * dump.c: Moved to... * dump.cc: ...here. * error.c: Moved to... * error.cc: ...here. * except.c: Moved to... * except.cc: ...here. * expr.c: Moved to... * expr.cc: ...here. * friend.c: Moved to... * friend.cc: ...here. * g++spec.c: Moved to... * g++spec.cc: ...here. * init.c: Moved to... * init.cc: ...here. * lambda.c: Moved to... * lambda.cc: ...here. * lex.c: Moved to... * lex.cc: ...here. * mangle.c: Moved to... * mangle.cc: ...here. * method.c: Moved to... * method.cc: ...here. * name-lookup.c: Moved to... * name-lookup.cc: ...here. * optimize.c: Moved to... * optimize.cc: ...here. * parser.c: Moved to... * parser.cc: ...here. * pt.c: Moved to... * pt.cc: ...here. * ptree.c: Moved to... * ptree.cc: ...here. * rtti.c: Moved to... * rtti.cc: ...here. * search.c: Moved to... * search.cc: ...here. * semantics.c: Moved to... * semantics.cc: ...here. * tree.c: Moved to... * tree.cc: ...here. * typeck.c: Moved to... * typeck.cc: ...here. * typeck2.c: Moved to... * typeck2.cc: ...here. * vtable-class-hierarchy.c: Moved to... * vtable-class-hierarchy.cc: ...here. gcc/fortran/ChangeLog: * arith.c: Moved to... * arith.cc: ...here. * array.c: Moved to... * array.cc: ...here. * bbt.c: Moved to... * bbt.cc: ...here. * check.c: Moved to... * check.cc: ...here. * class.c: Moved to... * class.cc: ...here. * constructor.c: Moved to... * constructor.cc: ...here. * convert.c: Moved to... * convert.cc: ...here. * cpp.c: Moved to... * cpp.cc: ...here. * data.c: Moved to... * data.cc: ...here. * decl.c: Moved to... * decl.cc: ...here. * dependency.c: Moved to... * dependency.cc: ...here. * dump-parse-tree.c: Moved to... * dump-parse-tree.cc: ...here. * error.c: Moved to... * error.cc: ...here. * expr.c: Moved to... * expr.cc: ...here. * f95-lang.c: Moved to... * f95-lang.cc: ...here. * frontend-passes.c: Moved to... * frontend-passes.cc: ...here. * gfortranspec.c: Moved to... * gfortranspec.cc: ...here. * interface.c: Moved to... * interface.cc: ...here. * intrinsic.c: Moved to... * intrinsic.cc: ...here. * io.c: Moved to... * io.cc: ...here. * iresolve.c: Moved to... * iresolve.cc: ...here. * match.c: Moved to... * match.cc: ...here. * matchexp.c: Moved to... * matchexp.cc: ...here. * misc.c: Moved to... * misc.cc: ...here. * module.c: Moved to... * module.cc: ...here. * openmp.c: Moved to... * openmp.cc: ...here. * options.c: Moved to... * options.cc: ...here. * parse.c: Moved to... * parse.cc: ...here. * primary.c: Moved to... * primary.cc: ...here. * resolve.c: Moved to... * resolve.cc: ...here. * scanner.c: Moved to... * scanner.cc: ...here. * simplify.c: Moved to... * simplify.cc: ...here. * st.c: Moved to... * st.cc: ...here. * symbol.c: Moved to... * symbol.cc: ...here. * target-memory.c: Moved to... * target-memory.cc: ...here. * trans-array.c: Moved to... * trans-array.cc: ...here. * trans-common.c: Moved to... * trans-common.cc: ...here. * trans-const.c: Moved to... * trans-const.cc: ...here. * trans-decl.c: Moved to... * trans-decl.cc: ...here. * trans-expr.c: Moved to... * trans-expr.cc: ...here. * trans-intrinsic.c: Moved to... * trans-intrinsic.cc: ...here. * trans-io.c: Moved to... * trans-io.cc: ...here. * trans-openmp.c: Moved to... * trans-openmp.cc: ...here. * trans-stmt.c: Moved to... * trans-stmt.cc: ...here. * trans-types.c: Moved to... * trans-types.cc: ...here. * trans.c: Moved to... * trans.cc: ...here. gcc/go/ChangeLog: * go-backend.c: Moved to... * go-backend.cc: ...here. * go-lang.c: Moved to... * go-lang.cc: ...here. * gospec.c: Moved to... * gospec.cc: ...here. gcc/jit/ChangeLog: * dummy-frontend.c: Moved to... * dummy-frontend.cc: ...here. * jit-builtins.c: Moved to... * jit-builtins.cc: ...here. * jit-logging.c: Moved to... * jit-logging.cc: ...here. * jit-playback.c: Moved to... * jit-playback.cc: ...here. * jit-recording.c: Moved to... * jit-recording.cc: ...here. * jit-result.c: Moved to... * jit-result.cc: ...here. * jit-spec.c: Moved to... * jit-spec.cc: ...here. * jit-tempdir.c: Moved to... * jit-tempdir.cc: ...here. * jit-w32.c: Moved to... * jit-w32.cc: ...here. * libgccjit.c: Moved to... * libgccjit.cc: ...here. gcc/lto/ChangeLog: * common.c: Moved to... * common.cc: ...here. * lto-common.c: Moved to... * lto-common.cc: ...here. * lto-dump.c: Moved to... * lto-dump.cc: ...here. * lto-lang.c: Moved to... * lto-lang.cc: ...here. * lto-object.c: Moved to... * lto-object.cc: ...here. * lto-partition.c: Moved to... * lto-partition.cc: ...here. * lto-symtab.c: Moved to... * lto-symtab.cc: ...here. * lto.c: Moved to... * lto.cc: ...here. gcc/objc/ChangeLog: * objc-act.c: Moved to... * objc-act.cc: ...here. * objc-encoding.c: Moved to... * objc-encoding.cc: ...here. * objc-gnu-runtime-abi-01.c: Moved to... * objc-gnu-runtime-abi-01.cc: ...here. * objc-lang.c: Moved to... * objc-lang.cc: ...here. * objc-map.c: Moved to... * objc-map.cc: ...here. * objc-next-runtime-abi-01.c: Moved to... * objc-next-runtime-abi-01.cc: ...here. * objc-next-runtime-abi-02.c: Moved to... * objc-next-runtime-abi-02.cc: ...here. * objc-runtime-shared-support.c: Moved to... * objc-runtime-shared-support.cc: ...here. gcc/objcp/ChangeLog: * objcp-decl.c: Moved to... * objcp-decl.cc: ...here. * objcp-lang.c: Moved to... * objcp-lang.cc: ...here. libcpp/ChangeLog: * charset.c: Moved to... * charset.cc: ...here. * directives.c: Moved to... * directives.cc: ...here. * errors.c: Moved to... * errors.cc: ...here. * expr.c: Moved to... * expr.cc: ...here. * files.c: Moved to... * files.cc: ...here. * identifiers.c: Moved to... * identifiers.cc: ...here. * init.c: Moved to... * init.cc: ...here. * lex.c: Moved to... * lex.cc: ...here. * line-map.c: Moved to... * line-map.cc: ...here. * macro.c: Moved to... * macro.cc: ...here. * makeucnid.c: Moved to... * makeucnid.cc: ...here. * mkdeps.c: Moved to... * mkdeps.cc: ...here. * pch.c: Moved to... * pch.cc: ...here. * symtab.c: Moved to... * symtab.cc: ...here. * traditional.c: Moved to... * traditional.cc: ...here.
Diffstat (limited to 'gcc/print-rtl.c')
-rw-r--r--gcc/print-rtl.c2185
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