aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/dump-parse-tree.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/fortran/dump-parse-tree.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/fortran/dump-parse-tree.c')
-rw-r--r--gcc/fortran/dump-parse-tree.c3924
1 files changed, 0 insertions, 3924 deletions
diff --git a/gcc/fortran/dump-parse-tree.c b/gcc/fortran/dump-parse-tree.c
deleted file mode 100644
index a618ae2..0000000
--- a/gcc/fortran/dump-parse-tree.c
+++ /dev/null
@@ -1,3924 +0,0 @@
-/* Parse tree dumper
- Copyright (C) 2003-2022 Free Software Foundation, Inc.
- Contributed by Steven Bosscher
-
-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/>. */
-
-
-/* Actually this is just a collection of routines that used to be
- scattered around the sources. Now that they are all in a single
- file, almost all of them can be static, and the other files don't
- have this mess in them.
-
- As a nice side-effect, this file can act as documentation of the
- gfc_code and gfc_expr structures and all their friends and
- relatives.
-
- TODO: Dump DATA. */
-
-#include "config.h"
-#include "system.h"
-#include "coretypes.h"
-#include "gfortran.h"
-#include "constructor.h"
-#include "version.h"
-
-/* Keep track of indentation for symbol tree dumps. */
-static int show_level = 0;
-
-/* The file handle we're dumping to is kept in a static variable. This
- is not too cool, but it avoids a lot of passing it around. */
-static FILE *dumpfile;
-
-/* Forward declaration of some of the functions. */
-static void show_expr (gfc_expr *p);
-static void show_code_node (int, gfc_code *);
-static void show_namespace (gfc_namespace *ns);
-static void show_code (int, gfc_code *);
-static void show_symbol (gfc_symbol *);
-static void show_typespec (gfc_typespec *);
-static void show_ref (gfc_ref *);
-static void show_attr (symbol_attribute *, const char *);
-
-/* Allow dumping of an expression in the debugger. */
-void gfc_debug_expr (gfc_expr *);
-
-void debug (symbol_attribute *attr)
-{
- FILE *tmp = dumpfile;
- dumpfile = stderr;
- show_attr (attr, NULL);
- fputc ('\n', dumpfile);
- dumpfile = tmp;
-}
-
-void debug (gfc_formal_arglist *formal)
-{
- FILE *tmp = dumpfile;
- dumpfile = stderr;
- for (; formal; formal = formal->next)
- {
- fputc ('\n', dumpfile);
- show_symbol (formal->sym);
- }
- fputc ('\n', dumpfile);
- dumpfile = tmp;
-}
-
-void debug (symbol_attribute attr)
-{
- debug (&attr);
-}
-
-void debug (gfc_expr *e)
-{
- FILE *tmp = dumpfile;
- dumpfile = stderr;
- if (e != NULL)
- {
- show_expr (e);
- fputc (' ', dumpfile);
- show_typespec (&e->ts);
- }
- else
- fputs ("() ", dumpfile);
-
- fputc ('\n', dumpfile);
- dumpfile = tmp;
-}
-
-void debug (gfc_typespec *ts)
-{
- FILE *tmp = dumpfile;
- dumpfile = stderr;
- show_typespec (ts);
- fputc ('\n', dumpfile);
- dumpfile = tmp;
-}
-
-void debug (gfc_typespec ts)
-{
- debug (&ts);
-}
-
-void debug (gfc_ref *p)
-{
- FILE *tmp = dumpfile;
- dumpfile = stderr;
- show_ref (p);
- fputc ('\n', dumpfile);
- dumpfile = tmp;
-}
-
-void
-gfc_debug_expr (gfc_expr *e)
-{
- FILE *tmp = dumpfile;
- dumpfile = stderr;
- show_expr (e);
- fputc ('\n', dumpfile);
- dumpfile = tmp;
-}
-
-/* Allow for dumping of a piece of code in the debugger. */
-void gfc_debug_code (gfc_code *c);
-
-void
-gfc_debug_code (gfc_code *c)
-{
- FILE *tmp = dumpfile;
- dumpfile = stderr;
- show_code (1, c);
- fputc ('\n', dumpfile);
- dumpfile = tmp;
-}
-
-void debug (gfc_symbol *sym)
-{
- FILE *tmp = dumpfile;
- dumpfile = stderr;
- show_symbol (sym);
- fputc ('\n', dumpfile);
- dumpfile = tmp;
-}
-
-/* Do indentation for a specific level. */
-
-static inline void
-code_indent (int level, gfc_st_label *label)
-{
- int i;
-
- if (label != NULL)
- fprintf (dumpfile, "%-5d ", label->value);
-
- for (i = 0; i < (2 * level - (label ? 6 : 0)); i++)
- fputc (' ', dumpfile);
-}
-
-
-/* Simple indentation at the current level. This one
- is used to show symbols. */
-
-static inline void
-show_indent (void)
-{
- fputc ('\n', dumpfile);
- code_indent (show_level, NULL);
-}
-
-
-/* Show type-specific information. */
-
-static void
-show_typespec (gfc_typespec *ts)
-{
- if (ts->type == BT_ASSUMED)
- {
- fputs ("(TYPE(*))", dumpfile);
- return;
- }
-
- fprintf (dumpfile, "(%s ", gfc_basic_typename (ts->type));
-
- switch (ts->type)
- {
- case BT_DERIVED:
- case BT_CLASS:
- case BT_UNION:
- fprintf (dumpfile, "%s", ts->u.derived->name);
- break;
-
- case BT_CHARACTER:
- if (ts->u.cl)
- show_expr (ts->u.cl->length);
- fprintf(dumpfile, " %d", ts->kind);
- break;
-
- default:
- fprintf (dumpfile, "%d", ts->kind);
- break;
- }
- if (ts->is_c_interop)
- fputs (" C_INTEROP", dumpfile);
-
- if (ts->is_iso_c)
- fputs (" ISO_C", dumpfile);
-
- if (ts->deferred)
- fputs (" DEFERRED", dumpfile);
-
- fputc (')', dumpfile);
-}
-
-
-/* Show an actual argument list. */
-
-static void
-show_actual_arglist (gfc_actual_arglist *a)
-{
- fputc ('(', dumpfile);
-
- for (; a; a = a->next)
- {
- fputc ('(', dumpfile);
- if (a->name != NULL)
- fprintf (dumpfile, "%s = ", a->name);
- if (a->expr != NULL)
- show_expr (a->expr);
- else
- fputs ("(arg not-present)", dumpfile);
-
- fputc (')', dumpfile);
- if (a->next != NULL)
- fputc (' ', dumpfile);
- }
-
- fputc (')', dumpfile);
-}
-
-
-/* Show a gfc_array_spec array specification structure. */
-
-static void
-show_array_spec (gfc_array_spec *as)
-{
- const char *c;
- int i;
-
- if (as == NULL)
- {
- fputs ("()", dumpfile);
- return;
- }
-
- fprintf (dumpfile, "(%d [%d]", as->rank, as->corank);
-
- if (as->rank + as->corank > 0 || as->rank == -1)
- {
- switch (as->type)
- {
- case AS_EXPLICIT: c = "AS_EXPLICIT"; break;
- case AS_DEFERRED: c = "AS_DEFERRED"; break;
- case AS_ASSUMED_SIZE: c = "AS_ASSUMED_SIZE"; break;
- case AS_ASSUMED_SHAPE: c = "AS_ASSUMED_SHAPE"; break;
- case AS_ASSUMED_RANK: c = "AS_ASSUMED_RANK"; break;
- default:
- gfc_internal_error ("show_array_spec(): Unhandled array shape "
- "type.");
- }
- fprintf (dumpfile, " %s ", c);
-
- for (i = 0; i < as->rank + as->corank; i++)
- {
- show_expr (as->lower[i]);
- fputc (' ', dumpfile);
- show_expr (as->upper[i]);
- fputc (' ', dumpfile);
- }
- }
-
- fputc (')', dumpfile);
-}
-
-
-/* Show a gfc_array_ref array reference structure. */
-
-static void
-show_array_ref (gfc_array_ref * ar)
-{
- int i;
-
- fputc ('(', dumpfile);
-
- switch (ar->type)
- {
- case AR_FULL:
- fputs ("FULL", dumpfile);
- break;
-
- case AR_SECTION:
- for (i = 0; i < ar->dimen; i++)
- {
- /* There are two types of array sections: either the
- elements are identified by an integer array ('vector'),
- or by an index range. In the former case we only have to
- print the start expression which contains the vector, in
- the latter case we have to print any of lower and upper
- bound and the stride, if they're present. */
-
- if (ar->start[i] != NULL)
- show_expr (ar->start[i]);
-
- if (ar->dimen_type[i] == DIMEN_RANGE)
- {
- fputc (':', dumpfile);
-
- if (ar->end[i] != NULL)
- show_expr (ar->end[i]);
-
- if (ar->stride[i] != NULL)
- {
- fputc (':', dumpfile);
- show_expr (ar->stride[i]);
- }
- }
-
- if (i != ar->dimen - 1)
- fputs (" , ", dumpfile);
- }
- break;
-
- case AR_ELEMENT:
- for (i = 0; i < ar->dimen; i++)
- {
- show_expr (ar->start[i]);
- if (i != ar->dimen - 1)
- fputs (" , ", dumpfile);
- }
- break;
-
- case AR_UNKNOWN:
- fputs ("UNKNOWN", dumpfile);
- break;
-
- default:
- gfc_internal_error ("show_array_ref(): Unknown array reference");
- }
-
- fputc (')', dumpfile);
- if (ar->codimen == 0)
- return;
-
- /* Show coarray part of the reference, if any. */
- fputc ('[',dumpfile);
- for (i = ar->dimen; i < ar->dimen + ar->codimen; i++)
- {
- if (ar->dimen_type[i] == DIMEN_STAR)
- fputc('*',dumpfile);
- else if (ar->dimen_type[i] == DIMEN_THIS_IMAGE)
- fputs("THIS_IMAGE", dumpfile);
- else
- {
- show_expr (ar->start[i]);
- if (ar->end[i])
- {
- fputc(':', dumpfile);
- show_expr (ar->end[i]);
- }
- }
- if (i != ar->dimen + ar->codimen - 1)
- fputs (" , ", dumpfile);
-
- }
- fputc (']',dumpfile);
-}
-
-
-/* Show a list of gfc_ref structures. */
-
-static void
-show_ref (gfc_ref *p)
-{
- for (; p; p = p->next)
- switch (p->type)
- {
- case REF_ARRAY:
- show_array_ref (&p->u.ar);
- break;
-
- case REF_COMPONENT:
- fprintf (dumpfile, " %% %s", p->u.c.component->name);
- break;
-
- case REF_SUBSTRING:
- fputc ('(', dumpfile);
- show_expr (p->u.ss.start);
- fputc (':', dumpfile);
- show_expr (p->u.ss.end);
- fputc (')', dumpfile);
- break;
-
- case REF_INQUIRY:
- switch (p->u.i)
- {
- case INQUIRY_KIND:
- fprintf (dumpfile, " INQUIRY_KIND ");
- break;
- case INQUIRY_LEN:
- fprintf (dumpfile, " INQUIRY_LEN ");
- break;
- case INQUIRY_RE:
- fprintf (dumpfile, " INQUIRY_RE ");
- break;
- case INQUIRY_IM:
- fprintf (dumpfile, " INQUIRY_IM ");
- }
- break;
-
- default:
- gfc_internal_error ("show_ref(): Bad component code");
- }
-}
-
-
-/* Display a constructor. Works recursively for array constructors. */
-
-static void
-show_constructor (gfc_constructor_base base)
-{
- gfc_constructor *c;
- for (c = gfc_constructor_first (base); c; c = gfc_constructor_next (c))
- {
- if (c->iterator == NULL)
- show_expr (c->expr);
- else
- {
- fputc ('(', dumpfile);
- show_expr (c->expr);
-
- fputc (' ', dumpfile);
- show_expr (c->iterator->var);
- fputc ('=', dumpfile);
- show_expr (c->iterator->start);
- fputc (',', dumpfile);
- show_expr (c->iterator->end);
- fputc (',', dumpfile);
- show_expr (c->iterator->step);
-
- fputc (')', dumpfile);
- }
-
- if (gfc_constructor_next (c) != NULL)
- fputs (" , ", dumpfile);
- }
-}
-
-
-static void
-show_char_const (const gfc_char_t *c, gfc_charlen_t length)
-{
- fputc ('\'', dumpfile);
- for (size_t i = 0; i < (size_t) length; i++)
- {
- if (c[i] == '\'')
- fputs ("''", dumpfile);
- else
- fputs (gfc_print_wide_char (c[i]), dumpfile);
- }
- fputc ('\'', dumpfile);
-}
-
-
-/* Show a component-call expression. */
-
-static void
-show_compcall (gfc_expr* p)
-{
- gcc_assert (p->expr_type == EXPR_COMPCALL);
-
- fprintf (dumpfile, "%s", p->symtree->n.sym->name);
- show_ref (p->ref);
- fprintf (dumpfile, "%s", p->value.compcall.name);
-
- show_actual_arglist (p->value.compcall.actual);
-}
-
-
-/* Show an expression. */
-
-static void
-show_expr (gfc_expr *p)
-{
- const char *c;
- int i;
-
- if (p == NULL)
- {
- fputs ("()", dumpfile);
- return;
- }
-
- switch (p->expr_type)
- {
- case EXPR_SUBSTRING:
- show_char_const (p->value.character.string, p->value.character.length);
- show_ref (p->ref);
- break;
-
- case EXPR_STRUCTURE:
- fprintf (dumpfile, "%s(", p->ts.u.derived->name);
- show_constructor (p->value.constructor);
- fputc (')', dumpfile);
- break;
-
- case EXPR_ARRAY:
- fputs ("(/ ", dumpfile);
- show_constructor (p->value.constructor);
- fputs (" /)", dumpfile);
-
- show_ref (p->ref);
- break;
-
- case EXPR_NULL:
- fputs ("NULL()", dumpfile);
- break;
-
- case EXPR_CONSTANT:
- switch (p->ts.type)
- {
- case BT_INTEGER:
- mpz_out_str (dumpfile, 10, p->value.integer);
-
- if (p->ts.kind != gfc_default_integer_kind)
- fprintf (dumpfile, "_%d", p->ts.kind);
- break;
-
- case BT_LOGICAL:
- if (p->value.logical)
- fputs (".true.", dumpfile);
- else
- fputs (".false.", dumpfile);
- break;
-
- case BT_REAL:
- mpfr_out_str (dumpfile, 10, 0, p->value.real, GFC_RND_MODE);
- if (p->ts.kind != gfc_default_real_kind)
- fprintf (dumpfile, "_%d", p->ts.kind);
- break;
-
- case BT_CHARACTER:
- show_char_const (p->value.character.string,
- p->value.character.length);
- break;
-
- case BT_COMPLEX:
- fputs ("(complex ", dumpfile);
-
- mpfr_out_str (dumpfile, 10, 0, mpc_realref (p->value.complex),
- GFC_RND_MODE);
- if (p->ts.kind != gfc_default_complex_kind)
- fprintf (dumpfile, "_%d", p->ts.kind);
-
- fputc (' ', dumpfile);
-
- mpfr_out_str (dumpfile, 10, 0, mpc_imagref (p->value.complex),
- GFC_RND_MODE);
- if (p->ts.kind != gfc_default_complex_kind)
- fprintf (dumpfile, "_%d", p->ts.kind);
-
- fputc (')', dumpfile);
- break;
-
- case BT_BOZ:
- if (p->boz.rdx == 2)
- fputs ("b'", dumpfile);
- else if (p->boz.rdx == 8)
- fputs ("o'", dumpfile);
- else
- fputs ("z'", dumpfile);
- fprintf (dumpfile, "%s'", p->boz.str);
- break;
-
- case BT_HOLLERITH:
- fprintf (dumpfile, HOST_WIDE_INT_PRINT_DEC "H",
- p->representation.length);
- c = p->representation.string;
- for (i = 0; i < p->representation.length; i++, c++)
- {
- fputc (*c, dumpfile);
- }
- break;
-
- default:
- fputs ("???", dumpfile);
- break;
- }
-
- if (p->representation.string)
- {
- fputs (" {", dumpfile);
- c = p->representation.string;
- for (i = 0; i < p->representation.length; i++, c++)
- {
- fprintf (dumpfile, "%.2x", (unsigned int) *c);
- if (i < p->representation.length - 1)
- fputc (',', dumpfile);
- }
- fputc ('}', dumpfile);
- }
-
- break;
-
- case EXPR_VARIABLE:
- if (p->symtree->n.sym->ns && p->symtree->n.sym->ns->proc_name)
- fprintf (dumpfile, "%s:", p->symtree->n.sym->ns->proc_name->name);
- fprintf (dumpfile, "%s", p->symtree->n.sym->name);
- show_ref (p->ref);
- break;
-
- case EXPR_OP:
- fputc ('(', dumpfile);
- switch (p->value.op.op)
- {
- case INTRINSIC_UPLUS:
- fputs ("U+ ", dumpfile);
- break;
- case INTRINSIC_UMINUS:
- fputs ("U- ", dumpfile);
- break;
- case INTRINSIC_PLUS:
- fputs ("+ ", dumpfile);
- break;
- case INTRINSIC_MINUS:
- fputs ("- ", dumpfile);
- break;
- case INTRINSIC_TIMES:
- fputs ("* ", dumpfile);
- break;
- case INTRINSIC_DIVIDE:
- fputs ("/ ", dumpfile);
- break;
- case INTRINSIC_POWER:
- fputs ("** ", dumpfile);
- break;
- case INTRINSIC_CONCAT:
- fputs ("// ", dumpfile);
- break;
- case INTRINSIC_AND:
- fputs ("AND ", dumpfile);
- break;
- case INTRINSIC_OR:
- fputs ("OR ", dumpfile);
- break;
- case INTRINSIC_EQV:
- fputs ("EQV ", dumpfile);
- break;
- case INTRINSIC_NEQV:
- fputs ("NEQV ", dumpfile);
- break;
- case INTRINSIC_EQ:
- case INTRINSIC_EQ_OS:
- fputs ("== ", dumpfile);
- break;
- case INTRINSIC_NE:
- case INTRINSIC_NE_OS:
- fputs ("/= ", dumpfile);
- break;
- case INTRINSIC_GT:
- case INTRINSIC_GT_OS:
- fputs ("> ", dumpfile);
- break;
- case INTRINSIC_GE:
- case INTRINSIC_GE_OS:
- fputs (">= ", dumpfile);
- break;
- case INTRINSIC_LT:
- case INTRINSIC_LT_OS:
- fputs ("< ", dumpfile);
- break;
- case INTRINSIC_LE:
- case INTRINSIC_LE_OS:
- fputs ("<= ", dumpfile);
- break;
- case INTRINSIC_NOT:
- fputs ("NOT ", dumpfile);
- break;
- case INTRINSIC_PARENTHESES:
- fputs ("parens ", dumpfile);
- break;
-
- default:
- gfc_internal_error
- ("show_expr(): Bad intrinsic in expression");
- }
-
- show_expr (p->value.op.op1);
-
- if (p->value.op.op2)
- {
- fputc (' ', dumpfile);
- show_expr (p->value.op.op2);
- }
-
- fputc (')', dumpfile);
- break;
-
- case EXPR_FUNCTION:
- if (p->value.function.name == NULL)
- {
- fprintf (dumpfile, "%s", p->symtree->n.sym->name);
- if (gfc_is_proc_ptr_comp (p))
- show_ref (p->ref);
- fputc ('[', dumpfile);
- show_actual_arglist (p->value.function.actual);
- fputc (']', dumpfile);
- }
- else
- {
- fprintf (dumpfile, "%s", p->value.function.name);
- if (gfc_is_proc_ptr_comp (p))
- show_ref (p->ref);
- fputc ('[', dumpfile);
- fputc ('[', dumpfile);
- show_actual_arglist (p->value.function.actual);
- fputc (']', dumpfile);
- fputc (']', dumpfile);
- }
-
- break;
-
- case EXPR_COMPCALL:
- show_compcall (p);
- break;
-
- default:
- gfc_internal_error ("show_expr(): Don't know how to show expr");
- }
-}
-
-/* Show symbol attributes. The flavor and intent are followed by
- whatever single bit attributes are present. */
-
-static void
-show_attr (symbol_attribute *attr, const char * module)
-{
- if (attr->flavor != FL_UNKNOWN)
- {
- if (attr->flavor == FL_DERIVED && attr->pdt_template)
- fputs (" (PDT-TEMPLATE", dumpfile);
- else
- fprintf (dumpfile, "(%s ", gfc_code2string (flavors, attr->flavor));
- }
- if (attr->access != ACCESS_UNKNOWN)
- fprintf (dumpfile, "%s ", gfc_code2string (access_types, attr->access));
- if (attr->proc != PROC_UNKNOWN)
- fprintf (dumpfile, "%s ", gfc_code2string (procedures, attr->proc));
- if (attr->save != SAVE_NONE)
- fprintf (dumpfile, "%s", gfc_code2string (save_status, attr->save));
-
- if (attr->artificial)
- fputs (" ARTIFICIAL", dumpfile);
- if (attr->allocatable)
- fputs (" ALLOCATABLE", dumpfile);
- if (attr->asynchronous)
- fputs (" ASYNCHRONOUS", dumpfile);
- if (attr->codimension)
- fputs (" CODIMENSION", dumpfile);
- if (attr->dimension)
- fputs (" DIMENSION", dumpfile);
- if (attr->contiguous)
- fputs (" CONTIGUOUS", dumpfile);
- if (attr->external)
- fputs (" EXTERNAL", dumpfile);
- if (attr->intrinsic)
- fputs (" INTRINSIC", dumpfile);
- if (attr->optional)
- fputs (" OPTIONAL", dumpfile);
- if (attr->pdt_kind)
- fputs (" KIND", dumpfile);
- if (attr->pdt_len)
- fputs (" LEN", dumpfile);
- if (attr->pointer)
- fputs (" POINTER", dumpfile);
- if (attr->subref_array_pointer)
- fputs (" SUBREF-ARRAY-POINTER", dumpfile);
- if (attr->cray_pointer)
- fputs (" CRAY-POINTER", dumpfile);
- if (attr->cray_pointee)
- fputs (" CRAY-POINTEE", dumpfile);
- if (attr->is_protected)
- fputs (" PROTECTED", dumpfile);
- if (attr->value)
- fputs (" VALUE", dumpfile);
- if (attr->volatile_)
- fputs (" VOLATILE", dumpfile);
- if (attr->threadprivate)
- fputs (" THREADPRIVATE", dumpfile);
- if (attr->target)
- fputs (" TARGET", dumpfile);
- if (attr->dummy)
- {
- fputs (" DUMMY", dumpfile);
- if (attr->intent != INTENT_UNKNOWN)
- fprintf (dumpfile, "(%s)", gfc_intent_string (attr->intent));
- }
-
- if (attr->result)
- fputs (" RESULT", dumpfile);
- if (attr->entry)
- fputs (" ENTRY", dumpfile);
- if (attr->entry_master)
- fputs (" ENTRY-MASTER", dumpfile);
- if (attr->mixed_entry_master)
- fputs (" MIXED-ENTRY-MASTER", dumpfile);
- if (attr->is_bind_c)
- fputs (" BIND(C)", dumpfile);
-
- if (attr->data)
- fputs (" DATA", dumpfile);
- if (attr->use_assoc)
- {
- fputs (" USE-ASSOC", dumpfile);
- if (module != NULL)
- fprintf (dumpfile, "(%s)", module);
- }
-
- if (attr->in_namelist)
- fputs (" IN-NAMELIST", dumpfile);
- if (attr->in_common)
- fputs (" IN-COMMON", dumpfile);
-
- if (attr->abstract)
- fputs (" ABSTRACT", dumpfile);
- if (attr->function)
- fputs (" FUNCTION", dumpfile);
- if (attr->subroutine)
- fputs (" SUBROUTINE", dumpfile);
- if (attr->implicit_type)
- fputs (" IMPLICIT-TYPE", dumpfile);
-
- if (attr->sequence)
- fputs (" SEQUENCE", dumpfile);
- if (attr->alloc_comp)
- fputs (" ALLOC-COMP", dumpfile);
- if (attr->pointer_comp)
- fputs (" POINTER-COMP", dumpfile);
- if (attr->proc_pointer_comp)
- fputs (" PROC-POINTER-COMP", dumpfile);
- if (attr->private_comp)
- fputs (" PRIVATE-COMP", dumpfile);
- if (attr->zero_comp)
- fputs (" ZERO-COMP", dumpfile);
- if (attr->coarray_comp)
- fputs (" COARRAY-COMP", dumpfile);
- if (attr->lock_comp)
- fputs (" LOCK-COMP", dumpfile);
- if (attr->event_comp)
- fputs (" EVENT-COMP", dumpfile);
- if (attr->defined_assign_comp)
- fputs (" DEFINED-ASSIGNED-COMP", dumpfile);
- if (attr->unlimited_polymorphic)
- fputs (" UNLIMITED-POLYMORPHIC", dumpfile);
- if (attr->has_dtio_procs)
- fputs (" HAS-DTIO-PROCS", dumpfile);
- if (attr->caf_token)
- fputs (" CAF-TOKEN", dumpfile);
- if (attr->select_type_temporary)
- fputs (" SELECT-TYPE-TEMPORARY", dumpfile);
- if (attr->associate_var)
- fputs (" ASSOCIATE-VAR", dumpfile);
- if (attr->pdt_kind)
- fputs (" PDT-KIND", dumpfile);
- if (attr->pdt_len)
- fputs (" PDT-LEN", dumpfile);
- if (attr->pdt_type)
- fputs (" PDT-TYPE", dumpfile);
- if (attr->pdt_array)
- fputs (" PDT-ARRAY", dumpfile);
- if (attr->pdt_string)
- fputs (" PDT-STRING", dumpfile);
- if (attr->omp_udr_artificial_var)
- fputs (" OMP-UDT-ARTIFICIAL-VAR", dumpfile);
- if (attr->omp_declare_target)
- fputs (" OMP-DECLARE-TARGET", dumpfile);
- if (attr->omp_declare_target_link)
- fputs (" OMP-DECLARE-TARGET-LINK", dumpfile);
- if (attr->elemental)
- fputs (" ELEMENTAL", dumpfile);
- if (attr->pure)
- fputs (" PURE", dumpfile);
- if (attr->implicit_pure)
- fputs (" IMPLICIT-PURE", dumpfile);
- if (attr->recursive)
- fputs (" RECURSIVE", dumpfile);
- if (attr->unmaskable)
- fputs (" UNMASKABKE", dumpfile);
- if (attr->masked)
- fputs (" MASKED", dumpfile);
- if (attr->contained)
- fputs (" CONTAINED", dumpfile);
- if (attr->mod_proc)
- fputs (" MOD-PROC", dumpfile);
- if (attr->module_procedure)
- fputs (" MODULE-PROCEDURE", dumpfile);
- if (attr->public_used)
- fputs (" PUBLIC_USED", dumpfile);
- if (attr->array_outer_dependency)
- fputs (" ARRAY-OUTER-DEPENDENCY", dumpfile);
- if (attr->noreturn)
- fputs (" NORETURN", dumpfile);
- if (attr->always_explicit)
- fputs (" ALWAYS-EXPLICIT", dumpfile);
- if (attr->is_main_program)
- fputs (" IS-MAIN-PROGRAM", dumpfile);
- if (attr->oacc_routine_nohost)
- fputs (" OACC-ROUTINE-NOHOST", dumpfile);
-
- /* FIXME: Still missing are oacc_routine_lop and ext_attr. */
- fputc (')', dumpfile);
-}
-
-
-/* Show components of a derived type. */
-
-static void
-show_components (gfc_symbol *sym)
-{
- gfc_component *c;
-
- for (c = sym->components; c; c = c->next)
- {
- show_indent ();
- fprintf (dumpfile, "(%s ", c->name);
- show_typespec (&c->ts);
- if (c->kind_expr)
- {
- fputs (" kind_expr: ", dumpfile);
- show_expr (c->kind_expr);
- }
- if (c->param_list)
- {
- fputs ("PDT parameters", dumpfile);
- show_actual_arglist (c->param_list);
- }
-
- if (c->attr.allocatable)
- fputs (" ALLOCATABLE", dumpfile);
- if (c->attr.pdt_kind)
- fputs (" KIND", dumpfile);
- if (c->attr.pdt_len)
- fputs (" LEN", dumpfile);
- if (c->attr.pointer)
- fputs (" POINTER", dumpfile);
- if (c->attr.proc_pointer)
- fputs (" PPC", dumpfile);
- if (c->attr.dimension)
- fputs (" DIMENSION", dumpfile);
- fputc (' ', dumpfile);
- show_array_spec (c->as);
- if (c->attr.access)
- fprintf (dumpfile, " %s", gfc_code2string (access_types, c->attr.access));
- fputc (')', dumpfile);
- if (c->next != NULL)
- fputc (' ', dumpfile);
- }
-}
-
-
-/* Show the f2k_derived namespace with procedure bindings. */
-
-static void
-show_typebound_proc (gfc_typebound_proc* tb, const char* name)
-{
- show_indent ();
-
- if (tb->is_generic)
- fputs ("GENERIC", dumpfile);
- else
- {
- fputs ("PROCEDURE, ", dumpfile);
- if (tb->nopass)
- fputs ("NOPASS", dumpfile);
- else
- {
- if (tb->pass_arg)
- fprintf (dumpfile, "PASS(%s)", tb->pass_arg);
- else
- fputs ("PASS", dumpfile);
- }
- if (tb->non_overridable)
- fputs (", NON_OVERRIDABLE", dumpfile);
- }
-
- if (tb->access == ACCESS_PUBLIC)
- fputs (", PUBLIC", dumpfile);
- else
- fputs (", PRIVATE", dumpfile);
-
- fprintf (dumpfile, " :: %s => ", name);
-
- if (tb->is_generic)
- {
- gfc_tbp_generic* g;
- for (g = tb->u.generic; g; g = g->next)
- {
- fputs (g->specific_st->name, dumpfile);
- if (g->next)
- fputs (", ", dumpfile);
- }
- }
- else
- fputs (tb->u.specific->n.sym->name, dumpfile);
-}
-
-static void
-show_typebound_symtree (gfc_symtree* st)
-{
- gcc_assert (st->n.tb);
- show_typebound_proc (st->n.tb, st->name);
-}
-
-static void
-show_f2k_derived (gfc_namespace* f2k)
-{
- gfc_finalizer* f;
- int op;
-
- show_indent ();
- fputs ("Procedure bindings:", dumpfile);
- ++show_level;
-
- /* Finalizer bindings. */
- for (f = f2k->finalizers; f; f = f->next)
- {
- show_indent ();
- fprintf (dumpfile, "FINAL %s", f->proc_tree->n.sym->name);
- }
-
- /* Type-bound procedures. */
- gfc_traverse_symtree (f2k->tb_sym_root, &show_typebound_symtree);
-
- --show_level;
-
- show_indent ();
- fputs ("Operator bindings:", dumpfile);
- ++show_level;
-
- /* User-defined operators. */
- gfc_traverse_symtree (f2k->tb_uop_root, &show_typebound_symtree);
-
- /* Intrinsic operators. */
- for (op = GFC_INTRINSIC_BEGIN; op != GFC_INTRINSIC_END; ++op)
- if (f2k->tb_op[op])
- show_typebound_proc (f2k->tb_op[op],
- gfc_op2string ((gfc_intrinsic_op) op));
-
- --show_level;
-}
-
-
-/* Show a symbol. If a symbol is an ENTRY, SUBROUTINE or FUNCTION, we
- show the interface. Information needed to reconstruct the list of
- specific interfaces associated with a generic symbol is done within
- that symbol. */
-
-static void
-show_symbol (gfc_symbol *sym)
-{
- gfc_formal_arglist *formal;
- gfc_interface *intr;
- int i,len;
-
- if (sym == NULL)
- return;
-
- fprintf (dumpfile, "|| symbol: '%s' ", sym->name);
- len = strlen (sym->name);
- for (i=len; i<12; i++)
- fputc(' ', dumpfile);
-
- if (sym->binding_label)
- fprintf (dumpfile,"|| binding_label: '%s' ", sym->binding_label);
-
- ++show_level;
-
- show_indent ();
- fputs ("type spec : ", dumpfile);
- show_typespec (&sym->ts);
-
- show_indent ();
- fputs ("attributes: ", dumpfile);
- show_attr (&sym->attr, sym->module);
-
- if (sym->value)
- {
- show_indent ();
- fputs ("value: ", dumpfile);
- show_expr (sym->value);
- }
-
- if (sym->ts.type != BT_CLASS && sym->as)
- {
- show_indent ();
- fputs ("Array spec:", dumpfile);
- show_array_spec (sym->as);
- }
- else if (sym->ts.type == BT_CLASS && CLASS_DATA (sym)->as)
- {
- show_indent ();
- fputs ("Array spec:", dumpfile);
- show_array_spec (CLASS_DATA (sym)->as);
- }
-
- if (sym->generic)
- {
- show_indent ();
- fputs ("Generic interfaces:", dumpfile);
- for (intr = sym->generic; intr; intr = intr->next)
- fprintf (dumpfile, " %s", intr->sym->name);
- }
-
- if (sym->result)
- {
- show_indent ();
- fprintf (dumpfile, "result: %s", sym->result->name);
- }
-
- if (sym->components)
- {
- show_indent ();
- fputs ("components: ", dumpfile);
- show_components (sym);
- }
-
- if (sym->f2k_derived)
- {
- show_indent ();
- if (sym->hash_value)
- fprintf (dumpfile, "hash: %d", sym->hash_value);
- show_f2k_derived (sym->f2k_derived);
- }
-
- if (sym->formal)
- {
- show_indent ();
- fputs ("Formal arglist:", dumpfile);
-
- for (formal = sym->formal; formal; formal = formal->next)
- {
- if (formal->sym != NULL)
- fprintf (dumpfile, " %s", formal->sym->name);
- else
- fputs (" [Alt Return]", dumpfile);
- }
- }
-
- if (sym->formal_ns && (sym->formal_ns->proc_name != sym)
- && sym->attr.proc != PROC_ST_FUNCTION
- && !sym->attr.entry)
- {
- show_indent ();
- fputs ("Formal namespace", dumpfile);
- show_namespace (sym->formal_ns);
- }
-
- if (sym->attr.flavor == FL_VARIABLE
- && sym->param_list)
- {
- show_indent ();
- fputs ("PDT parameters", dumpfile);
- show_actual_arglist (sym->param_list);
- }
-
- if (sym->attr.flavor == FL_NAMELIST)
- {
- gfc_namelist *nl;
- show_indent ();
- fputs ("variables : ", dumpfile);
- for (nl = sym->namelist; nl; nl = nl->next)
- fprintf (dumpfile, " %s",nl->sym->name);
- }
-
- --show_level;
-}
-
-
-/* Show a user-defined operator. Just prints an operator
- and the name of the associated subroutine, really. */
-
-static void
-show_uop (gfc_user_op *uop)
-{
- gfc_interface *intr;
-
- show_indent ();
- fprintf (dumpfile, "%s:", uop->name);
-
- for (intr = uop->op; intr; intr = intr->next)
- fprintf (dumpfile, " %s", intr->sym->name);
-}
-
-
-/* Workhorse function for traversing the user operator symtree. */
-
-static void
-traverse_uop (gfc_symtree *st, void (*func) (gfc_user_op *))
-{
- if (st == NULL)
- return;
-
- (*func) (st->n.uop);
-
- traverse_uop (st->left, func);
- traverse_uop (st->right, func);
-}
-
-
-/* Traverse the tree of user operator nodes. */
-
-void
-gfc_traverse_user_op (gfc_namespace *ns, void (*func) (gfc_user_op *))
-{
- traverse_uop (ns->uop_root, func);
-}
-
-
-/* Function to display a common block. */
-
-static void
-show_common (gfc_symtree *st)
-{
- gfc_symbol *s;
-
- show_indent ();
- fprintf (dumpfile, "common: /%s/ ", st->name);
-
- s = st->n.common->head;
- while (s)
- {
- fprintf (dumpfile, "%s", s->name);
- s = s->common_next;
- if (s)
- fputs (", ", dumpfile);
- }
- fputc ('\n', dumpfile);
-}
-
-
-/* Worker function to display the symbol tree. */
-
-static void
-show_symtree (gfc_symtree *st)
-{
- int len, i;
-
- show_indent ();
-
- len = strlen(st->name);
- fprintf (dumpfile, "symtree: '%s'", st->name);
-
- for (i=len; i<12; i++)
- fputc(' ', dumpfile);
-
- if (st->ambiguous)
- fputs( " Ambiguous", dumpfile);
-
- if (st->n.sym->ns != gfc_current_ns)
- fprintf (dumpfile, "|| symbol: '%s' from namespace '%s'", st->n.sym->name,
- st->n.sym->ns->proc_name->name);
- else
- show_symbol (st->n.sym);
-}
-
-
-/******************* Show gfc_code structures **************/
-
-
-/* Show a list of code structures. Mutually recursive with
- show_code_node(). */
-
-static void
-show_code (int level, gfc_code *c)
-{
- for (; c; c = c->next)
- show_code_node (level, c);
-}
-
-static void
-show_iterator (gfc_namespace *ns)
-{
- for (gfc_symbol *sym = ns->proc_name; sym; sym = sym->tlink)
- {
- gfc_constructor *c;
- if (sym != ns->proc_name)
- fputc (',', dumpfile);
- fputs (sym->name, dumpfile);
- fputc ('=', dumpfile);
- c = gfc_constructor_first (sym->value->value.constructor);
- show_expr (c->expr);
- fputc (':', dumpfile);
- c = gfc_constructor_next (c);
- show_expr (c->expr);
- c = gfc_constructor_next (c);
- if (c)
- {
- fputc (':', dumpfile);
- show_expr (c->expr);
- }
- }
-}
-
-static void
-show_omp_namelist (int list_type, gfc_omp_namelist *n)
-{
- gfc_namespace *ns_iter = NULL, *ns_curr = gfc_current_ns;
- gfc_omp_namelist *n2 = n;
- for (; n; n = n->next)
- {
- gfc_current_ns = ns_curr;
- if (list_type == OMP_LIST_AFFINITY || list_type == OMP_LIST_DEPEND)
- {
- gfc_current_ns = n->u2.ns ? n->u2.ns : ns_curr;
- if (n->u2.ns != ns_iter)
- {
- if (n != n2)
- fputs (list_type == OMP_LIST_AFFINITY
- ? ") AFFINITY(" : ") DEPEND(", dumpfile);
- if (n->u2.ns)
- {
- fputs ("ITERATOR(", dumpfile);
- show_iterator (n->u2.ns);
- fputc (')', dumpfile);
- fputc (list_type == OMP_LIST_AFFINITY ? ':' : ',', dumpfile);
- }
- }
- ns_iter = n->u2.ns;
- }
- if (list_type == OMP_LIST_REDUCTION)
- switch (n->u.reduction_op)
- {
- case OMP_REDUCTION_PLUS:
- case OMP_REDUCTION_TIMES:
- case OMP_REDUCTION_MINUS:
- case OMP_REDUCTION_AND:
- case OMP_REDUCTION_OR:
- case OMP_REDUCTION_EQV:
- case OMP_REDUCTION_NEQV:
- fprintf (dumpfile, "%s:",
- gfc_op2string ((gfc_intrinsic_op) n->u.reduction_op));
- break;
- case OMP_REDUCTION_MAX: fputs ("max:", dumpfile); break;
- case OMP_REDUCTION_MIN: fputs ("min:", dumpfile); break;
- case OMP_REDUCTION_IAND: fputs ("iand:", dumpfile); break;
- case OMP_REDUCTION_IOR: fputs ("ior:", dumpfile); break;
- case OMP_REDUCTION_IEOR: fputs ("ieor:", dumpfile); break;
- case OMP_REDUCTION_USER:
- if (n->u2.udr)
- fprintf (dumpfile, "%s:", n->u2.udr->udr->name);
- break;
- default: break;
- }
- else if (list_type == OMP_LIST_DEPEND)
- switch (n->u.depend_op)
- {
- case OMP_DEPEND_IN: fputs ("in:", dumpfile); break;
- case OMP_DEPEND_OUT: fputs ("out:", dumpfile); break;
- case OMP_DEPEND_INOUT: fputs ("inout:", dumpfile); break;
- case OMP_DEPEND_DEPOBJ: fputs ("depobj:", dumpfile); break;
- case OMP_DEPEND_MUTEXINOUTSET:
- fputs ("mutexinoutset:", dumpfile);
- break;
- case OMP_DEPEND_SINK_FIRST:
- fputs ("sink:", dumpfile);
- while (1)
- {
- fprintf (dumpfile, "%s", n->sym->name);
- if (n->expr)
- {
- fputc ('+', dumpfile);
- show_expr (n->expr);
- }
- if (n->next == NULL)
- break;
- else if (n->next->u.depend_op != OMP_DEPEND_SINK)
- {
- fputs (") DEPEND(", dumpfile);
- break;
- }
- fputc (',', dumpfile);
- n = n->next;
- }
- continue;
- default: break;
- }
- else if (list_type == OMP_LIST_MAP)
- switch (n->u.map_op)
- {
- case OMP_MAP_ALLOC: fputs ("alloc:", dumpfile); break;
- case OMP_MAP_TO: fputs ("to:", dumpfile); break;
- case OMP_MAP_FROM: fputs ("from:", dumpfile); break;
- case OMP_MAP_TOFROM: fputs ("tofrom:", dumpfile); break;
- default: break;
- }
- else if (list_type == OMP_LIST_LINEAR)
- switch (n->u.linear_op)
- {
- case OMP_LINEAR_REF: fputs ("ref(", dumpfile); break;
- case OMP_LINEAR_VAL: fputs ("val(", dumpfile); break;
- case OMP_LINEAR_UVAL: fputs ("uval(", dumpfile); break;
- default: break;
- }
- fprintf (dumpfile, "%s", n->sym->name);
- if (list_type == OMP_LIST_LINEAR && n->u.linear_op != OMP_LINEAR_DEFAULT)
- fputc (')', dumpfile);
- if (n->expr)
- {
- fputc (':', dumpfile);
- show_expr (n->expr);
- }
- if (n->next)
- fputc (',', dumpfile);
- }
- gfc_current_ns = ns_curr;
-}
-
-
-/* Show OpenMP or OpenACC clauses. */
-
-static void
-show_omp_clauses (gfc_omp_clauses *omp_clauses)
-{
- int list_type, i;
-
- switch (omp_clauses->cancel)
- {
- case OMP_CANCEL_UNKNOWN:
- break;
- case OMP_CANCEL_PARALLEL:
- fputs (" PARALLEL", dumpfile);
- break;
- case OMP_CANCEL_SECTIONS:
- fputs (" SECTIONS", dumpfile);
- break;
- case OMP_CANCEL_DO:
- fputs (" DO", dumpfile);
- break;
- case OMP_CANCEL_TASKGROUP:
- fputs (" TASKGROUP", dumpfile);
- break;
- }
- if (omp_clauses->if_expr)
- {
- fputs (" IF(", dumpfile);
- show_expr (omp_clauses->if_expr);
- fputc (')', dumpfile);
- }
- if (omp_clauses->final_expr)
- {
- fputs (" FINAL(", dumpfile);
- show_expr (omp_clauses->final_expr);
- fputc (')', dumpfile);
- }
- if (omp_clauses->num_threads)
- {
- fputs (" NUM_THREADS(", dumpfile);
- show_expr (omp_clauses->num_threads);
- fputc (')', dumpfile);
- }
- if (omp_clauses->async)
- {
- fputs (" ASYNC", dumpfile);
- if (omp_clauses->async_expr)
- {
- fputc ('(', dumpfile);
- show_expr (omp_clauses->async_expr);
- fputc (')', dumpfile);
- }
- }
- if (omp_clauses->num_gangs_expr)
- {
- fputs (" NUM_GANGS(", dumpfile);
- show_expr (omp_clauses->num_gangs_expr);
- fputc (')', dumpfile);
- }
- if (omp_clauses->num_workers_expr)
- {
- fputs (" NUM_WORKERS(", dumpfile);
- show_expr (omp_clauses->num_workers_expr);
- fputc (')', dumpfile);
- }
- if (omp_clauses->vector_length_expr)
- {
- fputs (" VECTOR_LENGTH(", dumpfile);
- show_expr (omp_clauses->vector_length_expr);
- fputc (')', dumpfile);
- }
- if (omp_clauses->gang)
- {
- fputs (" GANG", dumpfile);
- if (omp_clauses->gang_num_expr || omp_clauses->gang_static_expr)
- {
- fputc ('(', dumpfile);
- if (omp_clauses->gang_num_expr)
- {
- fprintf (dumpfile, "num:");
- show_expr (omp_clauses->gang_num_expr);
- }
- if (omp_clauses->gang_num_expr && omp_clauses->gang_static)
- fputc (',', dumpfile);
- if (omp_clauses->gang_static)
- {
- fprintf (dumpfile, "static:");
- if (omp_clauses->gang_static_expr)
- show_expr (omp_clauses->gang_static_expr);
- else
- fputc ('*', dumpfile);
- }
- fputc (')', dumpfile);
- }
- }
- if (omp_clauses->worker)
- {
- fputs (" WORKER", dumpfile);
- if (omp_clauses->worker_expr)
- {
- fputc ('(', dumpfile);
- show_expr (omp_clauses->worker_expr);
- fputc (')', dumpfile);
- }
- }
- if (omp_clauses->vector)
- {
- fputs (" VECTOR", dumpfile);
- if (omp_clauses->vector_expr)
- {
- fputc ('(', dumpfile);
- show_expr (omp_clauses->vector_expr);
- fputc (')', dumpfile);
- }
- }
- if (omp_clauses->sched_kind != OMP_SCHED_NONE)
- {
- const char *type;
- switch (omp_clauses->sched_kind)
- {
- case OMP_SCHED_STATIC: type = "STATIC"; break;
- case OMP_SCHED_DYNAMIC: type = "DYNAMIC"; break;
- case OMP_SCHED_GUIDED: type = "GUIDED"; break;
- case OMP_SCHED_RUNTIME: type = "RUNTIME"; break;
- case OMP_SCHED_AUTO: type = "AUTO"; break;
- default:
- gcc_unreachable ();
- }
- fputs (" SCHEDULE (", dumpfile);
- if (omp_clauses->sched_simd)
- {
- if (omp_clauses->sched_monotonic
- || omp_clauses->sched_nonmonotonic)
- fputs ("SIMD, ", dumpfile);
- else
- fputs ("SIMD: ", dumpfile);
- }
- if (omp_clauses->sched_monotonic)
- fputs ("MONOTONIC: ", dumpfile);
- else if (omp_clauses->sched_nonmonotonic)
- fputs ("NONMONOTONIC: ", dumpfile);
- fputs (type, dumpfile);
- if (omp_clauses->chunk_size)
- {
- fputc (',', dumpfile);
- show_expr (omp_clauses->chunk_size);
- }
- fputc (')', dumpfile);
- }
- if (omp_clauses->default_sharing != OMP_DEFAULT_UNKNOWN)
- {
- const char *type;
- switch (omp_clauses->default_sharing)
- {
- case OMP_DEFAULT_NONE: type = "NONE"; break;
- case OMP_DEFAULT_PRIVATE: type = "PRIVATE"; break;
- case OMP_DEFAULT_SHARED: type = "SHARED"; break;
- case OMP_DEFAULT_FIRSTPRIVATE: type = "FIRSTPRIVATE"; break;
- case OMP_DEFAULT_PRESENT: type = "PRESENT"; break;
- default:
- gcc_unreachable ();
- }
- fprintf (dumpfile, " DEFAULT(%s)", type);
- }
- if (omp_clauses->tile_list)
- {
- gfc_expr_list *list;
- fputs (" TILE(", dumpfile);
- for (list = omp_clauses->tile_list; list; list = list->next)
- {
- show_expr (list->expr);
- if (list->next)
- fputs (", ", dumpfile);
- }
- fputc (')', dumpfile);
- }
- if (omp_clauses->wait_list)
- {
- gfc_expr_list *list;
- fputs (" WAIT(", dumpfile);
- for (list = omp_clauses->wait_list; list; list = list->next)
- {
- show_expr (list->expr);
- if (list->next)
- fputs (", ", dumpfile);
- }
- fputc (')', dumpfile);
- }
- if (omp_clauses->seq)
- fputs (" SEQ", dumpfile);
- if (omp_clauses->independent)
- fputs (" INDEPENDENT", dumpfile);
- if (omp_clauses->order_concurrent)
- {
- fputs (" ORDER(", dumpfile);
- if (omp_clauses->order_unconstrained)
- fputs ("UNCONSTRAINED:", dumpfile);
- else if (omp_clauses->order_reproducible)
- fputs ("REPRODUCIBLE:", dumpfile);
- fputs ("CONCURRENT)", dumpfile);
- }
- if (omp_clauses->ordered)
- {
- if (omp_clauses->orderedc)
- fprintf (dumpfile, " ORDERED(%d)", omp_clauses->orderedc);
- else
- fputs (" ORDERED", dumpfile);
- }
- if (omp_clauses->untied)
- fputs (" UNTIED", dumpfile);
- if (omp_clauses->mergeable)
- fputs (" MERGEABLE", dumpfile);
- if (omp_clauses->collapse)
- fprintf (dumpfile, " COLLAPSE(%d)", omp_clauses->collapse);
- for (list_type = 0; list_type < OMP_LIST_NUM; list_type++)
- if (omp_clauses->lists[list_type] != NULL
- && list_type != OMP_LIST_COPYPRIVATE)
- {
- const char *type = NULL;
- switch (list_type)
- {
- case OMP_LIST_PRIVATE: type = "PRIVATE"; break;
- case OMP_LIST_FIRSTPRIVATE: type = "FIRSTPRIVATE"; break;
- case OMP_LIST_LASTPRIVATE: type = "LASTPRIVATE"; break;
- case OMP_LIST_COPYPRIVATE: type = "COPYPRIVATE"; break;
- case OMP_LIST_SHARED: type = "SHARED"; break;
- case OMP_LIST_COPYIN: type = "COPYIN"; break;
- case OMP_LIST_UNIFORM: type = "UNIFORM"; break;
- case OMP_LIST_AFFINITY: type = "AFFINITY"; break;
- case OMP_LIST_ALIGNED: type = "ALIGNED"; break;
- case OMP_LIST_LINEAR: type = "LINEAR"; break;
- case OMP_LIST_DEPEND: type = "DEPEND"; break;
- case OMP_LIST_MAP: type = "MAP"; break;
- case OMP_LIST_TO: type = "TO"; break;
- case OMP_LIST_FROM: type = "FROM"; break;
- case OMP_LIST_REDUCTION:
- case OMP_LIST_REDUCTION_INSCAN:
- case OMP_LIST_REDUCTION_TASK: type = "REDUCTION"; break;
- case OMP_LIST_IN_REDUCTION: type = "IN_REDUCTION"; break;
- case OMP_LIST_TASK_REDUCTION: type = "TASK_REDUCTION"; break;
- case OMP_LIST_DEVICE_RESIDENT: type = "DEVICE_RESIDENT"; break;
- case OMP_LIST_LINK: type = "LINK"; break;
- case OMP_LIST_USE_DEVICE: type = "USE_DEVICE"; break;
- case OMP_LIST_CACHE: type = "CACHE"; break;
- case OMP_LIST_IS_DEVICE_PTR: type = "IS_DEVICE_PTR"; break;
- case OMP_LIST_USE_DEVICE_PTR: type = "USE_DEVICE_PTR"; break;
- case OMP_LIST_USE_DEVICE_ADDR: type = "USE_DEVICE_ADDR"; break;
- case OMP_LIST_NONTEMPORAL: type = "NONTEMPORAL"; break;
- case OMP_LIST_ALLOCATE: type = "ALLOCATE"; break;
- case OMP_LIST_SCAN_IN: type = "INCLUSIVE"; break;
- case OMP_LIST_SCAN_EX: type = "EXCLUSIVE"; break;
- default:
- gcc_unreachable ();
- }
- fprintf (dumpfile, " %s(", type);
- if (list_type == OMP_LIST_REDUCTION_INSCAN)
- fputs ("inscan, ", dumpfile);
- if (list_type == OMP_LIST_REDUCTION_TASK)
- fputs ("task, ", dumpfile);
- show_omp_namelist (list_type, omp_clauses->lists[list_type]);
- fputc (')', dumpfile);
- }
- if (omp_clauses->safelen_expr)
- {
- fputs (" SAFELEN(", dumpfile);
- show_expr (omp_clauses->safelen_expr);
- fputc (')', dumpfile);
- }
- if (omp_clauses->simdlen_expr)
- {
- fputs (" SIMDLEN(", dumpfile);
- show_expr (omp_clauses->simdlen_expr);
- fputc (')', dumpfile);
- }
- if (omp_clauses->inbranch)
- fputs (" INBRANCH", dumpfile);
- if (omp_clauses->notinbranch)
- fputs (" NOTINBRANCH", dumpfile);
- if (omp_clauses->proc_bind != OMP_PROC_BIND_UNKNOWN)
- {
- const char *type;
- switch (omp_clauses->proc_bind)
- {
- case OMP_PROC_BIND_PRIMARY: type = "PRIMARY"; break;
- case OMP_PROC_BIND_MASTER: type = "MASTER"; break;
- case OMP_PROC_BIND_SPREAD: type = "SPREAD"; break;
- case OMP_PROC_BIND_CLOSE: type = "CLOSE"; break;
- default:
- gcc_unreachable ();
- }
- fprintf (dumpfile, " PROC_BIND(%s)", type);
- }
- if (omp_clauses->bind != OMP_BIND_UNSET)
- {
- const char *type;
- switch (omp_clauses->bind)
- {
- case OMP_BIND_TEAMS: type = "TEAMS"; break;
- case OMP_BIND_PARALLEL: type = "PARALLEL"; break;
- case OMP_BIND_THREAD: type = "THREAD"; break;
- default:
- gcc_unreachable ();
- }
- fprintf (dumpfile, " BIND(%s)", type);
- }
- if (omp_clauses->num_teams_upper)
- {
- fputs (" NUM_TEAMS(", dumpfile);
- if (omp_clauses->num_teams_lower)
- {
- show_expr (omp_clauses->num_teams_lower);
- fputc (':', dumpfile);
- }
- show_expr (omp_clauses->num_teams_upper);
- fputc (')', dumpfile);
- }
- if (omp_clauses->device)
- {
- fputs (" DEVICE(", dumpfile);
- if (omp_clauses->ancestor)
- fputs ("ANCESTOR:", dumpfile);
- show_expr (omp_clauses->device);
- fputc (')', dumpfile);
- }
- if (omp_clauses->thread_limit)
- {
- fputs (" THREAD_LIMIT(", dumpfile);
- show_expr (omp_clauses->thread_limit);
- fputc (')', dumpfile);
- }
- if (omp_clauses->dist_sched_kind != OMP_SCHED_NONE)
- {
- fputs (" DIST_SCHEDULE (STATIC", dumpfile);
- if (omp_clauses->dist_chunk_size)
- {
- fputc (',', dumpfile);
- show_expr (omp_clauses->dist_chunk_size);
- }
- fputc (')', dumpfile);
- }
- for (int i = 0; i < OMP_DEFAULTMAP_CAT_NUM; i++)
- {
- const char *dfltmap;
- if (omp_clauses->defaultmap[i] == OMP_DEFAULTMAP_UNSET)
- continue;
- fputs (" DEFAULTMAP (", dumpfile);
- switch (omp_clauses->defaultmap[i])
- {
- case OMP_DEFAULTMAP_ALLOC: dfltmap = "ALLOC"; break;
- case OMP_DEFAULTMAP_TO: dfltmap = "TO"; break;
- case OMP_DEFAULTMAP_FROM: dfltmap = "FROM"; break;
- case OMP_DEFAULTMAP_TOFROM: dfltmap = "TOFROM"; break;
- case OMP_DEFAULTMAP_FIRSTPRIVATE: dfltmap = "FIRSTPRIVATE"; break;
- case OMP_DEFAULTMAP_NONE: dfltmap = "NONE"; break;
- case OMP_DEFAULTMAP_DEFAULT: dfltmap = "DEFAULT"; break;
- case OMP_DEFAULTMAP_PRESENT: dfltmap = "PRESENT"; break;
- default: gcc_unreachable ();
- }
- fputs (dfltmap, dumpfile);
- if (i != OMP_DEFAULTMAP_CAT_UNCATEGORIZED)
- {
- fputc (':', dumpfile);
- switch ((enum gfc_omp_defaultmap_category) i)
- {
- case OMP_DEFAULTMAP_CAT_SCALAR: dfltmap = "SCALAR"; break;
- case OMP_DEFAULTMAP_CAT_AGGREGATE: dfltmap = "AGGREGATE"; break;
- case OMP_DEFAULTMAP_CAT_ALLOCATABLE: dfltmap = "ALLOCATABLE"; break;
- case OMP_DEFAULTMAP_CAT_POINTER: dfltmap = "POINTER"; break;
- default: gcc_unreachable ();
- }
- fputs (dfltmap, dumpfile);
- }
- fputc (')', dumpfile);
- }
- if (omp_clauses->weak)
- fputs (" WEAK", dumpfile);
- if (omp_clauses->compare)
- fputs (" COMPARE", dumpfile);
- if (omp_clauses->nogroup)
- fputs (" NOGROUP", dumpfile);
- if (omp_clauses->simd)
- fputs (" SIMD", dumpfile);
- if (omp_clauses->threads)
- fputs (" THREADS", dumpfile);
- if (omp_clauses->grainsize)
- {
- fputs (" GRAINSIZE(", dumpfile);
- if (omp_clauses->grainsize_strict)
- fputs ("strict: ", dumpfile);
- show_expr (omp_clauses->grainsize);
- fputc (')', dumpfile);
- }
- if (omp_clauses->filter)
- {
- fputs (" FILTER(", dumpfile);
- show_expr (omp_clauses->filter);
- fputc (')', dumpfile);
- }
- if (omp_clauses->hint)
- {
- fputs (" HINT(", dumpfile);
- show_expr (omp_clauses->hint);
- fputc (')', dumpfile);
- }
- if (omp_clauses->num_tasks)
- {
- fputs (" NUM_TASKS(", dumpfile);
- if (omp_clauses->num_tasks_strict)
- fputs ("strict: ", dumpfile);
- show_expr (omp_clauses->num_tasks);
- fputc (')', dumpfile);
- }
- if (omp_clauses->priority)
- {
- fputs (" PRIORITY(", dumpfile);
- show_expr (omp_clauses->priority);
- fputc (')', dumpfile);
- }
- if (omp_clauses->detach)
- {
- fputs (" DETACH(", dumpfile);
- show_expr (omp_clauses->detach);
- fputc (')', dumpfile);
- }
- for (i = 0; i < OMP_IF_LAST; i++)
- if (omp_clauses->if_exprs[i])
- {
- static const char *ifs[] = {
- "CANCEL",
- "PARALLEL",
- "SIMD",
- "TASK",
- "TASKLOOP",
- "TARGET",
- "TARGET DATA",
- "TARGET UPDATE",
- "TARGET ENTER DATA",
- "TARGET EXIT DATA"
- };
- fputs (" IF(", dumpfile);
- fputs (ifs[i], dumpfile);
- fputs (": ", dumpfile);
- show_expr (omp_clauses->if_exprs[i]);
- fputc (')', dumpfile);
- }
- if (omp_clauses->destroy)
- fputs (" DESTROY", dumpfile);
- if (omp_clauses->depend_source)
- fputs (" DEPEND(source)", dumpfile);
- if (omp_clauses->capture)
- fputs (" CAPTURE", dumpfile);
- if (omp_clauses->depobj_update != OMP_DEPEND_UNSET)
- {
- const char *deptype;
- fputs (" UPDATE(", dumpfile);
- switch (omp_clauses->depobj_update)
- {
- case OMP_DEPEND_IN: deptype = "IN"; break;
- case OMP_DEPEND_OUT: deptype = "OUT"; break;
- case OMP_DEPEND_INOUT: deptype = "INOUT"; break;
- case OMP_DEPEND_MUTEXINOUTSET: deptype = "MUTEXINOUTSET"; break;
- default: gcc_unreachable ();
- }
- fputs (deptype, dumpfile);
- fputc (')', dumpfile);
- }
- if (omp_clauses->atomic_op != GFC_OMP_ATOMIC_UNSET)
- {
- const char *atomic_op;
- switch (omp_clauses->atomic_op & GFC_OMP_ATOMIC_MASK)
- {
- case GFC_OMP_ATOMIC_READ: atomic_op = "READ"; break;
- case GFC_OMP_ATOMIC_WRITE: atomic_op = "WRITE"; break;
- case GFC_OMP_ATOMIC_UPDATE: atomic_op = "UPDATE"; break;
- default: gcc_unreachable ();
- }
- fputc (' ', dumpfile);
- fputs (atomic_op, dumpfile);
- }
- if (omp_clauses->memorder != OMP_MEMORDER_UNSET)
- {
- const char *memorder;
- switch (omp_clauses->memorder)
- {
- case OMP_MEMORDER_ACQ_REL: memorder = "ACQ_REL"; break;
- case OMP_MEMORDER_ACQUIRE: memorder = "AQUIRE"; break;
- case OMP_MEMORDER_RELAXED: memorder = "RELAXED"; break;
- case OMP_MEMORDER_RELEASE: memorder = "RELEASE"; break;
- case OMP_MEMORDER_SEQ_CST: memorder = "SEQ_CST"; break;
- default: gcc_unreachable ();
- }
- fputc (' ', dumpfile);
- fputs (memorder, dumpfile);
- }
- if (omp_clauses->fail != OMP_MEMORDER_UNSET)
- {
- const char *memorder;
- switch (omp_clauses->fail)
- {
- case OMP_MEMORDER_ACQUIRE: memorder = "AQUIRE"; break;
- case OMP_MEMORDER_RELAXED: memorder = "RELAXED"; break;
- case OMP_MEMORDER_SEQ_CST: memorder = "SEQ_CST"; break;
- default: gcc_unreachable ();
- }
- fputs (" FAIL(", dumpfile);
- fputs (memorder, dumpfile);
- putc (')', dumpfile);
- }
- if (omp_clauses->at != OMP_AT_UNSET)
- {
- if (omp_clauses->at != OMP_AT_COMPILATION)
- fputs (" AT (COMPILATION)", dumpfile);
- else
- fputs (" AT (EXECUTION)", dumpfile);
- }
- if (omp_clauses->severity != OMP_SEVERITY_UNSET)
- {
- if (omp_clauses->severity != OMP_SEVERITY_FATAL)
- fputs (" SEVERITY (FATAL)", dumpfile);
- else
- fputs (" SEVERITY (WARNING)", dumpfile);
- }
- if (omp_clauses->message)
- {
- fputs (" ERROR (", dumpfile);
- show_expr (omp_clauses->message);
- fputc (')', dumpfile);
- }
-}
-
-/* Show a single OpenMP or OpenACC directive node and everything underneath it
- if necessary. */
-
-static void
-show_omp_node (int level, gfc_code *c)
-{
- gfc_omp_clauses *omp_clauses = NULL;
- const char *name = NULL;
- bool is_oacc = false;
-
- switch (c->op)
- {
- case EXEC_OACC_PARALLEL_LOOP:
- name = "PARALLEL LOOP"; is_oacc = true; break;
- case EXEC_OACC_PARALLEL: name = "PARALLEL"; is_oacc = true; break;
- case EXEC_OACC_KERNELS_LOOP: name = "KERNELS LOOP"; is_oacc = true; break;
- case EXEC_OACC_KERNELS: name = "KERNELS"; is_oacc = true; break;
- case EXEC_OACC_SERIAL_LOOP: name = "SERIAL LOOP"; is_oacc = true; break;
- case EXEC_OACC_SERIAL: name = "SERIAL"; is_oacc = true; break;
- case EXEC_OACC_DATA: name = "DATA"; is_oacc = true; break;
- case EXEC_OACC_HOST_DATA: name = "HOST_DATA"; is_oacc = true; break;
- case EXEC_OACC_LOOP: name = "LOOP"; is_oacc = true; break;
- case EXEC_OACC_UPDATE: name = "UPDATE"; is_oacc = true; break;
- case EXEC_OACC_WAIT: name = "WAIT"; is_oacc = true; break;
- case EXEC_OACC_CACHE: name = "CACHE"; is_oacc = true; break;
- case EXEC_OACC_ENTER_DATA: name = "ENTER DATA"; is_oacc = true; break;
- case EXEC_OACC_EXIT_DATA: name = "EXIT DATA"; is_oacc = true; break;
- case EXEC_OMP_ATOMIC: name = "ATOMIC"; break;
- case EXEC_OMP_BARRIER: name = "BARRIER"; break;
- case EXEC_OMP_CANCEL: name = "CANCEL"; break;
- case EXEC_OMP_CANCELLATION_POINT: name = "CANCELLATION POINT"; break;
- case EXEC_OMP_CRITICAL: name = "CRITICAL"; break;
- case EXEC_OMP_DISTRIBUTE: name = "DISTRIBUTE"; break;
- case EXEC_OMP_DISTRIBUTE_PARALLEL_DO:
- name = "DISTRIBUTE PARALLEL DO"; break;
- case EXEC_OMP_DISTRIBUTE_PARALLEL_DO_SIMD:
- name = "DISTRIBUTE PARALLEL DO SIMD"; break;
- case EXEC_OMP_DISTRIBUTE_SIMD: name = "DISTRIBUTE SIMD"; break;
- case EXEC_OMP_DO: name = "DO"; break;
- case EXEC_OMP_DO_SIMD: name = "DO SIMD"; break;
- case EXEC_OMP_ERROR: name = "ERROR"; break;
- case EXEC_OMP_FLUSH: name = "FLUSH"; break;
- case EXEC_OMP_LOOP: name = "LOOP"; break;
- case EXEC_OMP_MASKED: name = "MASKED"; break;
- case EXEC_OMP_MASKED_TASKLOOP: name = "MASKED TASKLOOP"; break;
- case EXEC_OMP_MASKED_TASKLOOP_SIMD: name = "MASKED TASKLOOP SIMD"; break;
- case EXEC_OMP_MASTER: name = "MASTER"; break;
- case EXEC_OMP_MASTER_TASKLOOP: name = "MASTER TASKLOOP"; break;
- case EXEC_OMP_MASTER_TASKLOOP_SIMD: name = "MASTER TASKLOOP SIMD"; break;
- case EXEC_OMP_ORDERED: name = "ORDERED"; break;
- case EXEC_OMP_DEPOBJ: name = "DEPOBJ"; break;
- case EXEC_OMP_PARALLEL: name = "PARALLEL"; break;
- case EXEC_OMP_PARALLEL_DO: name = "PARALLEL DO"; break;
- case EXEC_OMP_PARALLEL_DO_SIMD: name = "PARALLEL DO SIMD"; break;
- case EXEC_OMP_PARALLEL_LOOP: name = "PARALLEL LOOP"; break;
- case EXEC_OMP_PARALLEL_MASTER: name = "PARALLEL MASTER"; break;
- case EXEC_OMP_PARALLEL_MASKED: name = "PARALLEL MASK"; break;
- case EXEC_OMP_PARALLEL_MASKED_TASKLOOP:
- name = "PARALLEL MASK TASKLOOP"; break;
- case EXEC_OMP_PARALLEL_MASKED_TASKLOOP_SIMD:
- name = "PARALLEL MASK TASKLOOP SIMD"; break;
- case EXEC_OMP_PARALLEL_MASTER_TASKLOOP:
- name = "PARALLEL MASTER TASKLOOP"; break;
- case EXEC_OMP_PARALLEL_MASTER_TASKLOOP_SIMD:
- name = "PARALLEL MASTER TASKLOOP SIMD"; break;
- case EXEC_OMP_PARALLEL_SECTIONS: name = "PARALLEL SECTIONS"; break;
- case EXEC_OMP_PARALLEL_WORKSHARE: name = "PARALLEL WORKSHARE"; break;
- case EXEC_OMP_SCAN: name = "SCAN"; break;
- case EXEC_OMP_SCOPE: name = "SCOPE"; break;
- case EXEC_OMP_SECTIONS: name = "SECTIONS"; break;
- case EXEC_OMP_SIMD: name = "SIMD"; break;
- case EXEC_OMP_SINGLE: name = "SINGLE"; break;
- case EXEC_OMP_TARGET: name = "TARGET"; break;
- case EXEC_OMP_TARGET_DATA: name = "TARGET DATA"; break;
- case EXEC_OMP_TARGET_ENTER_DATA: name = "TARGET ENTER DATA"; break;
- case EXEC_OMP_TARGET_EXIT_DATA: name = "TARGET EXIT DATA"; break;
- case EXEC_OMP_TARGET_PARALLEL: name = "TARGET PARALLEL"; break;
- case EXEC_OMP_TARGET_PARALLEL_DO: name = "TARGET PARALLEL DO"; break;
- case EXEC_OMP_TARGET_PARALLEL_DO_SIMD:
- name = "TARGET_PARALLEL_DO_SIMD"; break;
- case EXEC_OMP_TARGET_PARALLEL_LOOP: name = "TARGET PARALLEL LOOP"; break;
- case EXEC_OMP_TARGET_SIMD: name = "TARGET SIMD"; break;
- case EXEC_OMP_TARGET_TEAMS: name = "TARGET TEAMS"; break;
- case EXEC_OMP_TARGET_TEAMS_DISTRIBUTE:
- name = "TARGET TEAMS DISTRIBUTE"; break;
- case EXEC_OMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_DO:
- name = "TARGET TEAMS DISTRIBUTE PARALLEL DO"; break;
- case EXEC_OMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_DO_SIMD:
- name = "TARGET TEAMS DISTRIBUTE PARALLEL DO SIMD"; break;
- case EXEC_OMP_TARGET_TEAMS_DISTRIBUTE_SIMD:
- name = "TARGET TEAMS DISTRIBUTE SIMD"; break;
- case EXEC_OMP_TARGET_TEAMS_LOOP: name = "TARGET TEAMS LOOP"; break;
- case EXEC_OMP_TARGET_UPDATE: name = "TARGET UPDATE"; break;
- case EXEC_OMP_TASK: name = "TASK"; break;
- case EXEC_OMP_TASKGROUP: name = "TASKGROUP"; break;
- case EXEC_OMP_TASKLOOP: name = "TASKLOOP"; break;
- case EXEC_OMP_TASKLOOP_SIMD: name = "TASKLOOP SIMD"; break;
- case EXEC_OMP_TASKWAIT: name = "TASKWAIT"; break;
- case EXEC_OMP_TASKYIELD: name = "TASKYIELD"; break;
- case EXEC_OMP_TEAMS: name = "TEAMS"; break;
- case EXEC_OMP_TEAMS_DISTRIBUTE: name = "TEAMS DISTRIBUTE"; break;
- case EXEC_OMP_TEAMS_DISTRIBUTE_PARALLEL_DO:
- name = "TEAMS DISTRIBUTE PARALLEL DO"; break;
- case EXEC_OMP_TEAMS_DISTRIBUTE_PARALLEL_DO_SIMD:
- name = "TEAMS DISTRIBUTE PARALLEL DO SIMD"; break;
- case EXEC_OMP_TEAMS_DISTRIBUTE_SIMD: name = "TEAMS DISTRIBUTE SIMD"; break;
- case EXEC_OMP_TEAMS_LOOP: name = "TEAMS LOOP"; break;
- case EXEC_OMP_WORKSHARE: name = "WORKSHARE"; break;
- default:
- gcc_unreachable ();
- }
- fprintf (dumpfile, "!$%s %s", is_oacc ? "ACC" : "OMP", name);
- switch (c->op)
- {
- case EXEC_OACC_PARALLEL_LOOP:
- case EXEC_OACC_PARALLEL:
- case EXEC_OACC_KERNELS_LOOP:
- case EXEC_OACC_KERNELS:
- case EXEC_OACC_SERIAL_LOOP:
- case EXEC_OACC_SERIAL:
- case EXEC_OACC_DATA:
- case EXEC_OACC_HOST_DATA:
- case EXEC_OACC_LOOP:
- case EXEC_OACC_UPDATE:
- case EXEC_OACC_WAIT:
- case EXEC_OACC_CACHE:
- case EXEC_OACC_ENTER_DATA:
- case EXEC_OACC_EXIT_DATA:
- case EXEC_OMP_CANCEL:
- case EXEC_OMP_CANCELLATION_POINT:
- case EXEC_OMP_DISTRIBUTE:
- case EXEC_OMP_DISTRIBUTE_PARALLEL_DO:
- case EXEC_OMP_DISTRIBUTE_PARALLEL_DO_SIMD:
- case EXEC_OMP_DISTRIBUTE_SIMD:
- case EXEC_OMP_DO:
- case EXEC_OMP_DO_SIMD:
- case EXEC_OMP_ERROR:
- case EXEC_OMP_LOOP:
- case EXEC_OMP_ORDERED:
- case EXEC_OMP_MASKED:
- case EXEC_OMP_PARALLEL:
- case EXEC_OMP_PARALLEL_DO:
- case EXEC_OMP_PARALLEL_DO_SIMD:
- case EXEC_OMP_PARALLEL_LOOP:
- case EXEC_OMP_PARALLEL_MASKED:
- case EXEC_OMP_PARALLEL_MASKED_TASKLOOP:
- case EXEC_OMP_PARALLEL_MASKED_TASKLOOP_SIMD:
- case EXEC_OMP_PARALLEL_MASTER:
- case EXEC_OMP_PARALLEL_MASTER_TASKLOOP:
- case EXEC_OMP_PARALLEL_MASTER_TASKLOOP_SIMD:
- case EXEC_OMP_PARALLEL_SECTIONS:
- case EXEC_OMP_PARALLEL_WORKSHARE:
- case EXEC_OMP_SCAN:
- case EXEC_OMP_SCOPE:
- case EXEC_OMP_SECTIONS:
- case EXEC_OMP_SIMD:
- case EXEC_OMP_SINGLE:
- case EXEC_OMP_TARGET:
- case EXEC_OMP_TARGET_DATA:
- case EXEC_OMP_TARGET_ENTER_DATA:
- case EXEC_OMP_TARGET_EXIT_DATA:
- case EXEC_OMP_TARGET_PARALLEL:
- case EXEC_OMP_TARGET_PARALLEL_DO:
- case EXEC_OMP_TARGET_PARALLEL_DO_SIMD:
- case EXEC_OMP_TARGET_PARALLEL_LOOP:
- case EXEC_OMP_TARGET_SIMD:
- case EXEC_OMP_TARGET_TEAMS:
- case EXEC_OMP_TARGET_TEAMS_DISTRIBUTE:
- case EXEC_OMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_DO:
- case EXEC_OMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_DO_SIMD:
- case EXEC_OMP_TARGET_TEAMS_DISTRIBUTE_SIMD:
- case EXEC_OMP_TARGET_TEAMS_LOOP:
- case EXEC_OMP_TARGET_UPDATE:
- case EXEC_OMP_TASK:
- case EXEC_OMP_TASKLOOP:
- case EXEC_OMP_TASKLOOP_SIMD:
- case EXEC_OMP_TEAMS:
- case EXEC_OMP_TEAMS_DISTRIBUTE:
- case EXEC_OMP_TEAMS_DISTRIBUTE_PARALLEL_DO:
- case EXEC_OMP_TEAMS_DISTRIBUTE_PARALLEL_DO_SIMD:
- case EXEC_OMP_TEAMS_DISTRIBUTE_SIMD:
- case EXEC_OMP_TEAMS_LOOP:
- case EXEC_OMP_WORKSHARE:
- omp_clauses = c->ext.omp_clauses;
- break;
- case EXEC_OMP_CRITICAL:
- omp_clauses = c->ext.omp_clauses;
- if (omp_clauses)
- fprintf (dumpfile, " (%s)", c->ext.omp_clauses->critical_name);
- break;
- case EXEC_OMP_DEPOBJ:
- omp_clauses = c->ext.omp_clauses;
- if (omp_clauses)
- {
- fputc ('(', dumpfile);
- show_expr (c->ext.omp_clauses->depobj);
- fputc (')', dumpfile);
- }
- break;
- case EXEC_OMP_FLUSH:
- if (c->ext.omp_namelist)
- {
- fputs (" (", dumpfile);
- show_omp_namelist (OMP_LIST_NUM, c->ext.omp_namelist);
- fputc (')', dumpfile);
- }
- return;
- case EXEC_OMP_BARRIER:
- case EXEC_OMP_TASKWAIT:
- case EXEC_OMP_TASKYIELD:
- return;
- case EXEC_OACC_ATOMIC:
- case EXEC_OMP_ATOMIC:
- omp_clauses = c->block ? c->block->ext.omp_clauses : NULL;
- break;
- default:
- break;
- }
- if (omp_clauses)
- show_omp_clauses (omp_clauses);
- fputc ('\n', dumpfile);
-
- /* OpenMP and OpenACC executable directives don't have associated blocks. */
- if (c->op == EXEC_OACC_CACHE || c->op == EXEC_OACC_UPDATE
- || c->op == EXEC_OACC_ENTER_DATA || c->op == EXEC_OACC_EXIT_DATA
- || c->op == EXEC_OMP_TARGET_UPDATE || c->op == EXEC_OMP_TARGET_ENTER_DATA
- || c->op == EXEC_OMP_TARGET_EXIT_DATA || c->op == EXEC_OMP_SCAN
- || c->op == EXEC_OMP_DEPOBJ || c->op == EXEC_OMP_ERROR
- || (c->op == EXEC_OMP_ORDERED && c->block == NULL))
- return;
- if (c->op == EXEC_OMP_SECTIONS || c->op == EXEC_OMP_PARALLEL_SECTIONS)
- {
- gfc_code *d = c->block;
- while (d != NULL)
- {
- show_code (level + 1, d->next);
- if (d->block == NULL)
- break;
- code_indent (level, 0);
- fputs ("!$OMP SECTION\n", dumpfile);
- d = d->block;
- }
- }
- else
- show_code (level + 1, c->block->next);
- if (c->op == EXEC_OMP_ATOMIC)
- return;
- fputc ('\n', dumpfile);
- code_indent (level, 0);
- fprintf (dumpfile, "!$%s END %s", is_oacc ? "ACC" : "OMP", name);
- if (omp_clauses != NULL)
- {
- if (omp_clauses->lists[OMP_LIST_COPYPRIVATE])
- {
- fputs (" COPYPRIVATE(", dumpfile);
- show_omp_namelist (OMP_LIST_COPYPRIVATE,
- omp_clauses->lists[OMP_LIST_COPYPRIVATE]);
- fputc (')', dumpfile);
- }
- else if (omp_clauses->nowait)
- fputs (" NOWAIT", dumpfile);
- }
- else if (c->op == EXEC_OMP_CRITICAL && c->ext.omp_clauses)
- fprintf (dumpfile, " (%s)", c->ext.omp_clauses->critical_name);
-}
-
-
-/* Show a single code node and everything underneath it if necessary. */
-
-static void
-show_code_node (int level, gfc_code *c)
-{
- gfc_forall_iterator *fa;
- gfc_open *open;
- gfc_case *cp;
- gfc_alloc *a;
- gfc_code *d;
- gfc_close *close;
- gfc_filepos *fp;
- gfc_inquire *i;
- gfc_dt *dt;
- gfc_namespace *ns;
-
- if (c->here)
- {
- fputc ('\n', dumpfile);
- code_indent (level, c->here);
- }
- else
- show_indent ();
-
- switch (c->op)
- {
- case EXEC_END_PROCEDURE:
- break;
-
- case EXEC_NOP:
- fputs ("NOP", dumpfile);
- break;
-
- case EXEC_CONTINUE:
- fputs ("CONTINUE", dumpfile);
- break;
-
- case EXEC_ENTRY:
- fprintf (dumpfile, "ENTRY %s", c->ext.entry->sym->name);
- break;
-
- case EXEC_INIT_ASSIGN:
- case EXEC_ASSIGN:
- fputs ("ASSIGN ", dumpfile);
- show_expr (c->expr1);
- fputc (' ', dumpfile);
- show_expr (c->expr2);
- break;
-
- case EXEC_LABEL_ASSIGN:
- fputs ("LABEL ASSIGN ", dumpfile);
- show_expr (c->expr1);
- fprintf (dumpfile, " %d", c->label1->value);
- break;
-
- case EXEC_POINTER_ASSIGN:
- fputs ("POINTER ASSIGN ", dumpfile);
- show_expr (c->expr1);
- fputc (' ', dumpfile);
- show_expr (c->expr2);
- break;
-
- case EXEC_GOTO:
- fputs ("GOTO ", dumpfile);
- if (c->label1)
- fprintf (dumpfile, "%d", c->label1->value);
- else
- {
- show_expr (c->expr1);
- d = c->block;
- if (d != NULL)
- {
- fputs (", (", dumpfile);
- for (; d; d = d ->block)
- {
- code_indent (level, d->label1);
- if (d->block != NULL)
- fputc (',', dumpfile);
- else
- fputc (')', dumpfile);
- }
- }
- }
- break;
-
- case EXEC_CALL:
- case EXEC_ASSIGN_CALL:
- if (c->resolved_sym)
- fprintf (dumpfile, "CALL %s ", c->resolved_sym->name);
- else if (c->symtree)
- fprintf (dumpfile, "CALL %s ", c->symtree->name);
- else
- fputs ("CALL ?? ", dumpfile);
-
- show_actual_arglist (c->ext.actual);
- break;
-
- case EXEC_COMPCALL:
- fputs ("CALL ", dumpfile);
- show_compcall (c->expr1);
- break;
-
- case EXEC_CALL_PPC:
- fputs ("CALL ", dumpfile);
- show_expr (c->expr1);
- show_actual_arglist (c->ext.actual);
- break;
-
- case EXEC_RETURN:
- fputs ("RETURN ", dumpfile);
- if (c->expr1)
- show_expr (c->expr1);
- break;
-
- case EXEC_PAUSE:
- fputs ("PAUSE ", dumpfile);
-
- if (c->expr1 != NULL)
- show_expr (c->expr1);
- else
- fprintf (dumpfile, "%d", c->ext.stop_code);
-
- break;
-
- case EXEC_ERROR_STOP:
- fputs ("ERROR ", dumpfile);
- /* Fall through. */
-
- case EXEC_STOP:
- fputs ("STOP ", dumpfile);
-
- if (c->expr1 != NULL)
- show_expr (c->expr1);
- else
- fprintf (dumpfile, "%d", c->ext.stop_code);
-
- break;
-
- case EXEC_FAIL_IMAGE:
- fputs ("FAIL IMAGE ", dumpfile);
- break;
-
- case EXEC_CHANGE_TEAM:
- fputs ("CHANGE TEAM", dumpfile);
- break;
-
- case EXEC_END_TEAM:
- fputs ("END TEAM", dumpfile);
- break;
-
- case EXEC_FORM_TEAM:
- fputs ("FORM TEAM", dumpfile);
- break;
-
- case EXEC_SYNC_TEAM:
- fputs ("SYNC TEAM", dumpfile);
- break;
-
- case EXEC_SYNC_ALL:
- fputs ("SYNC ALL ", dumpfile);
- if (c->expr2 != NULL)
- {
- fputs (" stat=", dumpfile);
- show_expr (c->expr2);
- }
- if (c->expr3 != NULL)
- {
- fputs (" errmsg=", dumpfile);
- show_expr (c->expr3);
- }
- break;
-
- case EXEC_SYNC_MEMORY:
- fputs ("SYNC MEMORY ", dumpfile);
- if (c->expr2 != NULL)
- {
- fputs (" stat=", dumpfile);
- show_expr (c->expr2);
- }
- if (c->expr3 != NULL)
- {
- fputs (" errmsg=", dumpfile);
- show_expr (c->expr3);
- }
- break;
-
- case EXEC_SYNC_IMAGES:
- fputs ("SYNC IMAGES image-set=", dumpfile);
- if (c->expr1 != NULL)
- show_expr (c->expr1);
- else
- fputs ("* ", dumpfile);
- if (c->expr2 != NULL)
- {
- fputs (" stat=", dumpfile);
- show_expr (c->expr2);
- }
- if (c->expr3 != NULL)
- {
- fputs (" errmsg=", dumpfile);
- show_expr (c->expr3);
- }
- break;
-
- case EXEC_EVENT_POST:
- case EXEC_EVENT_WAIT:
- if (c->op == EXEC_EVENT_POST)
- fputs ("EVENT POST ", dumpfile);
- else
- fputs ("EVENT WAIT ", dumpfile);
-
- fputs ("event-variable=", dumpfile);
- if (c->expr1 != NULL)
- show_expr (c->expr1);
- if (c->expr4 != NULL)
- {
- fputs (" until_count=", dumpfile);
- show_expr (c->expr4);
- }
- if (c->expr2 != NULL)
- {
- fputs (" stat=", dumpfile);
- show_expr (c->expr2);
- }
- if (c->expr3 != NULL)
- {
- fputs (" errmsg=", dumpfile);
- show_expr (c->expr3);
- }
- break;
-
- case EXEC_LOCK:
- case EXEC_UNLOCK:
- if (c->op == EXEC_LOCK)
- fputs ("LOCK ", dumpfile);
- else
- fputs ("UNLOCK ", dumpfile);
-
- fputs ("lock-variable=", dumpfile);
- if (c->expr1 != NULL)
- show_expr (c->expr1);
- if (c->expr4 != NULL)
- {
- fputs (" acquired_lock=", dumpfile);
- show_expr (c->expr4);
- }
- if (c->expr2 != NULL)
- {
- fputs (" stat=", dumpfile);
- show_expr (c->expr2);
- }
- if (c->expr3 != NULL)
- {
- fputs (" errmsg=", dumpfile);
- show_expr (c->expr3);
- }
- break;
-
- case EXEC_ARITHMETIC_IF:
- fputs ("IF ", dumpfile);
- show_expr (c->expr1);
- fprintf (dumpfile, " %d, %d, %d",
- c->label1->value, c->label2->value, c->label3->value);
- break;
-
- case EXEC_IF:
- d = c->block;
- fputs ("IF ", dumpfile);
- show_expr (d->expr1);
-
- ++show_level;
- show_code (level + 1, d->next);
- --show_level;
-
- d = d->block;
- for (; d; d = d->block)
- {
- fputs("\n", dumpfile);
- code_indent (level, 0);
- if (d->expr1 == NULL)
- fputs ("ELSE", dumpfile);
- else
- {
- fputs ("ELSE IF ", dumpfile);
- show_expr (d->expr1);
- }
-
- ++show_level;
- show_code (level + 1, d->next);
- --show_level;
- }
-
- if (c->label1)
- code_indent (level, c->label1);
- else
- show_indent ();
-
- fputs ("ENDIF", dumpfile);
- break;
-
- case EXEC_BLOCK:
- {
- const char* blocktype;
- gfc_namespace *saved_ns;
- gfc_association_list *alist;
-
- if (c->ext.block.assoc)
- blocktype = "ASSOCIATE";
- else
- blocktype = "BLOCK";
- show_indent ();
- fprintf (dumpfile, "%s ", blocktype);
- for (alist = c->ext.block.assoc; alist; alist = alist->next)
- {
- fprintf (dumpfile, " %s = ", alist->name);
- show_expr (alist->target);
- }
-
- ++show_level;
- ns = c->ext.block.ns;
- saved_ns = gfc_current_ns;
- gfc_current_ns = ns;
- gfc_traverse_symtree (ns->sym_root, show_symtree);
- gfc_current_ns = saved_ns;
- show_code (show_level, ns->code);
- --show_level;
- show_indent ();
- fprintf (dumpfile, "END %s ", blocktype);
- break;
- }
-
- case EXEC_END_BLOCK:
- /* Only come here when there is a label on an
- END ASSOCIATE construct. */
- break;
-
- case EXEC_SELECT:
- case EXEC_SELECT_TYPE:
- case EXEC_SELECT_RANK:
- d = c->block;
- fputc ('\n', dumpfile);
- code_indent (level, 0);
- if (c->op == EXEC_SELECT_RANK)
- fputs ("SELECT RANK ", dumpfile);
- else if (c->op == EXEC_SELECT_TYPE)
- fputs ("SELECT TYPE ", dumpfile);
- else
- fputs ("SELECT CASE ", dumpfile);
- show_expr (c->expr1);
-
- for (; d; d = d->block)
- {
- fputc ('\n', dumpfile);
- code_indent (level, 0);
- fputs ("CASE ", dumpfile);
- for (cp = d->ext.block.case_list; cp; cp = cp->next)
- {
- fputc ('(', dumpfile);
- show_expr (cp->low);
- fputc (' ', dumpfile);
- show_expr (cp->high);
- fputc (')', dumpfile);
- fputc (' ', dumpfile);
- }
-
- show_code (level + 1, d->next);
- fputc ('\n', dumpfile);
- }
-
- code_indent (level, c->label1);
- fputs ("END SELECT", dumpfile);
- break;
-
- case EXEC_WHERE:
- fputs ("WHERE ", dumpfile);
-
- d = c->block;
- show_expr (d->expr1);
- fputc ('\n', dumpfile);
-
- show_code (level + 1, d->next);
-
- for (d = d->block; d; d = d->block)
- {
- code_indent (level, 0);
- fputs ("ELSE WHERE ", dumpfile);
- show_expr (d->expr1);
- fputc ('\n', dumpfile);
- show_code (level + 1, d->next);
- }
-
- code_indent (level, 0);
- fputs ("END WHERE", dumpfile);
- break;
-
-
- case EXEC_FORALL:
- fputs ("FORALL ", dumpfile);
- for (fa = c->ext.forall_iterator; fa; fa = fa->next)
- {
- show_expr (fa->var);
- fputc (' ', dumpfile);
- show_expr (fa->start);
- fputc (':', dumpfile);
- show_expr (fa->end);
- fputc (':', dumpfile);
- show_expr (fa->stride);
-
- if (fa->next != NULL)
- fputc (',', dumpfile);
- }
-
- if (c->expr1 != NULL)
- {
- fputc (',', dumpfile);
- show_expr (c->expr1);
- }
- fputc ('\n', dumpfile);
-
- show_code (level + 1, c->block->next);
-
- code_indent (level, 0);
- fputs ("END FORALL", dumpfile);
- break;
-
- case EXEC_CRITICAL:
- fputs ("CRITICAL\n", dumpfile);
- show_code (level + 1, c->block->next);
- code_indent (level, 0);
- fputs ("END CRITICAL", dumpfile);
- break;
-
- case EXEC_DO:
- fputs ("DO ", dumpfile);
- if (c->label1)
- fprintf (dumpfile, " %-5d ", c->label1->value);
-
- show_expr (c->ext.iterator->var);
- fputc ('=', dumpfile);
- show_expr (c->ext.iterator->start);
- fputc (' ', dumpfile);
- show_expr (c->ext.iterator->end);
- fputc (' ', dumpfile);
- show_expr (c->ext.iterator->step);
-
- ++show_level;
- show_code (level + 1, c->block->next);
- --show_level;
-
- if (c->label1)
- break;
-
- show_indent ();
- fputs ("END DO", dumpfile);
- break;
-
- case EXEC_DO_CONCURRENT:
- fputs ("DO CONCURRENT ", dumpfile);
- for (fa = c->ext.forall_iterator; fa; fa = fa->next)
- {
- show_expr (fa->var);
- fputc (' ', dumpfile);
- show_expr (fa->start);
- fputc (':', dumpfile);
- show_expr (fa->end);
- fputc (':', dumpfile);
- show_expr (fa->stride);
-
- if (fa->next != NULL)
- fputc (',', dumpfile);
- }
- show_expr (c->expr1);
- ++show_level;
-
- show_code (level + 1, c->block->next);
- --show_level;
- code_indent (level, c->label1);
- show_indent ();
- fputs ("END DO", dumpfile);
- break;
-
- case EXEC_DO_WHILE:
- fputs ("DO WHILE ", dumpfile);
- show_expr (c->expr1);
- fputc ('\n', dumpfile);
-
- show_code (level + 1, c->block->next);
-
- code_indent (level, c->label1);
- fputs ("END DO", dumpfile);
- break;
-
- case EXEC_CYCLE:
- fputs ("CYCLE", dumpfile);
- if (c->symtree)
- fprintf (dumpfile, " %s", c->symtree->n.sym->name);
- break;
-
- case EXEC_EXIT:
- fputs ("EXIT", dumpfile);
- if (c->symtree)
- fprintf (dumpfile, " %s", c->symtree->n.sym->name);
- break;
-
- case EXEC_ALLOCATE:
- fputs ("ALLOCATE ", dumpfile);
- if (c->expr1)
- {
- fputs (" STAT=", dumpfile);
- show_expr (c->expr1);
- }
-
- if (c->expr2)
- {
- fputs (" ERRMSG=", dumpfile);
- show_expr (c->expr2);
- }
-
- if (c->expr3)
- {
- if (c->expr3->mold)
- fputs (" MOLD=", dumpfile);
- else
- fputs (" SOURCE=", dumpfile);
- show_expr (c->expr3);
- }
-
- for (a = c->ext.alloc.list; a; a = a->next)
- {
- fputc (' ', dumpfile);
- show_expr (a->expr);
- }
-
- break;
-
- case EXEC_DEALLOCATE:
- fputs ("DEALLOCATE ", dumpfile);
- if (c->expr1)
- {
- fputs (" STAT=", dumpfile);
- show_expr (c->expr1);
- }
-
- if (c->expr2)
- {
- fputs (" ERRMSG=", dumpfile);
- show_expr (c->expr2);
- }
-
- for (a = c->ext.alloc.list; a; a = a->next)
- {
- fputc (' ', dumpfile);
- show_expr (a->expr);
- }
-
- break;
-
- case EXEC_OPEN:
- fputs ("OPEN", dumpfile);
- open = c->ext.open;
-
- if (open->unit)
- {
- fputs (" UNIT=", dumpfile);
- show_expr (open->unit);
- }
- if (open->iomsg)
- {
- fputs (" IOMSG=", dumpfile);
- show_expr (open->iomsg);
- }
- if (open->iostat)
- {
- fputs (" IOSTAT=", dumpfile);
- show_expr (open->iostat);
- }
- if (open->file)
- {
- fputs (" FILE=", dumpfile);
- show_expr (open->file);
- }
- if (open->status)
- {
- fputs (" STATUS=", dumpfile);
- show_expr (open->status);
- }
- if (open->access)
- {
- fputs (" ACCESS=", dumpfile);
- show_expr (open->access);
- }
- if (open->form)
- {
- fputs (" FORM=", dumpfile);
- show_expr (open->form);
- }
- if (open->recl)
- {
- fputs (" RECL=", dumpfile);
- show_expr (open->recl);
- }
- if (open->blank)
- {
- fputs (" BLANK=", dumpfile);
- show_expr (open->blank);
- }
- if (open->position)
- {
- fputs (" POSITION=", dumpfile);
- show_expr (open->position);
- }
- if (open->action)
- {
- fputs (" ACTION=", dumpfile);
- show_expr (open->action);
- }
- if (open->delim)
- {
- fputs (" DELIM=", dumpfile);
- show_expr (open->delim);
- }
- if (open->pad)
- {
- fputs (" PAD=", dumpfile);
- show_expr (open->pad);
- }
- if (open->decimal)
- {
- fputs (" DECIMAL=", dumpfile);
- show_expr (open->decimal);
- }
- if (open->encoding)
- {
- fputs (" ENCODING=", dumpfile);
- show_expr (open->encoding);
- }
- if (open->round)
- {
- fputs (" ROUND=", dumpfile);
- show_expr (open->round);
- }
- if (open->sign)
- {
- fputs (" SIGN=", dumpfile);
- show_expr (open->sign);
- }
- if (open->convert)
- {
- fputs (" CONVERT=", dumpfile);
- show_expr (open->convert);
- }
- if (open->asynchronous)
- {
- fputs (" ASYNCHRONOUS=", dumpfile);
- show_expr (open->asynchronous);
- }
- if (open->err != NULL)
- fprintf (dumpfile, " ERR=%d", open->err->value);
-
- break;
-
- case EXEC_CLOSE:
- fputs ("CLOSE", dumpfile);
- close = c->ext.close;
-
- if (close->unit)
- {
- fputs (" UNIT=", dumpfile);
- show_expr (close->unit);
- }
- if (close->iomsg)
- {
- fputs (" IOMSG=", dumpfile);
- show_expr (close->iomsg);
- }
- if (close->iostat)
- {
- fputs (" IOSTAT=", dumpfile);
- show_expr (close->iostat);
- }
- if (close->status)
- {
- fputs (" STATUS=", dumpfile);
- show_expr (close->status);
- }
- if (close->err != NULL)
- fprintf (dumpfile, " ERR=%d", close->err->value);
- break;
-
- case EXEC_BACKSPACE:
- fputs ("BACKSPACE", dumpfile);
- goto show_filepos;
-
- case EXEC_ENDFILE:
- fputs ("ENDFILE", dumpfile);
- goto show_filepos;
-
- case EXEC_REWIND:
- fputs ("REWIND", dumpfile);
- goto show_filepos;
-
- case EXEC_FLUSH:
- fputs ("FLUSH", dumpfile);
-
- show_filepos:
- fp = c->ext.filepos;
-
- if (fp->unit)
- {
- fputs (" UNIT=", dumpfile);
- show_expr (fp->unit);
- }
- if (fp->iomsg)
- {
- fputs (" IOMSG=", dumpfile);
- show_expr (fp->iomsg);
- }
- if (fp->iostat)
- {
- fputs (" IOSTAT=", dumpfile);
- show_expr (fp->iostat);
- }
- if (fp->err != NULL)
- fprintf (dumpfile, " ERR=%d", fp->err->value);
- break;
-
- case EXEC_INQUIRE:
- fputs ("INQUIRE", dumpfile);
- i = c->ext.inquire;
-
- if (i->unit)
- {
- fputs (" UNIT=", dumpfile);
- show_expr (i->unit);
- }
- if (i->file)
- {
- fputs (" FILE=", dumpfile);
- show_expr (i->file);
- }
-
- if (i->iomsg)
- {
- fputs (" IOMSG=", dumpfile);
- show_expr (i->iomsg);
- }
- if (i->iostat)
- {
- fputs (" IOSTAT=", dumpfile);
- show_expr (i->iostat);
- }
- if (i->exist)
- {
- fputs (" EXIST=", dumpfile);
- show_expr (i->exist);
- }
- if (i->opened)
- {
- fputs (" OPENED=", dumpfile);
- show_expr (i->opened);
- }
- if (i->number)
- {
- fputs (" NUMBER=", dumpfile);
- show_expr (i->number);
- }
- if (i->named)
- {
- fputs (" NAMED=", dumpfile);
- show_expr (i->named);
- }
- if (i->name)
- {
- fputs (" NAME=", dumpfile);
- show_expr (i->name);
- }
- if (i->access)
- {
- fputs (" ACCESS=", dumpfile);
- show_expr (i->access);
- }
- if (i->sequential)
- {
- fputs (" SEQUENTIAL=", dumpfile);
- show_expr (i->sequential);
- }
-
- if (i->direct)
- {
- fputs (" DIRECT=", dumpfile);
- show_expr (i->direct);
- }
- if (i->form)
- {
- fputs (" FORM=", dumpfile);
- show_expr (i->form);
- }
- if (i->formatted)
- {
- fputs (" FORMATTED", dumpfile);
- show_expr (i->formatted);
- }
- if (i->unformatted)
- {
- fputs (" UNFORMATTED=", dumpfile);
- show_expr (i->unformatted);
- }
- if (i->recl)
- {
- fputs (" RECL=", dumpfile);
- show_expr (i->recl);
- }
- if (i->nextrec)
- {
- fputs (" NEXTREC=", dumpfile);
- show_expr (i->nextrec);
- }
- if (i->blank)
- {
- fputs (" BLANK=", dumpfile);
- show_expr (i->blank);
- }
- if (i->position)
- {
- fputs (" POSITION=", dumpfile);
- show_expr (i->position);
- }
- if (i->action)
- {
- fputs (" ACTION=", dumpfile);
- show_expr (i->action);
- }
- if (i->read)
- {
- fputs (" READ=", dumpfile);
- show_expr (i->read);
- }
- if (i->write)
- {
- fputs (" WRITE=", dumpfile);
- show_expr (i->write);
- }
- if (i->readwrite)
- {
- fputs (" READWRITE=", dumpfile);
- show_expr (i->readwrite);
- }
- if (i->delim)
- {
- fputs (" DELIM=", dumpfile);
- show_expr (i->delim);
- }
- if (i->pad)
- {
- fputs (" PAD=", dumpfile);
- show_expr (i->pad);
- }
- if (i->convert)
- {
- fputs (" CONVERT=", dumpfile);
- show_expr (i->convert);
- }
- if (i->asynchronous)
- {
- fputs (" ASYNCHRONOUS=", dumpfile);
- show_expr (i->asynchronous);
- }
- if (i->decimal)
- {
- fputs (" DECIMAL=", dumpfile);
- show_expr (i->decimal);
- }
- if (i->encoding)
- {
- fputs (" ENCODING=", dumpfile);
- show_expr (i->encoding);
- }
- if (i->pending)
- {
- fputs (" PENDING=", dumpfile);
- show_expr (i->pending);
- }
- if (i->round)
- {
- fputs (" ROUND=", dumpfile);
- show_expr (i->round);
- }
- if (i->sign)
- {
- fputs (" SIGN=", dumpfile);
- show_expr (i->sign);
- }
- if (i->size)
- {
- fputs (" SIZE=", dumpfile);
- show_expr (i->size);
- }
- if (i->id)
- {
- fputs (" ID=", dumpfile);
- show_expr (i->id);
- }
-
- if (i->err != NULL)
- fprintf (dumpfile, " ERR=%d", i->err->value);
- break;
-
- case EXEC_IOLENGTH:
- fputs ("IOLENGTH ", dumpfile);
- show_expr (c->expr1);
- goto show_dt_code;
- break;
-
- case EXEC_READ:
- fputs ("READ", dumpfile);
- goto show_dt;
-
- case EXEC_WRITE:
- fputs ("WRITE", dumpfile);
-
- show_dt:
- dt = c->ext.dt;
- if (dt->io_unit)
- {
- fputs (" UNIT=", dumpfile);
- show_expr (dt->io_unit);
- }
-
- if (dt->format_expr)
- {
- fputs (" FMT=", dumpfile);
- show_expr (dt->format_expr);
- }
-
- if (dt->format_label != NULL)
- fprintf (dumpfile, " FMT=%d", dt->format_label->value);
- if (dt->namelist)
- fprintf (dumpfile, " NML=%s", dt->namelist->name);
-
- if (dt->iomsg)
- {
- fputs (" IOMSG=", dumpfile);
- show_expr (dt->iomsg);
- }
- if (dt->iostat)
- {
- fputs (" IOSTAT=", dumpfile);
- show_expr (dt->iostat);
- }
- if (dt->size)
- {
- fputs (" SIZE=", dumpfile);
- show_expr (dt->size);
- }
- if (dt->rec)
- {
- fputs (" REC=", dumpfile);
- show_expr (dt->rec);
- }
- if (dt->advance)
- {
- fputs (" ADVANCE=", dumpfile);
- show_expr (dt->advance);
- }
- if (dt->id)
- {
- fputs (" ID=", dumpfile);
- show_expr (dt->id);
- }
- if (dt->pos)
- {
- fputs (" POS=", dumpfile);
- show_expr (dt->pos);
- }
- if (dt->asynchronous)
- {
- fputs (" ASYNCHRONOUS=", dumpfile);
- show_expr (dt->asynchronous);
- }
- if (dt->blank)
- {
- fputs (" BLANK=", dumpfile);
- show_expr (dt->blank);
- }
- if (dt->decimal)
- {
- fputs (" DECIMAL=", dumpfile);
- show_expr (dt->decimal);
- }
- if (dt->delim)
- {
- fputs (" DELIM=", dumpfile);
- show_expr (dt->delim);
- }
- if (dt->pad)
- {
- fputs (" PAD=", dumpfile);
- show_expr (dt->pad);
- }
- if (dt->round)
- {
- fputs (" ROUND=", dumpfile);
- show_expr (dt->round);
- }
- if (dt->sign)
- {
- fputs (" SIGN=", dumpfile);
- show_expr (dt->sign);
- }
-
- show_dt_code:
- for (c = c->block->next; c; c = c->next)
- show_code_node (level + (c->next != NULL), c);
- return;
-
- case EXEC_TRANSFER:
- fputs ("TRANSFER ", dumpfile);
- show_expr (c->expr1);
- break;
-
- case EXEC_DT_END:
- fputs ("DT_END", dumpfile);
- dt = c->ext.dt;
-
- if (dt->err != NULL)
- fprintf (dumpfile, " ERR=%d", dt->err->value);
- if (dt->end != NULL)
- fprintf (dumpfile, " END=%d", dt->end->value);
- if (dt->eor != NULL)
- fprintf (dumpfile, " EOR=%d", dt->eor->value);
- break;
-
- case EXEC_WAIT:
- fputs ("WAIT", dumpfile);
-
- if (c->ext.wait != NULL)
- {
- gfc_wait *wait = c->ext.wait;
- if (wait->unit)
- {
- fputs (" UNIT=", dumpfile);
- show_expr (wait->unit);
- }
- if (wait->iostat)
- {
- fputs (" IOSTAT=", dumpfile);
- show_expr (wait->iostat);
- }
- if (wait->iomsg)
- {
- fputs (" IOMSG=", dumpfile);
- show_expr (wait->iomsg);
- }
- if (wait->id)
- {
- fputs (" ID=", dumpfile);
- show_expr (wait->id);
- }
- if (wait->err)
- fprintf (dumpfile, " ERR=%d", wait->err->value);
- if (wait->end)
- fprintf (dumpfile, " END=%d", wait->end->value);
- if (wait->eor)
- fprintf (dumpfile, " EOR=%d", wait->eor->value);
- }
- break;
-
- case EXEC_OACC_PARALLEL_LOOP:
- case EXEC_OACC_PARALLEL:
- case EXEC_OACC_KERNELS_LOOP:
- case EXEC_OACC_KERNELS:
- case EXEC_OACC_SERIAL_LOOP:
- case EXEC_OACC_SERIAL:
- case EXEC_OACC_DATA:
- case EXEC_OACC_HOST_DATA:
- case EXEC_OACC_LOOP:
- case EXEC_OACC_UPDATE:
- case EXEC_OACC_WAIT:
- case EXEC_OACC_CACHE:
- case EXEC_OACC_ENTER_DATA:
- case EXEC_OACC_EXIT_DATA:
- case EXEC_OMP_ATOMIC:
- case EXEC_OMP_CANCEL:
- case EXEC_OMP_CANCELLATION_POINT:
- case EXEC_OMP_BARRIER:
- case EXEC_OMP_CRITICAL:
- case EXEC_OMP_DEPOBJ:
- case EXEC_OMP_DISTRIBUTE:
- case EXEC_OMP_DISTRIBUTE_PARALLEL_DO:
- case EXEC_OMP_DISTRIBUTE_PARALLEL_DO_SIMD:
- case EXEC_OMP_DISTRIBUTE_SIMD:
- case EXEC_OMP_DO:
- case EXEC_OMP_DO_SIMD:
- case EXEC_OMP_ERROR:
- case EXEC_OMP_FLUSH:
- case EXEC_OMP_LOOP:
- case EXEC_OMP_MASKED:
- case EXEC_OMP_MASKED_TASKLOOP:
- case EXEC_OMP_MASKED_TASKLOOP_SIMD:
- case EXEC_OMP_MASTER:
- case EXEC_OMP_MASTER_TASKLOOP:
- case EXEC_OMP_MASTER_TASKLOOP_SIMD:
- case EXEC_OMP_ORDERED:
- case EXEC_OMP_PARALLEL:
- case EXEC_OMP_PARALLEL_DO:
- case EXEC_OMP_PARALLEL_DO_SIMD:
- case EXEC_OMP_PARALLEL_LOOP:
- case EXEC_OMP_PARALLEL_MASKED:
- case EXEC_OMP_PARALLEL_MASKED_TASKLOOP:
- case EXEC_OMP_PARALLEL_MASKED_TASKLOOP_SIMD:
- case EXEC_OMP_PARALLEL_MASTER:
- case EXEC_OMP_PARALLEL_MASTER_TASKLOOP:
- case EXEC_OMP_PARALLEL_MASTER_TASKLOOP_SIMD:
- case EXEC_OMP_PARALLEL_SECTIONS:
- case EXEC_OMP_PARALLEL_WORKSHARE:
- case EXEC_OMP_SCAN:
- case EXEC_OMP_SCOPE:
- case EXEC_OMP_SECTIONS:
- case EXEC_OMP_SIMD:
- case EXEC_OMP_SINGLE:
- case EXEC_OMP_TARGET:
- case EXEC_OMP_TARGET_DATA:
- case EXEC_OMP_TARGET_ENTER_DATA:
- case EXEC_OMP_TARGET_EXIT_DATA:
- case EXEC_OMP_TARGET_PARALLEL:
- case EXEC_OMP_TARGET_PARALLEL_DO:
- case EXEC_OMP_TARGET_PARALLEL_DO_SIMD:
- case EXEC_OMP_TARGET_PARALLEL_LOOP:
- case EXEC_OMP_TARGET_SIMD:
- case EXEC_OMP_TARGET_TEAMS:
- case EXEC_OMP_TARGET_TEAMS_DISTRIBUTE:
- case EXEC_OMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_DO:
- case EXEC_OMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_DO_SIMD:
- case EXEC_OMP_TARGET_TEAMS_DISTRIBUTE_SIMD:
- case EXEC_OMP_TARGET_TEAMS_LOOP:
- case EXEC_OMP_TARGET_UPDATE:
- case EXEC_OMP_TASK:
- case EXEC_OMP_TASKGROUP:
- case EXEC_OMP_TASKLOOP:
- case EXEC_OMP_TASKLOOP_SIMD:
- case EXEC_OMP_TASKWAIT:
- case EXEC_OMP_TASKYIELD:
- case EXEC_OMP_TEAMS:
- case EXEC_OMP_TEAMS_DISTRIBUTE:
- case EXEC_OMP_TEAMS_DISTRIBUTE_PARALLEL_DO:
- case EXEC_OMP_TEAMS_DISTRIBUTE_PARALLEL_DO_SIMD:
- case EXEC_OMP_TEAMS_DISTRIBUTE_SIMD:
- case EXEC_OMP_TEAMS_LOOP:
- case EXEC_OMP_WORKSHARE:
- show_omp_node (level, c);
- break;
-
- default:
- gfc_internal_error ("show_code_node(): Bad statement code");
- }
-}
-
-
-/* Show an equivalence chain. */
-
-static void
-show_equiv (gfc_equiv *eq)
-{
- show_indent ();
- fputs ("Equivalence: ", dumpfile);
- while (eq)
- {
- show_expr (eq->expr);
- eq = eq->eq;
- if (eq)
- fputs (", ", dumpfile);
- }
-}
-
-
-/* Show a freakin' whole namespace. */
-
-static void
-show_namespace (gfc_namespace *ns)
-{
- gfc_interface *intr;
- gfc_namespace *save;
- int op;
- gfc_equiv *eq;
- int i;
-
- gcc_assert (ns);
- save = gfc_current_ns;
-
- show_indent ();
- fputs ("Namespace:", dumpfile);
-
- i = 0;
- do
- {
- int l = i;
- while (i < GFC_LETTERS - 1
- && gfc_compare_types (&ns->default_type[i+1],
- &ns->default_type[l]))
- i++;
-
- if (i > l)
- fprintf (dumpfile, " %c-%c: ", l+'A', i+'A');
- else
- fprintf (dumpfile, " %c: ", l+'A');
-
- show_typespec(&ns->default_type[l]);
- i++;
- } while (i < GFC_LETTERS);
-
- if (ns->proc_name != NULL)
- {
- show_indent ();
- fprintf (dumpfile, "procedure name = %s", ns->proc_name->name);
- }
-
- ++show_level;
- gfc_current_ns = ns;
- gfc_traverse_symtree (ns->common_root, show_common);
-
- gfc_traverse_symtree (ns->sym_root, show_symtree);
-
- for (op = GFC_INTRINSIC_BEGIN; op != GFC_INTRINSIC_END; op++)
- {
- /* User operator interfaces */
- intr = ns->op[op];
- if (intr == NULL)
- continue;
-
- show_indent ();
- fprintf (dumpfile, "Operator interfaces for %s:",
- gfc_op2string ((gfc_intrinsic_op) op));
-
- for (; intr; intr = intr->next)
- fprintf (dumpfile, " %s", intr->sym->name);
- }
-
- if (ns->uop_root != NULL)
- {
- show_indent ();
- fputs ("User operators:\n", dumpfile);
- gfc_traverse_user_op (ns, show_uop);
- }
-
- for (eq = ns->equiv; eq; eq = eq->next)
- show_equiv (eq);
-
- if (ns->oacc_declare)
- {
- struct gfc_oacc_declare *decl;
- /* Dump !$ACC DECLARE clauses. */
- for (decl = ns->oacc_declare; decl; decl = decl->next)
- {
- show_indent ();
- fprintf (dumpfile, "!$ACC DECLARE");
- show_omp_clauses (decl->clauses);
- }
- }
-
- fputc ('\n', dumpfile);
- show_indent ();
- fputs ("code:", dumpfile);
- show_code (show_level, ns->code);
- --show_level;
-
- for (ns = ns->contained; ns; ns = ns->sibling)
- {
- fputs ("\nCONTAINS\n", dumpfile);
- ++show_level;
- show_namespace (ns);
- --show_level;
- }
-
- fputc ('\n', dumpfile);
- gfc_current_ns = save;
-}
-
-
-/* Main function for dumping a parse tree. */
-
-void
-gfc_dump_parse_tree (gfc_namespace *ns, FILE *file)
-{
- dumpfile = file;
- show_namespace (ns);
-}
-
-/* This part writes BIND(C) definition for use in external C programs. */
-
-static void write_interop_decl (gfc_symbol *);
-static void write_proc (gfc_symbol *, bool);
-
-void
-gfc_dump_c_prototypes (gfc_namespace *ns, FILE *file)
-{
- int error_count;
- gfc_get_errors (NULL, &error_count);
- if (error_count != 0)
- return;
- dumpfile = file;
- gfc_traverse_ns (ns, write_interop_decl);
-}
-
-/* Loop over all global symbols, writing out their declrations. */
-
-void
-gfc_dump_external_c_prototypes (FILE * file)
-{
- dumpfile = file;
- fprintf (dumpfile,
- _("/* Prototypes for external procedures generated from %s\n"
- " by GNU Fortran %s%s.\n\n"
- " Use of this interface is discouraged, consider using the\n"
- " BIND(C) feature of standard Fortran instead. */\n\n"),
- gfc_source_file, pkgversion_string, version_string);
-
- for (gfc_current_ns = gfc_global_ns_list; gfc_current_ns;
- gfc_current_ns = gfc_current_ns->sibling)
- {
- gfc_symbol *sym = gfc_current_ns->proc_name;
-
- if (sym == NULL || sym->attr.flavor != FL_PROCEDURE
- || sym->attr.is_bind_c)
- continue;
-
- write_proc (sym, false);
- }
- return;
-}
-
-enum type_return { T_OK=0, T_WARN, T_ERROR };
-
-/* Return the name of the type for later output. Both function pointers and
- void pointers will be mapped to void *. */
-
-static enum type_return
-get_c_type_name (gfc_typespec *ts, gfc_array_spec *as, const char **pre,
- const char **type_name, bool *asterisk, const char **post,
- bool func_ret)
-{
- static char post_buffer[40];
- enum type_return ret;
- ret = T_ERROR;
-
- *pre = " ";
- *asterisk = false;
- *post = "";
- *type_name = "<error>";
- if (ts->type == BT_REAL || ts->type == BT_INTEGER || ts->type == BT_COMPLEX)
- {
- if (ts->is_c_interop && ts->interop_kind)
- ret = T_OK;
- else
- ret = T_WARN;
-
- for (int i = 0; i < ISOCBINDING_NUMBER; i++)
- {
- if (c_interop_kinds_table[i].f90_type == ts->type
- && c_interop_kinds_table[i].value == ts->kind)
- {
- *type_name = c_interop_kinds_table[i].name + 2;
- if (strcmp (*type_name, "signed_char") == 0)
- *type_name = "signed char";
- else if (strcmp (*type_name, "size_t") == 0)
- *type_name = "ssize_t";
- else if (strcmp (*type_name, "float_complex") == 0)
- *type_name = "__GFORTRAN_FLOAT_COMPLEX";
- else if (strcmp (*type_name, "double_complex") == 0)
- *type_name = "__GFORTRAN_DOUBLE_COMPLEX";
- else if (strcmp (*type_name, "long_double_complex") == 0)
- *type_name = "__GFORTRAN_LONG_DOUBLE_COMPLEX";
-
- break;
- }
- }
- }
- else if (ts->type == BT_LOGICAL)
- {
- if (ts->is_c_interop && ts->interop_kind)
- {
- *type_name = "_Bool";
- ret = T_OK;
- }
- else
- {
- /* Let's select an appropriate int, with a warning. */
- for (int i = 0; i < ISOCBINDING_NUMBER; i++)
- {
- if (c_interop_kinds_table[i].f90_type == BT_INTEGER
- && c_interop_kinds_table[i].value == ts->kind)
- {
- *type_name = c_interop_kinds_table[i].name + 2;
- ret = T_WARN;
- }
- }
- }
- }
- else if (ts->type == BT_CHARACTER)
- {
- if (ts->is_c_interop)
- {
- *type_name = "char";
- ret = T_OK;
- }
- else
- {
- if (ts->kind == gfc_default_character_kind)
- *type_name = "char";
- else
- /* Let's select an appropriate int. */
- for (int i = 0; i < ISOCBINDING_NUMBER; i++)
- {
- if (c_interop_kinds_table[i].f90_type == BT_INTEGER
- && c_interop_kinds_table[i].value == ts->kind)
- {
- *type_name = c_interop_kinds_table[i].name + 2;
- break;
- }
- }
- ret = T_WARN;
-
- }
- }
- else if (ts->type == BT_DERIVED)
- {
- if (ts->u.derived->from_intmod == INTMOD_ISO_C_BINDING)
- {
- if (strcmp (ts->u.derived->name, "c_ptr") == 0)
- *type_name = "void";
- else if (strcmp (ts->u.derived->name, "c_funptr") == 0)
- {
- *type_name = "int ";
- if (func_ret)
- {
- *pre = "(";
- *post = "())";
- }
- else
- {
- *pre = "(";
- *post = ")()";
- }
- }
- *asterisk = true;
- ret = T_OK;
- }
- else
- *type_name = ts->u.derived->name;
-
- ret = T_OK;
- }
-
- if (ret != T_ERROR && as)
- {
- mpz_t sz;
- bool size_ok;
- size_ok = spec_size (as, &sz);
- gcc_assert (size_ok == true);
- gmp_snprintf (post_buffer, sizeof(post_buffer), "[%Zd]", sz);
- *post = post_buffer;
- mpz_clear (sz);
- }
- return ret;
-}
-
-/* Write out a declaration. */
-static void
-write_decl (gfc_typespec *ts, gfc_array_spec *as, const char *sym_name,
- bool func_ret, locus *where, bool bind_c)
-{
- const char *pre, *type_name, *post;
- bool asterisk;
- enum type_return rok;
-
- rok = get_c_type_name (ts, as, &pre, &type_name, &asterisk, &post, func_ret);
- if (rok == T_ERROR)
- {
- gfc_error_now ("Cannot convert %qs to interoperable type at %L",
- gfc_typename (ts), where);
- fprintf (dumpfile, "/* Cannot convert '%s' to interoperable type */",
- gfc_typename (ts));
- return;
- }
- fputs (type_name, dumpfile);
- fputs (pre, dumpfile);
- if (asterisk)
- fputs ("*", dumpfile);
-
- fputs (sym_name, dumpfile);
- fputs (post, dumpfile);
-
- if (rok == T_WARN && bind_c)
- fprintf (dumpfile," /* WARNING: Converting '%s' to interoperable type */",
- gfc_typename (ts));
-}
-
-/* Write out an interoperable type. It will be written as a typedef
- for a struct. */
-
-static void
-write_type (gfc_symbol *sym)
-{
- gfc_component *c;
-
- fprintf (dumpfile, "typedef struct %s {\n", sym->name);
- for (c = sym->components; c; c = c->next)
- {
- fputs (" ", dumpfile);
- write_decl (&(c->ts), c->as, c->name, false, &sym->declared_at, true);
- fputs (";\n", dumpfile);
- }
-
- fprintf (dumpfile, "} %s;\n", sym->name);
-}
-
-/* Write out a variable. */
-
-static void
-write_variable (gfc_symbol *sym)
-{
- const char *sym_name;
-
- gcc_assert (sym->attr.flavor == FL_VARIABLE);
-
- if (sym->binding_label)
- sym_name = sym->binding_label;
- else
- sym_name = sym->name;
-
- fputs ("extern ", dumpfile);
- write_decl (&(sym->ts), sym->as, sym_name, false, &sym->declared_at, true);
- fputs (";\n", dumpfile);
-}
-
-
-/* Write out a procedure, including its arguments. */
-static void
-write_proc (gfc_symbol *sym, bool bind_c)
-{
- const char *pre, *type_name, *post;
- bool asterisk;
- enum type_return rok;
- gfc_formal_arglist *f;
- const char *sym_name;
- const char *intent_in;
- bool external_character;
-
- external_character = sym->ts.type == BT_CHARACTER && !bind_c;
-
- if (sym->binding_label)
- sym_name = sym->binding_label;
- else
- sym_name = sym->name;
-
- if (sym->ts.type == BT_UNKNOWN || external_character)
- {
- fprintf (dumpfile, "void ");
- fputs (sym_name, dumpfile);
- }
- else
- write_decl (&(sym->ts), sym->as, sym_name, true, &sym->declared_at, bind_c);
-
- if (!bind_c)
- fputs ("_", dumpfile);
-
- fputs (" (", dumpfile);
- if (external_character)
- {
- fprintf (dumpfile, "char *result_%s, size_t result_%s_len",
- sym_name, sym_name);
- if (sym->formal)
- fputs (", ", dumpfile);
- }
-
- for (f = sym->formal; f; f = f->next)
- {
- gfc_symbol *s;
- s = f->sym;
- rok = get_c_type_name (&(s->ts), NULL, &pre, &type_name, &asterisk,
- &post, false);
- if (rok == T_ERROR)
- {
- gfc_error_now ("Cannot convert %qs to interoperable type at %L",
- gfc_typename (&s->ts), &s->declared_at);
- fprintf (dumpfile, "/* Cannot convert '%s' to interoperable type */",
- gfc_typename (&s->ts));
- return;
- }
-
- if (!s->attr.value)
- asterisk = true;
-
- if (s->attr.intent == INTENT_IN && !s->attr.value)
- intent_in = "const ";
- else
- intent_in = "";
-
- fputs (intent_in, dumpfile);
- fputs (type_name, dumpfile);
- fputs (pre, dumpfile);
- if (asterisk)
- fputs ("*", dumpfile);
-
- fputs (s->name, dumpfile);
- fputs (post, dumpfile);
- if (bind_c && rok == T_WARN)
- fputs(" /* WARNING: non-interoperable KIND */ ", dumpfile);
-
- if (f->next)
- fputs(", ", dumpfile);
- }
- if (!bind_c)
- for (f = sym->formal; f; f = f->next)
- if (f->sym->ts.type == BT_CHARACTER)
- fprintf (dumpfile, ", size_t %s_len", f->sym->name);
-
- fputs (");\n", dumpfile);
-}
-
-
-/* Write a C-interoperable declaration as a C prototype or extern
- declaration. */
-
-static void
-write_interop_decl (gfc_symbol *sym)
-{
- /* Only dump bind(c) entities. */
- if (!sym->attr.is_bind_c)
- return;
-
- /* Don't dump our iso c module. */
- if (sym->from_intmod == INTMOD_ISO_C_BINDING)
- return;
-
- if (sym->attr.flavor == FL_VARIABLE)
- write_variable (sym);
- else if (sym->attr.flavor == FL_DERIVED)
- write_type (sym);
- else if (sym->attr.flavor == FL_PROCEDURE)
- write_proc (sym, true);
-}
-
-/* This section deals with dumping the global symbol tree. */
-
-/* Callback function for printing out the contents of the tree. */
-
-static void
-show_global_symbol (gfc_gsymbol *gsym, void *f_data)
-{
- FILE *out;
- out = (FILE *) f_data;
-
- if (gsym->name)
- fprintf (out, "name=%s", gsym->name);
-
- if (gsym->sym_name)
- fprintf (out, ", sym_name=%s", gsym->sym_name);
-
- if (gsym->mod_name)
- fprintf (out, ", mod_name=%s", gsym->mod_name);
-
- if (gsym->binding_label)
- fprintf (out, ", binding_label=%s", gsym->binding_label);
-
- fputc ('\n', out);
-}
-
-/* Show all global symbols. */
-
-void
-gfc_dump_global_symbols (FILE *f)
-{
- if (gfc_gsym_root == NULL)
- fprintf (f, "empty\n");
- else
- gfc_traverse_gsymbol (gfc_gsym_root, show_global_symbol, (void *) f);
-}
-
-/* Show an array ref. */
-
-void debug (gfc_array_ref *ar)
-{
- FILE *tmp = dumpfile;
- dumpfile = stderr;
- show_array_ref (ar);
- fputc ('\n', dumpfile);
- dumpfile = tmp;
-}