aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/cxx-pretty-print.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/cp/cxx-pretty-print.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/cp/cxx-pretty-print.c')
-rw-r--r--gcc/cp/cxx-pretty-print.c2995
1 files changed, 0 insertions, 2995 deletions
diff --git a/gcc/cp/cxx-pretty-print.c b/gcc/cp/cxx-pretty-print.c
deleted file mode 100644
index 4f9a090..0000000
--- a/gcc/cp/cxx-pretty-print.c
+++ /dev/null
@@ -1,2995 +0,0 @@
-/* Implementation of subroutines for the GNU C++ pretty-printer.
- Copyright (C) 2003-2022 Free Software Foundation, Inc.
- Contributed by Gabriel Dos Reis <gdr@integrable-solutions.net>
-
-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/>. */
-
-#include "config.h"
-#include "system.h"
-#include "coretypes.h"
-#include "cp-tree.h"
-#include "cxx-pretty-print.h"
-#include "tree-pretty-print.h"
-
-static void pp_cxx_unqualified_id (cxx_pretty_printer *, tree);
-static void pp_cxx_nested_name_specifier (cxx_pretty_printer *, tree);
-static void pp_cxx_qualified_id (cxx_pretty_printer *, tree);
-static void pp_cxx_template_argument_list (cxx_pretty_printer *, tree);
-static void pp_cxx_type_specifier_seq (cxx_pretty_printer *, tree);
-static void pp_cxx_ptr_operator (cxx_pretty_printer *, tree);
-static void pp_cxx_parameter_declaration_clause (cxx_pretty_printer *, tree);
-static void pp_cxx_template_parameter (cxx_pretty_printer *, tree);
-static void pp_cxx_cast_expression (cxx_pretty_printer *, tree);
-static void pp_cxx_typeid_expression (cxx_pretty_printer *, tree);
-static void pp_cxx_unary_left_fold_expression (cxx_pretty_printer *, tree);
-static void pp_cxx_unary_right_fold_expression (cxx_pretty_printer *, tree);
-static void pp_cxx_binary_fold_expression (cxx_pretty_printer *, tree);
-static void pp_cxx_concept_definition (cxx_pretty_printer *, tree);
-
-
-static inline void
-pp_cxx_nonconsecutive_character (cxx_pretty_printer *pp, int c)
-{
- const char *p = pp_last_position_in_text (pp);
-
- if (p != NULL && *p == c)
- pp_cxx_whitespace (pp);
- pp_character (pp, c);
- pp->padding = pp_none;
-}
-
-#define pp_cxx_expression_list(PP, T) \
- pp_c_expression_list (PP, T)
-#define pp_cxx_space_for_pointer_operator(PP, T) \
- pp_c_space_for_pointer_operator (PP, T)
-#define pp_cxx_init_declarator(PP, T) \
- pp_c_init_declarator (PP, T)
-#define pp_cxx_call_argument_list(PP, T) \
- pp_c_call_argument_list (PP, T)
-
-void
-pp_cxx_colon_colon (cxx_pretty_printer *pp)
-{
- pp_colon_colon (pp);
- pp->padding = pp_none;
-}
-
-void
-pp_cxx_begin_template_argument_list (cxx_pretty_printer *pp)
-{
- pp_cxx_nonconsecutive_character (pp, '<');
-}
-
-void
-pp_cxx_end_template_argument_list (cxx_pretty_printer *pp)
-{
- pp_cxx_nonconsecutive_character (pp, '>');
-}
-
-void
-pp_cxx_separate_with (cxx_pretty_printer *pp, int c)
-{
- pp_separate_with (pp, c);
- pp->padding = pp_none;
-}
-
-/* Expressions. */
-
-/* conversion-function-id:
- operator conversion-type-id
-
- conversion-type-id:
- type-specifier-seq conversion-declarator(opt)
-
- conversion-declarator:
- ptr-operator conversion-declarator(opt) */
-
-static inline void
-pp_cxx_conversion_function_id (cxx_pretty_printer *pp, tree t)
-{
- pp_cxx_ws_string (pp, "operator");
- pp_cxx_type_specifier_seq (pp, TREE_TYPE (t));
-}
-
-static inline void
-pp_cxx_template_id (cxx_pretty_printer *pp, tree t)
-{
- pp_cxx_unqualified_id (pp, TREE_OPERAND (t, 0));
- pp_cxx_begin_template_argument_list (pp);
- pp_cxx_template_argument_list (pp, TREE_OPERAND (t, 1));
- pp_cxx_end_template_argument_list (pp);
-}
-
-/* Prints the unqualified part of the id-expression T.
-
- unqualified-id:
- identifier
- operator-function-id
- conversion-function-id
- ~ class-name
- template-id */
-
-static void
-pp_cxx_unqualified_id (cxx_pretty_printer *pp, tree t)
-{
- enum tree_code code = TREE_CODE (t);
- switch (code)
- {
- case RESULT_DECL:
- pp->translate_string ("<return-value>");
- break;
-
- case OVERLOAD:
- t = OVL_FIRST (t);
- /* FALLTHRU */
- case VAR_DECL:
- case PARM_DECL:
- case CONST_DECL:
- case TYPE_DECL:
- case FUNCTION_DECL:
- case NAMESPACE_DECL:
- case FIELD_DECL:
- case LABEL_DECL:
- case USING_DECL:
- case TEMPLATE_DECL:
- t = DECL_NAME (t);
- /* FALLTHRU */
-
- case IDENTIFIER_NODE:
- if (t == NULL)
- pp->translate_string ("<unnamed>");
- else if (IDENTIFIER_CONV_OP_P (t))
- pp_cxx_conversion_function_id (pp, t);
- else
- pp_cxx_tree_identifier (pp, t);
- break;
-
- case TEMPLATE_ID_EXPR:
- pp_cxx_template_id (pp, t);
- break;
-
- case BASELINK:
- pp_cxx_unqualified_id (pp, BASELINK_FUNCTIONS (t));
- break;
-
- case RECORD_TYPE:
- case UNION_TYPE:
- case ENUMERAL_TYPE:
- case TYPENAME_TYPE:
- case UNBOUND_CLASS_TEMPLATE:
- pp_cxx_unqualified_id (pp, TYPE_NAME (t));
- if (tree ti = TYPE_TEMPLATE_INFO_MAYBE_ALIAS (t))
- if (PRIMARY_TEMPLATE_P (TI_TEMPLATE (ti)))
- {
- pp_cxx_begin_template_argument_list (pp);
- tree args = INNERMOST_TEMPLATE_ARGS (TI_ARGS (ti));
- pp_cxx_template_argument_list (pp, args);
- pp_cxx_end_template_argument_list (pp);
- }
- break;
-
- case BIT_NOT_EXPR:
- pp_cxx_complement (pp);
- pp_cxx_unqualified_id (pp, TREE_OPERAND (t, 0));
- break;
-
- case TEMPLATE_TYPE_PARM:
- case TEMPLATE_TEMPLATE_PARM:
- if (template_placeholder_p (t))
- {
- t = TREE_TYPE (CLASS_PLACEHOLDER_TEMPLATE (t));
- pp_cxx_unqualified_id (pp, TYPE_IDENTIFIER (t));
- pp_string (pp, "<...auto...>");
- }
- else if (TYPE_IDENTIFIER (t))
- pp_cxx_unqualified_id (pp, TYPE_IDENTIFIER (t));
- else
- pp_cxx_canonical_template_parameter (pp, t);
- break;
-
- case TEMPLATE_PARM_INDEX:
- pp_cxx_unqualified_id (pp, TEMPLATE_PARM_DECL (t));
- break;
-
- case BOUND_TEMPLATE_TEMPLATE_PARM:
- pp_cxx_cv_qualifier_seq (pp, t);
- pp_cxx_unqualified_id (pp, TYPE_IDENTIFIER (t));
- pp_cxx_begin_template_argument_list (pp);
- pp_cxx_template_argument_list (pp, TYPE_TI_ARGS (t));
- pp_cxx_end_template_argument_list (pp);
- break;
-
- default:
- pp_unsupported_tree (pp, t);
- break;
- }
-}
-
-/* Pretty-print out the token sequence ":: template" in template codes
- where it is needed to "inline declare" the (following) member as
- a template. This situation arises when SCOPE of T is dependent
- on template parameters. */
-
-static inline void
-pp_cxx_template_keyword_if_needed (cxx_pretty_printer *pp, tree scope, tree t)
-{
- if (TREE_CODE (t) == TEMPLATE_ID_EXPR
- && TYPE_P (scope) && dependent_type_p (scope))
- pp_cxx_ws_string (pp, "template");
-}
-
-/* nested-name-specifier:
- class-or-namespace-name :: nested-name-specifier(opt)
- class-or-namespace-name :: template nested-name-specifier */
-
-static void
-pp_cxx_nested_name_specifier (cxx_pretty_printer *pp, tree t)
-{
- /* FIXME: When diagnosing references to concepts (especially as types?)
- we end up adding too many '::' to the name. This is partially due
- to the fact that pp->enclosing_namespace is null. */
- if (t == global_namespace)
- {
- pp_cxx_colon_colon (pp);
- }
- else if (!SCOPE_FILE_SCOPE_P (t) && t != pp->enclosing_scope)
- {
- tree scope = get_containing_scope (t);
- pp_cxx_nested_name_specifier (pp, scope);
- pp_cxx_template_keyword_if_needed (pp, scope, t);
- pp_cxx_unqualified_id (pp, t);
- pp_cxx_colon_colon (pp);
- }
-}
-
-/* qualified-id:
- nested-name-specifier template(opt) unqualified-id */
-
-static void
-pp_cxx_qualified_id (cxx_pretty_printer *pp, tree t)
-{
- switch (TREE_CODE (t))
- {
- /* A pointer-to-member is always qualified. */
- case PTRMEM_CST:
- pp_cxx_nested_name_specifier (pp, PTRMEM_CST_CLASS (t));
- pp_cxx_unqualified_id (pp, PTRMEM_CST_MEMBER (t));
- break;
-
- /* In Standard C++, functions cannot possibly be used as
- nested-name-specifiers. However, there are situations where
- is "makes sense" to output the surrounding function name for the
- purpose of emphasizing on the scope kind. Just printing the
- function name might not be sufficient as it may be overloaded; so,
- we decorate the function with its signature too.
- FIXME: This is probably the wrong pretty-printing for conversion
- functions and some function templates. */
- case OVERLOAD:
- t = OVL_FIRST (t);
- /* FALLTHRU */
- case FUNCTION_DECL:
- if (DECL_FUNCTION_MEMBER_P (t))
- pp_cxx_nested_name_specifier (pp, DECL_CONTEXT (t));
- pp_cxx_unqualified_id
- (pp, DECL_CONSTRUCTOR_P (t) ? DECL_CONTEXT (t) : t);
- pp_cxx_parameter_declaration_clause (pp, TREE_TYPE (t));
- break;
-
- case OFFSET_REF:
- case SCOPE_REF:
- pp_cxx_nested_name_specifier (pp, TREE_OPERAND (t, 0));
- pp_cxx_unqualified_id (pp, TREE_OPERAND (t, 1));
- break;
-
- default:
- {
- tree scope = get_containing_scope (t);
- if (scope != pp->enclosing_scope)
- {
- pp_cxx_nested_name_specifier (pp, scope);
- pp_cxx_template_keyword_if_needed (pp, scope, t);
- }
- pp_cxx_unqualified_id (pp, t);
- }
- break;
- }
-}
-
-/* Given a value e of ENUMERAL_TYPE:
- Print out the first ENUMERATOR id with value e, if one is found,
- (including nested names but excluding the enum name if unscoped)
- else print out the value as a C-style cast (type-id)value. */
-
-static void
-pp_cxx_enumeration_constant (cxx_pretty_printer *pp, tree e)
-{
- tree type = TREE_TYPE (e);
- tree value = NULL_TREE;
-
- /* Find the name of this constant. */
- if ((pp->flags & pp_c_flag_gnu_v3) == 0)
- for (value = TYPE_VALUES (type); value != NULL_TREE;
- value = TREE_CHAIN (value))
- if (tree_int_cst_equal (DECL_INITIAL (TREE_VALUE (value)), e))
- break;
-
- if (value != NULL_TREE)
- {
- if (!ENUM_IS_SCOPED (type))
- type = get_containing_scope (type);
- pp_cxx_nested_name_specifier (pp, type);
- pp->id_expression (TREE_PURPOSE (value));
- }
- else
- {
- /* Value must have been cast. */
- pp_c_type_cast (pp, type);
- pp_c_integer_constant (pp, e);
- }
-}
-
-
-void
-cxx_pretty_printer::constant (tree t)
-{
- switch (TREE_CODE (t))
- {
- case STRING_CST:
- {
- const bool in_parens = PAREN_STRING_LITERAL_P (t);
- if (in_parens)
- pp_cxx_left_paren (this);
- c_pretty_printer::constant (t);
- if (in_parens)
- pp_cxx_right_paren (this);
- }
- break;
-
- case INTEGER_CST:
- if (NULLPTR_TYPE_P (TREE_TYPE (t)))
- {
- pp_string (this, "nullptr");
- break;
- }
- else if (TREE_CODE (TREE_TYPE (t)) == ENUMERAL_TYPE)
- {
- pp_cxx_enumeration_constant (this, t);
- break;
- }
- /* fall through. */
-
- default:
- c_pretty_printer::constant (t);
- break;
- }
-}
-
-/* id-expression:
- unqualified-id
- qualified-id */
-
-void
-cxx_pretty_printer::id_expression (tree t)
-{
- if (TREE_CODE (t) == OVERLOAD)
- t = OVL_FIRST (t);
- if (DECL_P (t) && DECL_CONTEXT (t))
- pp_cxx_qualified_id (this, t);
- else
- pp_cxx_unqualified_id (this, t);
-}
-
-/* user-defined literal:
- literal ud-suffix */
-
-void
-pp_cxx_userdef_literal (cxx_pretty_printer *pp, tree t)
-{
- pp->constant (USERDEF_LITERAL_VALUE (t));
- pp->id_expression (USERDEF_LITERAL_SUFFIX_ID (t));
-}
-
-
-/* primary-expression:
- literal
- this
- :: identifier
- :: operator-function-id
- :: qualifier-id
- ( expression )
- id-expression
-
- GNU Extensions:
- __builtin_va_arg ( assignment-expression , type-id )
- __builtin_offsetof ( type-id, offsetof-expression )
- __builtin_addressof ( expression )
-
- __has_nothrow_assign ( type-id )
- __has_nothrow_constructor ( type-id )
- __has_nothrow_copy ( type-id )
- __has_trivial_assign ( type-id )
- __has_trivial_constructor ( type-id )
- __has_trivial_copy ( type-id )
- __has_unique_object_representations ( type-id )
- __has_trivial_destructor ( type-id )
- __has_virtual_destructor ( type-id )
- __is_abstract ( type-id )
- __is_base_of ( type-id , type-id )
- __is_class ( type-id )
- __is_empty ( type-id )
- __is_enum ( type-id )
- __is_literal_type ( type-id )
- __is_pod ( type-id )
- __is_polymorphic ( type-id )
- __is_std_layout ( type-id )
- __is_trivial ( type-id )
- __is_union ( type-id ) */
-
-void
-cxx_pretty_printer::primary_expression (tree t)
-{
- switch (TREE_CODE (t))
- {
- case VOID_CST:
- case INTEGER_CST:
- case REAL_CST:
- case COMPLEX_CST:
- case STRING_CST:
- constant (t);
- break;
-
- case USERDEF_LITERAL:
- pp_cxx_userdef_literal (this, t);
- break;
-
- case BASELINK:
- t = BASELINK_FUNCTIONS (t);
- /* FALLTHRU */
- case VAR_DECL:
- case PARM_DECL:
- case FIELD_DECL:
- case FUNCTION_DECL:
- case OVERLOAD:
- case CONST_DECL:
- case TEMPLATE_DECL:
- id_expression (t);
- break;
-
- case RESULT_DECL:
- case TEMPLATE_TYPE_PARM:
- case TEMPLATE_TEMPLATE_PARM:
- case TEMPLATE_PARM_INDEX:
- pp_cxx_unqualified_id (this, t);
- break;
-
- case STMT_EXPR:
- pp_cxx_left_paren (this);
- statement (STMT_EXPR_STMT (t));
- pp_cxx_right_paren (this);
- break;
-
- case TRAIT_EXPR:
- pp_cxx_trait_expression (this, t);
- break;
-
- case VA_ARG_EXPR:
- pp_cxx_va_arg_expression (this, t);
- break;
-
- case OFFSETOF_EXPR:
- pp_cxx_offsetof_expression (this, t);
- break;
-
- case ADDRESSOF_EXPR:
- pp_cxx_addressof_expression (this, t);
- break;
-
- case REQUIRES_EXPR:
- pp_cxx_requires_expr (this, t);
- break;
-
- default:
- c_pretty_printer::primary_expression (t);
- break;
- }
-}
-
-/* postfix-expression:
- primary-expression
- postfix-expression [ expression ]
- postfix-expression ( expression-list(opt) )
- simple-type-specifier ( expression-list(opt) )
- typename ::(opt) nested-name-specifier identifier ( expression-list(opt) )
- typename ::(opt) nested-name-specifier template(opt)
- template-id ( expression-list(opt) )
- postfix-expression . template(opt) ::(opt) id-expression
- postfix-expression -> template(opt) ::(opt) id-expression
- postfix-expression . pseudo-destructor-name
- postfix-expression -> pseudo-destructor-name
- postfix-expression ++
- postfix-expression --
- dynamic_cast < type-id > ( expression )
- static_cast < type-id > ( expression )
- reinterpret_cast < type-id > ( expression )
- const_cast < type-id > ( expression )
- typeid ( expression )
- typeid ( type-id ) */
-
-void
-cxx_pretty_printer::postfix_expression (tree t)
-{
- enum tree_code code = TREE_CODE (t);
-
- switch (code)
- {
- case AGGR_INIT_EXPR:
- case CALL_EXPR:
- {
- tree fun = cp_get_callee (t);
- tree saved_scope = enclosing_scope;
- bool skipfirst = false;
- tree arg;
-
- if (TREE_CODE (fun) == ADDR_EXPR)
- fun = TREE_OPERAND (fun, 0);
-
- /* In templates, where there is no way to tell whether a given
- call uses an actual member function. So the parser builds
- FUN as a COMPONENT_REF or a plain IDENTIFIER_NODE until
- instantiation time. */
- if (TREE_CODE (fun) != FUNCTION_DECL)
- ;
- else if (DECL_NONSTATIC_MEMBER_FUNCTION_P (fun))
- {
- tree object = (code == AGGR_INIT_EXPR
- ? (AGGR_INIT_VIA_CTOR_P (t)
- ? AGGR_INIT_EXPR_SLOT (t)
- : AGGR_INIT_EXPR_ARG (t, 0))
- : CALL_EXPR_ARG (t, 0));
-
- while (TREE_CODE (object) == NOP_EXPR)
- object = TREE_OPERAND (object, 0);
-
- if (TREE_CODE (object) == ADDR_EXPR)
- object = TREE_OPERAND (object, 0);
-
- if (!TYPE_PTR_P (TREE_TYPE (object)))
- {
- postfix_expression (object);
- pp_cxx_dot (this);
- }
- else
- {
- postfix_expression (object);
- pp_cxx_arrow (this);
- }
- skipfirst = true;
- enclosing_scope = strip_pointer_operator (TREE_TYPE (object));
- }
-
- postfix_expression (fun);
- enclosing_scope = saved_scope;
- pp_cxx_left_paren (this);
- if (code == AGGR_INIT_EXPR)
- {
- aggr_init_expr_arg_iterator iter;
- FOR_EACH_AGGR_INIT_EXPR_ARG (arg, iter, t)
- {
- if (skipfirst)
- skipfirst = false;
- else
- {
- expression (arg);
- if (more_aggr_init_expr_args_p (&iter))
- pp_cxx_separate_with (this, ',');
- }
- }
- }
- else
- {
- call_expr_arg_iterator iter;
- FOR_EACH_CALL_EXPR_ARG (arg, iter, t)
- {
- if (skipfirst)
- skipfirst = false;
- else
- {
- expression (arg);
- if (more_call_expr_args_p (&iter))
- pp_cxx_separate_with (this, ',');
- }
- }
- }
- pp_cxx_right_paren (this);
- }
- if (code == AGGR_INIT_EXPR && AGGR_INIT_VIA_CTOR_P (t))
- {
- pp_cxx_separate_with (this, ',');
- postfix_expression (AGGR_INIT_EXPR_SLOT (t));
- }
- break;
-
- case BASELINK:
- case VAR_DECL:
- case PARM_DECL:
- case FIELD_DECL:
- case FUNCTION_DECL:
- case OVERLOAD:
- case CONST_DECL:
- case TEMPLATE_DECL:
- case RESULT_DECL:
- primary_expression (t);
- break;
-
- case DYNAMIC_CAST_EXPR:
- case STATIC_CAST_EXPR:
- case REINTERPRET_CAST_EXPR:
- case CONST_CAST_EXPR:
- if (code == DYNAMIC_CAST_EXPR)
- pp_cxx_ws_string (this, "dynamic_cast");
- else if (code == STATIC_CAST_EXPR)
- pp_cxx_ws_string (this, "static_cast");
- else if (code == REINTERPRET_CAST_EXPR)
- pp_cxx_ws_string (this, "reinterpret_cast");
- else
- pp_cxx_ws_string (this, "const_cast");
- pp_cxx_begin_template_argument_list (this);
- type_id (TREE_TYPE (t));
- pp_cxx_end_template_argument_list (this);
- pp_left_paren (this);
- expression (TREE_OPERAND (t, 0));
- pp_right_paren (this);
- break;
-
- case BIT_CAST_EXPR:
- pp_cxx_ws_string (this, "__builtin_bit_cast");
- pp_left_paren (this);
- type_id (TREE_TYPE (t));
- pp_comma (this);
- expression (TREE_OPERAND (t, 0));
- pp_right_paren (this);
- break;
-
- case EMPTY_CLASS_EXPR:
- type_id (TREE_TYPE (t));
- pp_left_paren (this);
- pp_right_paren (this);
- break;
-
- case TYPEID_EXPR:
- pp_cxx_typeid_expression (this, t);
- break;
-
- case PSEUDO_DTOR_EXPR:
- postfix_expression (TREE_OPERAND (t, 0));
- pp_cxx_dot (this);
- if (TREE_OPERAND (t, 1))
- {
- pp_cxx_qualified_id (this, TREE_OPERAND (t, 1));
- pp_cxx_colon_colon (this);
- }
- pp_complement (this);
- pp_cxx_unqualified_id (this, TREE_OPERAND (t, 2));
- break;
-
- case ARROW_EXPR:
- postfix_expression (TREE_OPERAND (t, 0));
- pp_cxx_arrow (this);
- break;
-
- default:
- c_pretty_printer::postfix_expression (t);
- break;
- }
-}
-
-/* new-expression:
- ::(opt) new new-placement(opt) new-type-id new-initializer(opt)
- ::(opt) new new-placement(opt) ( type-id ) new-initializer(opt)
-
- new-placement:
- ( expression-list )
-
- new-type-id:
- type-specifier-seq new-declarator(opt)
-
- new-declarator:
- ptr-operator new-declarator(opt)
- direct-new-declarator
-
- direct-new-declarator
- [ expression ]
- direct-new-declarator [ constant-expression ]
-
- new-initializer:
- ( expression-list(opt) ) */
-
-static void
-pp_cxx_new_expression (cxx_pretty_printer *pp, tree t)
-{
- enum tree_code code = TREE_CODE (t);
- tree type = TREE_OPERAND (t, 1);
- tree init = TREE_OPERAND (t, 2);
- switch (code)
- {
- case NEW_EXPR:
- case VEC_NEW_EXPR:
- if (NEW_EXPR_USE_GLOBAL (t))
- pp_cxx_colon_colon (pp);
- pp_cxx_ws_string (pp, "new");
- if (TREE_OPERAND (t, 0))
- {
- pp_cxx_call_argument_list (pp, TREE_OPERAND (t, 0));
- pp_space (pp);
- }
- if (TREE_CODE (type) == ARRAY_REF)
- type = build_cplus_array_type
- (TREE_OPERAND (type, 0),
- build_index_type (fold_build2_loc (input_location,
- MINUS_EXPR, integer_type_node,
- TREE_OPERAND (type, 1),
- integer_one_node)));
- pp->type_id (type);
- if (init)
- {
- pp_left_paren (pp);
- if (TREE_CODE (init) == TREE_LIST)
- pp_c_expression_list (pp, init);
- else if (init == void_node)
- ; /* OK, empty initializer list. */
- else
- pp->expression (init);
- pp_right_paren (pp);
- }
- break;
-
- default:
- pp_unsupported_tree (pp, t);
- }
-}
-
-/* delete-expression:
- ::(opt) delete cast-expression
- ::(opt) delete [ ] cast-expression */
-
-static void
-pp_cxx_delete_expression (cxx_pretty_printer *pp, tree t)
-{
- enum tree_code code = TREE_CODE (t);
- switch (code)
- {
- case DELETE_EXPR:
- case VEC_DELETE_EXPR:
- if (DELETE_EXPR_USE_GLOBAL (t))
- pp_cxx_colon_colon (pp);
- pp_cxx_ws_string (pp, "delete");
- pp_space (pp);
- if (code == VEC_DELETE_EXPR
- || DELETE_EXPR_USE_VEC (t))
- {
- pp_left_bracket (pp);
- pp_right_bracket (pp);
- pp_space (pp);
- }
- pp_c_cast_expression (pp, TREE_OPERAND (t, 0));
- break;
-
- default:
- pp_unsupported_tree (pp, t);
- }
-}
-
-/* unary-expression:
- postfix-expression
- ++ cast-expression
- -- cast-expression
- unary-operator cast-expression
- sizeof unary-expression
- sizeof ( type-id )
- sizeof ... ( identifier )
- new-expression
- delete-expression
-
- unary-operator: one of
- * & + - !
-
- GNU extensions:
- __alignof__ unary-expression
- __alignof__ ( type-id ) */
-
-void
-cxx_pretty_printer::unary_expression (tree t)
-{
- enum tree_code code = TREE_CODE (t);
- switch (code)
- {
- case NEW_EXPR:
- case VEC_NEW_EXPR:
- pp_cxx_new_expression (this, t);
- break;
-
- case DELETE_EXPR:
- case VEC_DELETE_EXPR:
- pp_cxx_delete_expression (this, t);
- break;
-
- case SIZEOF_EXPR:
- if (PACK_EXPANSION_P (TREE_OPERAND (t, 0)))
- {
- pp_cxx_ws_string (this, "sizeof");
- pp_cxx_ws_string (this, "...");
- pp_cxx_whitespace (this);
- pp_cxx_left_paren (this);
- if (TYPE_P (TREE_OPERAND (t, 0)))
- type_id (TREE_OPERAND (t, 0));
- else
- unary_expression (TREE_OPERAND (t, 0));
- pp_cxx_right_paren (this);
- break;
- }
- /* Fall through */
-
- case ALIGNOF_EXPR:
- pp_cxx_ws_string (this, code == SIZEOF_EXPR ? "sizeof" : "__alignof__");
- pp_cxx_whitespace (this);
- if (TREE_CODE (t) == SIZEOF_EXPR && SIZEOF_EXPR_TYPE_P (t))
- {
- pp_cxx_left_paren (this);
- type_id (TREE_TYPE (TREE_OPERAND (t, 0)));
- pp_cxx_right_paren (this);
- }
- else if (TYPE_P (TREE_OPERAND (t, 0)))
- {
- pp_cxx_left_paren (this);
- type_id (TREE_OPERAND (t, 0));
- pp_cxx_right_paren (this);
- }
- else
- unary_expression (TREE_OPERAND (t, 0));
- break;
-
- case AT_ENCODE_EXPR:
- pp_cxx_ws_string (this, "@encode");
- pp_cxx_whitespace (this);
- pp_cxx_left_paren (this);
- type_id (TREE_OPERAND (t, 0));
- pp_cxx_right_paren (this);
- break;
-
- case NOEXCEPT_EXPR:
- pp_cxx_ws_string (this, "noexcept");
- pp_cxx_whitespace (this);
- pp_cxx_left_paren (this);
- expression (TREE_OPERAND (t, 0));
- pp_cxx_right_paren (this);
- break;
-
- case UNARY_PLUS_EXPR:
- pp_plus (this);
- pp_cxx_cast_expression (this, TREE_OPERAND (t, 0));
- break;
-
- default:
- c_pretty_printer::unary_expression (t);
- break;
- }
-}
-
-/* cast-expression:
- unary-expression
- ( type-id ) cast-expression */
-
-static void
-pp_cxx_cast_expression (cxx_pretty_printer *pp, tree t)
-{
- switch (TREE_CODE (t))
- {
- case CAST_EXPR:
- case IMPLICIT_CONV_EXPR:
- pp->type_id (TREE_TYPE (t));
- pp_cxx_call_argument_list (pp, TREE_OPERAND (t, 0));
- break;
-
- default:
- pp_c_cast_expression (pp, t);
- break;
- }
-}
-
-/* pm-expression:
- cast-expression
- pm-expression .* cast-expression
- pm-expression ->* cast-expression */
-
-static void
-pp_cxx_pm_expression (cxx_pretty_printer *pp, tree t)
-{
- switch (TREE_CODE (t))
- {
- /* Handle unfortunate OFFSET_REF overloading here. */
- case OFFSET_REF:
- if (TYPE_P (TREE_OPERAND (t, 0)))
- {
- pp_cxx_qualified_id (pp, t);
- break;
- }
- /* Fall through. */
- case MEMBER_REF:
- case DOTSTAR_EXPR:
- pp_cxx_pm_expression (pp, TREE_OPERAND (t, 0));
- if (TREE_CODE (t) == MEMBER_REF)
- pp_cxx_arrow (pp);
- else
- pp_cxx_dot (pp);
- pp_star(pp);
- pp_cxx_cast_expression (pp, TREE_OPERAND (t, 1));
- break;
-
-
- default:
- pp_cxx_cast_expression (pp, t);
- break;
- }
-}
-
-/* multiplicative-expression:
- pm-expression
- multiplicative-expression * pm-expression
- multiplicative-expression / pm-expression
- multiplicative-expression % pm-expression */
-
-void
-cxx_pretty_printer::multiplicative_expression (tree e)
-{
- enum tree_code code = TREE_CODE (e);
- switch (code)
- {
- case MULT_EXPR:
- case TRUNC_DIV_EXPR:
- case TRUNC_MOD_EXPR:
- case EXACT_DIV_EXPR:
- case RDIV_EXPR:
- multiplicative_expression (TREE_OPERAND (e, 0));
- pp_space (this);
- if (code == MULT_EXPR)
- pp_star (this);
- else if (code != TRUNC_MOD_EXPR)
- pp_slash (this);
- else
- pp_modulo (this);
- pp_space (this);
- pp_cxx_pm_expression (this, TREE_OPERAND (e, 1));
- break;
-
- default:
- pp_cxx_pm_expression (this, e);
- break;
- }
-}
-
-/* conditional-expression:
- logical-or-expression
- logical-or-expression ? expression : assignment-expression */
-
-void
-cxx_pretty_printer::conditional_expression (tree e)
-{
- if (TREE_CODE (e) == COND_EXPR)
- {
- pp_c_logical_or_expression (this, TREE_OPERAND (e, 0));
- pp_space (this);
- pp_question (this);
- pp_space (this);
- expression (TREE_OPERAND (e, 1));
- pp_space (this);
- assignment_expression (TREE_OPERAND (e, 2));
- }
- else
- pp_c_logical_or_expression (this, e);
-}
-
-/* Pretty-print a compound assignment operator token as indicated by T. */
-
-static void
-pp_cxx_assignment_operator (cxx_pretty_printer *pp, tree t)
-{
- const char *op;
-
- switch (TREE_CODE (t))
- {
- case NOP_EXPR:
- op = "=";
- break;
-
- case PLUS_EXPR:
- op = "+=";
- break;
-
- case MINUS_EXPR:
- op = "-=";
- break;
-
- case TRUNC_DIV_EXPR:
- op = "/=";
- break;
-
- case TRUNC_MOD_EXPR:
- op = "%=";
- break;
-
- default:
- op = get_tree_code_name (TREE_CODE (t));
- break;
- }
-
- pp_cxx_ws_string (pp, op);
-}
-
-
-/* assignment-expression:
- conditional-expression
- logical-or-expression assignment-operator assignment-expression
- throw-expression
-
- throw-expression:
- throw assignment-expression(opt)
-
- assignment-operator: one of
- = *= /= %= += -= >>= <<= &= ^= |= */
-
-void
-cxx_pretty_printer::assignment_expression (tree e)
-{
- switch (TREE_CODE (e))
- {
- case MODIFY_EXPR:
- case INIT_EXPR:
- pp_c_logical_or_expression (this, TREE_OPERAND (e, 0));
- pp_space (this);
- pp_equal (this);
- pp_space (this);
- assignment_expression (TREE_OPERAND (e, 1));
- break;
-
- case THROW_EXPR:
- pp_cxx_ws_string (this, "throw");
- if (TREE_OPERAND (e, 0))
- assignment_expression (TREE_OPERAND (e, 0));
- break;
-
- case MODOP_EXPR:
- pp_c_logical_or_expression (this, TREE_OPERAND (e, 0));
- pp_cxx_assignment_operator (this, TREE_OPERAND (e, 1));
- assignment_expression (TREE_OPERAND (e, 2));
- break;
-
- default:
- conditional_expression (e);
- break;
- }
-}
-
-void
-cxx_pretty_printer::expression (tree t)
-{
- switch (TREE_CODE (t))
- {
- case STRING_CST:
- case VOID_CST:
- case INTEGER_CST:
- case REAL_CST:
- case COMPLEX_CST:
- constant (t);
- break;
-
- case USERDEF_LITERAL:
- pp_cxx_userdef_literal (this, t);
- break;
-
- case RESULT_DECL:
- pp_cxx_unqualified_id (this, t);
- break;
-
-#if 0
- case OFFSET_REF:
-#endif
- case SCOPE_REF:
- case PTRMEM_CST:
- pp_cxx_qualified_id (this, t);
- break;
-
- case OVERLOAD:
- t = OVL_FIRST (t);
- /* FALLTHRU */
- case VAR_DECL:
- case PARM_DECL:
- case FIELD_DECL:
- case CONST_DECL:
- case FUNCTION_DECL:
- case BASELINK:
- case TEMPLATE_DECL:
- case TEMPLATE_TYPE_PARM:
- case TEMPLATE_PARM_INDEX:
- case TEMPLATE_TEMPLATE_PARM:
- case STMT_EXPR:
- case REQUIRES_EXPR:
- primary_expression (t);
- break;
-
- case CALL_EXPR:
- case DYNAMIC_CAST_EXPR:
- case STATIC_CAST_EXPR:
- case REINTERPRET_CAST_EXPR:
- case CONST_CAST_EXPR:
-#if 0
- case MEMBER_REF:
-#endif
- case EMPTY_CLASS_EXPR:
- case TYPEID_EXPR:
- case PSEUDO_DTOR_EXPR:
- case AGGR_INIT_EXPR:
- case ARROW_EXPR:
- postfix_expression (t);
- break;
-
- case NEW_EXPR:
- case VEC_NEW_EXPR:
- pp_cxx_new_expression (this, t);
- break;
-
- case DELETE_EXPR:
- case VEC_DELETE_EXPR:
- pp_cxx_delete_expression (this, t);
- break;
-
- case SIZEOF_EXPR:
- case ALIGNOF_EXPR:
- case NOEXCEPT_EXPR:
- case UNARY_PLUS_EXPR:
- unary_expression (t);
- break;
-
- case CAST_EXPR:
- case IMPLICIT_CONV_EXPR:
- pp_cxx_cast_expression (this, t);
- break;
-
- case OFFSET_REF:
- case MEMBER_REF:
- case DOTSTAR_EXPR:
- pp_cxx_pm_expression (this, t);
- break;
-
- case MULT_EXPR:
- case TRUNC_DIV_EXPR:
- case TRUNC_MOD_EXPR:
- case EXACT_DIV_EXPR:
- case RDIV_EXPR:
- multiplicative_expression (t);
- break;
-
- case COND_EXPR:
- conditional_expression (t);
- break;
-
- case MODIFY_EXPR:
- case INIT_EXPR:
- case THROW_EXPR:
- case MODOP_EXPR:
- assignment_expression (t);
- break;
-
- case NON_DEPENDENT_EXPR:
- case MUST_NOT_THROW_EXPR:
- expression (TREE_OPERAND (t, 0));
- break;
-
- case EXPR_PACK_EXPANSION:
- expression (PACK_EXPANSION_PATTERN (t));
- pp_cxx_ws_string (this, "...");
- break;
-
- case UNARY_LEFT_FOLD_EXPR:
- pp_cxx_unary_left_fold_expression (this, t);
- break;
-
- case UNARY_RIGHT_FOLD_EXPR:
- pp_cxx_unary_right_fold_expression (this, t);
- break;
-
- case BINARY_LEFT_FOLD_EXPR:
- case BINARY_RIGHT_FOLD_EXPR:
- pp_cxx_binary_fold_expression (this, t);
- break;
-
- case TEMPLATE_ID_EXPR:
- pp_cxx_template_id (this, t);
- break;
-
- case NONTYPE_ARGUMENT_PACK:
- {
- tree args = ARGUMENT_PACK_ARGS (t);
- int i, len = TREE_VEC_LENGTH (args);
- pp_cxx_left_brace (this);
- for (i = 0; i < len; ++i)
- {
- if (i > 0)
- pp_cxx_separate_with (this, ',');
- expression (TREE_VEC_ELT (args, i));
- }
- pp_cxx_right_brace (this);
- }
- break;
-
- case LAMBDA_EXPR:
- pp_cxx_ws_string (this, "<lambda>");
- break;
-
- case TRAIT_EXPR:
- pp_cxx_trait_expression (this, t);
- break;
-
- case ATOMIC_CONSTR:
- case CHECK_CONSTR:
- case CONJ_CONSTR:
- case DISJ_CONSTR:
- pp_cxx_constraint (this, t);
- break;
-
- case PAREN_EXPR:
- pp_cxx_left_paren (this);
- expression (TREE_OPERAND (t, 0));
- pp_cxx_right_paren (this);
- break;
-
- default:
- c_pretty_printer::expression (t);
- break;
- }
-}
-
-
-/* Declarations. */
-
-/* function-specifier:
- inline
- virtual
- explicit */
-
-void
-cxx_pretty_printer::function_specifier (tree t)
-{
- switch (TREE_CODE (t))
- {
- case FUNCTION_DECL:
- if (DECL_VIRTUAL_P (t))
- pp_cxx_ws_string (this, "virtual");
- else if (DECL_CONSTRUCTOR_P (t) && DECL_NONCONVERTING_P (t))
- pp_cxx_ws_string (this, "explicit");
- else
- c_pretty_printer::function_specifier (t);
-
- default:
- break;
- }
-}
-
-/* decl-specifier-seq:
- decl-specifier-seq(opt) decl-specifier
-
- decl-specifier:
- storage-class-specifier
- type-specifier
- function-specifier
- friend
- typedef */
-
-void
-cxx_pretty_printer::declaration_specifiers (tree t)
-{
- switch (TREE_CODE (t))
- {
- case VAR_DECL:
- case PARM_DECL:
- case CONST_DECL:
- case FIELD_DECL:
- storage_class_specifier (t);
- declaration_specifiers (TREE_TYPE (t));
- break;
-
- case TYPE_DECL:
- pp_cxx_ws_string (this, "typedef");
- declaration_specifiers (TREE_TYPE (t));
- break;
-
- case FUNCTION_DECL:
- /* Constructors don't have return types. And conversion functions
- do not have a type-specifier in their return types. */
- if (DECL_CONSTRUCTOR_P (t) || DECL_CONV_FN_P (t))
- function_specifier (t);
- else if (DECL_NONSTATIC_MEMBER_FUNCTION_P (t))
- declaration_specifiers (TREE_TYPE (TREE_TYPE (t)));
- else
- c_pretty_printer::declaration_specifiers (t);
- break;
- default:
- c_pretty_printer::declaration_specifiers (t);
- break;
- }
-}
-
-/* simple-type-specifier:
- ::(opt) nested-name-specifier(opt) type-name
- ::(opt) nested-name-specifier(opt) template(opt) template-id
- decltype-specifier
- char
- wchar_t
- bool
- short
- int
- long
- signed
- unsigned
- float
- double
- void */
-
-void
-cxx_pretty_printer::simple_type_specifier (tree t)
-{
- switch (TREE_CODE (t))
- {
- case RECORD_TYPE:
- case UNION_TYPE:
- case ENUMERAL_TYPE:
- pp_cxx_qualified_id (this, t);
- break;
-
- case TEMPLATE_TYPE_PARM:
- case TEMPLATE_TEMPLATE_PARM:
- case TEMPLATE_PARM_INDEX:
- case BOUND_TEMPLATE_TEMPLATE_PARM:
- pp_cxx_unqualified_id (this, t);
- if (tree c = PLACEHOLDER_TYPE_CONSTRAINTS (t))
- pp_cxx_constrained_type_spec (this, c);
- break;
-
- case TYPENAME_TYPE:
- pp_cxx_ws_string (this, "typename");
- pp_cxx_nested_name_specifier (this, TYPE_CONTEXT (t));
- pp_cxx_unqualified_id (this, TYPENAME_TYPE_FULLNAME (t));
- break;
-
- case DECLTYPE_TYPE:
- pp_cxx_ws_string (this, "decltype");
- pp_cxx_left_paren (this);
- this->expression (DECLTYPE_TYPE_EXPR (t));
- pp_cxx_right_paren (this);
- break;
-
- case NULLPTR_TYPE:
- pp_cxx_ws_string (this, "std::nullptr_t");
- break;
-
- default:
- c_pretty_printer::simple_type_specifier (t);
- break;
- }
-}
-
-/* type-specifier-seq:
- type-specifier type-specifier-seq(opt)
-
- type-specifier:
- simple-type-specifier
- class-specifier
- enum-specifier
- elaborated-type-specifier
- cv-qualifier */
-
-static void
-pp_cxx_type_specifier_seq (cxx_pretty_printer *pp, tree t)
-{
- switch (TREE_CODE (t))
- {
- case TEMPLATE_DECL:
- case TEMPLATE_TYPE_PARM:
- case TEMPLATE_TEMPLATE_PARM:
- case TYPE_DECL:
- case BOUND_TEMPLATE_TEMPLATE_PARM:
- case DECLTYPE_TYPE:
- case NULLPTR_TYPE:
- pp_cxx_cv_qualifier_seq (pp, t);
- pp->simple_type_specifier (t);
- break;
-
- case METHOD_TYPE:
- pp_cxx_type_specifier_seq (pp, TREE_TYPE (t));
- pp_cxx_space_for_pointer_operator (pp, TREE_TYPE (t));
- pp_cxx_nested_name_specifier (pp, TYPE_METHOD_BASETYPE (t));
- break;
-
- case RECORD_TYPE:
- if (TYPE_PTRMEMFUNC_P (t))
- {
- tree pfm = TYPE_PTRMEMFUNC_FN_TYPE (t);
- pp->declaration_specifiers (TREE_TYPE (TREE_TYPE (pfm)));
- pp_cxx_whitespace (pp);
- pp_cxx_ptr_operator (pp, t);
- break;
- }
- /* fall through */
-
- case OFFSET_TYPE:
- if (TYPE_PTRDATAMEM_P (t))
- {
- pp_cxx_type_specifier_seq (pp, TREE_TYPE (t));
- pp_cxx_whitespace (pp);
- pp_cxx_ptr_operator (pp, t);
- break;
- }
- /* fall through */
-
- default:
- if (!(TREE_CODE (t) == FUNCTION_DECL && DECL_CONSTRUCTOR_P (t)))
- pp_c_specifier_qualifier_list (pp, t);
- }
-}
-
-/* ptr-operator:
- * cv-qualifier-seq(opt)
- &
- ::(opt) nested-name-specifier * cv-qualifier-seq(opt) */
-
-static void
-pp_cxx_ptr_operator (cxx_pretty_printer *pp, tree t)
-{
- if (!TYPE_P (t) && TREE_CODE (t) != TYPE_DECL)
- t = TREE_TYPE (t);
- switch (TREE_CODE (t))
- {
- case REFERENCE_TYPE:
- case POINTER_TYPE:
- if (TYPE_PTR_OR_PTRMEM_P (TREE_TYPE (t)))
- pp_cxx_ptr_operator (pp, TREE_TYPE (t));
- pp_c_attributes_display (pp, TYPE_ATTRIBUTES (TREE_TYPE (t)));
- if (TYPE_PTR_P (t))
- {
- pp_star (pp);
- pp_cxx_cv_qualifier_seq (pp, t);
- }
- else
- pp_ampersand (pp);
- break;
-
- case RECORD_TYPE:
- if (TYPE_PTRMEMFUNC_P (t))
- {
- pp_cxx_left_paren (pp);
- pp_cxx_nested_name_specifier (pp, TYPE_PTRMEMFUNC_OBJECT_TYPE (t));
- pp_star (pp);
- break;
- }
- /* FALLTHRU */
- case OFFSET_TYPE:
- if (TYPE_PTRMEM_P (t))
- {
- if (TREE_CODE (TREE_TYPE (t)) == ARRAY_TYPE)
- pp_cxx_left_paren (pp);
- pp_cxx_nested_name_specifier (pp, TYPE_PTRMEM_CLASS_TYPE (t));
- pp_star (pp);
- pp_cxx_cv_qualifier_seq (pp, t);
- break;
- }
- /* fall through. */
-
- default:
- pp_unsupported_tree (pp, t);
- break;
- }
-}
-
-static inline tree
-pp_cxx_implicit_parameter_type (tree mf)
-{
- return class_of_this_parm (TREE_TYPE (mf));
-}
-
-/*
- parameter-declaration:
- decl-specifier-seq declarator
- decl-specifier-seq declarator = assignment-expression
- decl-specifier-seq abstract-declarator(opt)
- decl-specifier-seq abstract-declarator(opt) assignment-expression */
-
-static inline void
-pp_cxx_parameter_declaration (cxx_pretty_printer *pp, tree t)
-{
- pp->declaration_specifiers (t);
- if (TYPE_P (t))
- pp->abstract_declarator (t);
- else
- pp->declarator (t);
-}
-
-/* parameter-declaration-clause:
- parameter-declaration-list(opt) ...(opt)
- parameter-declaration-list , ...
-
- parameter-declaration-list:
- parameter-declaration
- parameter-declaration-list , parameter-declaration */
-
-static void
-pp_cxx_parameter_declaration_clause (cxx_pretty_printer *pp, tree t)
-{
- gcc_assert (FUNC_OR_METHOD_TYPE_P (t) || TREE_CODE (t) == FUNCTION_DECL);
- tree types, args;
- if (TYPE_P (t))
- {
- types = TYPE_ARG_TYPES (t);
- args = NULL_TREE;
- }
- else
- {
- types = FUNCTION_FIRST_USER_PARMTYPE (t);
- args = FUNCTION_FIRST_USER_PARM (t);
- }
- bool abstract = !args || (pp->flags & pp_c_flag_abstract);
-
- /* Skip artificial parameter for non-static member functions. */
- if (TREE_CODE (t) == METHOD_TYPE)
- types = TREE_CHAIN (types);
-
- bool first = true;
- pp_cxx_left_paren (pp);
- for (; types != void_list_node; types = TREE_CHAIN (types))
- {
- if (!first)
- pp_cxx_separate_with (pp, ',');
- first = false;
- if (!types)
- {
- pp_cxx_ws_string (pp, "...");
- break;
- }
- pp_cxx_parameter_declaration (pp, abstract ? TREE_VALUE (types) : args);
- if (!abstract && pp->flags & pp_cxx_flag_default_argument)
- {
- pp_cxx_whitespace (pp);
- pp_equal (pp);
- pp_cxx_whitespace (pp);
- pp->assignment_expression (TREE_PURPOSE (types));
- }
- if (!abstract)
- args = TREE_CHAIN (args);
- }
- pp_cxx_right_paren (pp);
-}
-
-/* exception-specification:
- throw ( type-id-list(opt) )
-
- type-id-list
- type-id
- type-id-list , type-id */
-
-static void
-pp_cxx_exception_specification (cxx_pretty_printer *pp, tree t)
-{
- tree ex_spec = TYPE_RAISES_EXCEPTIONS (t);
- bool need_comma = false;
-
- if (ex_spec == NULL)
- return;
- if (TREE_PURPOSE (ex_spec))
- {
- pp_cxx_ws_string (pp, "noexcept");
- pp_cxx_whitespace (pp);
- pp_cxx_left_paren (pp);
- if (DEFERRED_NOEXCEPT_SPEC_P (ex_spec))
- pp_cxx_ws_string (pp, "<uninstantiated>");
- else
- pp->expression (TREE_PURPOSE (ex_spec));
- pp_cxx_right_paren (pp);
- return;
- }
- pp_cxx_ws_string (pp, "throw");
- pp_cxx_left_paren (pp);
- for (; ex_spec && TREE_VALUE (ex_spec); ex_spec = TREE_CHAIN (ex_spec))
- {
- tree type = TREE_VALUE (ex_spec);
- tree argpack = NULL_TREE;
- int i, len = 1;
-
- if (ARGUMENT_PACK_P (type))
- {
- argpack = ARGUMENT_PACK_ARGS (type);
- len = TREE_VEC_LENGTH (argpack);
- }
-
- for (i = 0; i < len; ++i)
- {
- if (argpack)
- type = TREE_VEC_ELT (argpack, i);
-
- if (need_comma)
- pp_cxx_separate_with (pp, ',');
- else
- need_comma = true;
-
- pp->type_id (type);
- }
- }
- pp_cxx_right_paren (pp);
-}
-
-/* direct-declarator:
- declarator-id
- direct-declarator ( parameter-declaration-clause ) cv-qualifier-seq(opt)
- exception-specification(opt)
- direct-declaration [ constant-expression(opt) ]
- ( declarator ) */
-
-void
-cxx_pretty_printer::direct_declarator (tree t)
-{
- switch (TREE_CODE (t))
- {
- case VAR_DECL:
- case PARM_DECL:
- case CONST_DECL:
- case FIELD_DECL:
- if (DECL_NAME (t))
- {
- pp_cxx_space_for_pointer_operator (this, TREE_TYPE (t));
-
- if ((TREE_CODE (t) == PARM_DECL && DECL_PACK_P (t))
- || template_parameter_pack_p (t))
- /* A function parameter pack or non-type template
- parameter pack. */
- pp_cxx_ws_string (this, "...");
-
- id_expression (DECL_NAME (t));
- }
- abstract_declarator (TREE_TYPE (t));
- break;
-
- case FUNCTION_DECL:
- pp_cxx_space_for_pointer_operator (this, TREE_TYPE (TREE_TYPE (t)));
- expression (t);
- pp_cxx_parameter_declaration_clause (this, t);
-
- if (DECL_NONSTATIC_MEMBER_FUNCTION_P (t))
- {
- padding = pp_before;
- pp_cxx_cv_qualifier_seq (this, pp_cxx_implicit_parameter_type (t));
- }
-
- pp_cxx_exception_specification (this, TREE_TYPE (t));
- break;
-
- case TYPENAME_TYPE:
- case TEMPLATE_DECL:
- case TEMPLATE_TYPE_PARM:
- case TEMPLATE_PARM_INDEX:
- case TEMPLATE_TEMPLATE_PARM:
- break;
-
- default:
- c_pretty_printer::direct_declarator (t);
- break;
- }
-}
-
-/* declarator:
- direct-declarator
- ptr-operator declarator */
-
-void
-cxx_pretty_printer::declarator (tree t)
-{
- direct_declarator (t);
-
- // Print a requires clause.
- if (flag_concepts)
- if (tree ci = get_constraints (t))
- if (tree reqs = CI_DECLARATOR_REQS (ci))
- pp_cxx_requires_clause (this, reqs);
-}
-
-/* ctor-initializer:
- : mem-initializer-list
-
- mem-initializer-list:
- mem-initializer
- mem-initializer , mem-initializer-list
-
- mem-initializer:
- mem-initializer-id ( expression-list(opt) )
-
- mem-initializer-id:
- ::(opt) nested-name-specifier(opt) class-name
- identifier */
-
-static void
-pp_cxx_ctor_initializer (cxx_pretty_printer *pp, tree t)
-{
- t = TREE_OPERAND (t, 0);
- pp_cxx_whitespace (pp);
- pp_colon (pp);
- pp_cxx_whitespace (pp);
- for (; t; t = TREE_CHAIN (t))
- {
- tree purpose = TREE_PURPOSE (t);
- bool is_pack = PACK_EXPANSION_P (purpose);
-
- if (is_pack)
- pp->primary_expression (PACK_EXPANSION_PATTERN (purpose));
- else
- pp->primary_expression (purpose);
- pp_cxx_call_argument_list (pp, TREE_VALUE (t));
- if (is_pack)
- pp_cxx_ws_string (pp, "...");
- if (TREE_CHAIN (t))
- pp_cxx_separate_with (pp, ',');
- }
-}
-
-/* function-definition:
- decl-specifier-seq(opt) declarator ctor-initializer(opt) function-body
- decl-specifier-seq(opt) declarator function-try-block */
-
-static void
-pp_cxx_function_definition (cxx_pretty_printer *pp, tree t)
-{
- tree saved_scope = pp->enclosing_scope;
- pp->declaration_specifiers (t);
- pp->declarator (t);
- pp_needs_newline (pp) = true;
- pp->enclosing_scope = DECL_CONTEXT (t);
- if (DECL_SAVED_TREE (t))
- pp->statement (DECL_SAVED_TREE (t));
- else
- pp_cxx_semicolon (pp);
- pp_newline_and_flush (pp);
- pp->enclosing_scope = saved_scope;
-}
-
-/* abstract-declarator:
- ptr-operator abstract-declarator(opt)
- direct-abstract-declarator */
-
-void
-cxx_pretty_printer::abstract_declarator (tree t)
-{
- /* pp_cxx_ptr_operator prints '(' for a pointer-to-member function,
- or a pointer-to-data-member of array type:
-
- void (X::*)()
- int (X::*)[5]
-
- but not for a pointer-to-data-member of non-array type:
-
- int X::*
-
- so be mindful of that. */
- if (TYPE_PTRMEMFUNC_P (t)
- || (TYPE_PTRDATAMEM_P (t)
- && TREE_CODE (TREE_TYPE (t)) == ARRAY_TYPE))
- pp_cxx_right_paren (this);
- else if (INDIRECT_TYPE_P (t))
- {
- if (TREE_CODE (TREE_TYPE (t)) == ARRAY_TYPE
- || TREE_CODE (TREE_TYPE (t)) == FUNCTION_TYPE)
- pp_cxx_right_paren (this);
- t = TREE_TYPE (t);
- }
- direct_abstract_declarator (t);
-}
-
-/* direct-abstract-declarator:
- direct-abstract-declarator(opt) ( parameter-declaration-clause )
- cv-qualifier-seq(opt) exception-specification(opt)
- direct-abstract-declarator(opt) [ constant-expression(opt) ]
- ( abstract-declarator ) */
-
-void
-cxx_pretty_printer::direct_abstract_declarator (tree t)
-{
- switch (TREE_CODE (t))
- {
- case REFERENCE_TYPE:
- abstract_declarator (t);
- break;
-
- case RECORD_TYPE:
- if (TYPE_PTRMEMFUNC_P (t))
- direct_abstract_declarator (TYPE_PTRMEMFUNC_FN_TYPE (t));
- break;
-
- case OFFSET_TYPE:
- if (TYPE_PTRDATAMEM_P (t))
- direct_abstract_declarator (TREE_TYPE (t));
- break;
-
- case METHOD_TYPE:
- case FUNCTION_TYPE:
- pp_cxx_parameter_declaration_clause (this, t);
- direct_abstract_declarator (TREE_TYPE (t));
- if (TREE_CODE (t) == METHOD_TYPE)
- {
- padding = pp_before;
- pp_cxx_cv_qualifier_seq (this, class_of_this_parm (t));
- }
- pp_cxx_exception_specification (this, t);
- break;
-
- case TYPENAME_TYPE:
- case TEMPLATE_TYPE_PARM:
- case TEMPLATE_TEMPLATE_PARM:
- case BOUND_TEMPLATE_TEMPLATE_PARM:
- case UNBOUND_CLASS_TEMPLATE:
- case DECLTYPE_TYPE:
- break;
-
- default:
- c_pretty_printer::direct_abstract_declarator (t);
- break;
- }
-}
-
-/* type-id:
- type-specifier-seq abstract-declarator(opt) */
-
-void
-cxx_pretty_printer::type_id (tree t)
-{
- pp_flags saved_flags = flags;
- flags |= pp_c_flag_abstract;
-
- switch (TREE_CODE (t))
- {
- case TYPE_DECL:
- case UNION_TYPE:
- case RECORD_TYPE:
- case ENUMERAL_TYPE:
- case TYPENAME_TYPE:
- case BOUND_TEMPLATE_TEMPLATE_PARM:
- case UNBOUND_CLASS_TEMPLATE:
- case TEMPLATE_TEMPLATE_PARM:
- case TEMPLATE_TYPE_PARM:
- case TEMPLATE_PARM_INDEX:
- case TEMPLATE_DECL:
- case TYPEOF_TYPE:
- case UNDERLYING_TYPE:
- case DECLTYPE_TYPE:
- case NULLPTR_TYPE:
- case TEMPLATE_ID_EXPR:
- case OFFSET_TYPE:
- pp_cxx_type_specifier_seq (this, t);
- if (TYPE_PTRMEM_P (t))
- abstract_declarator (t);
- break;
-
- case TYPE_PACK_EXPANSION:
- type_id (PACK_EXPANSION_PATTERN (t));
- pp_cxx_ws_string (this, "...");
- break;
-
- case TYPE_ARGUMENT_PACK:
- {
- tree args = ARGUMENT_PACK_ARGS (t);
- int len = TREE_VEC_LENGTH (args);
- pp_cxx_left_brace (this);
- for (int i = 0; i < len; ++i)
- {
- if (i > 0)
- pp_cxx_separate_with (this, ',');
- type_id (TREE_VEC_ELT (args, i));
- }
- pp_cxx_right_brace (this);
- }
- break;
-
- default:
- c_pretty_printer::type_id (t);
- break;
- }
-
- flags = saved_flags;
-}
-
-/* template-argument-list:
- template-argument ...(opt)
- template-argument-list, template-argument ...(opt)
-
- template-argument:
- assignment-expression
- type-id
- template-name */
-
-static void
-pp_cxx_template_argument_list (cxx_pretty_printer *pp, tree t)
-{
- int i;
- bool need_comma = false;
-
- if (t == NULL)
- return;
- for (i = 0; i < TREE_VEC_LENGTH (t); ++i)
- {
- tree arg = TREE_VEC_ELT (t, i);
- tree argpack = NULL_TREE;
- int idx, len = 1;
-
- if (ARGUMENT_PACK_P (arg))
- {
- argpack = ARGUMENT_PACK_ARGS (arg);
- len = TREE_VEC_LENGTH (argpack);
- }
-
- for (idx = 0; idx < len; idx++)
- {
- if (argpack)
- arg = TREE_VEC_ELT (argpack, idx);
-
- if (need_comma)
- pp_cxx_separate_with (pp, ',');
- else
- need_comma = true;
-
- if (TYPE_P (arg) || (TREE_CODE (arg) == TEMPLATE_DECL
- && TYPE_P (DECL_TEMPLATE_RESULT (arg))))
- pp->type_id (arg);
- else if (template_parm_object_p (arg))
- pp->expression (DECL_INITIAL (arg));
- else
- pp->expression (arg);
- }
- }
-}
-
-
-static void
-pp_cxx_exception_declaration (cxx_pretty_printer *pp, tree t)
-{
- t = DECL_EXPR_DECL (t);
- pp_cxx_type_specifier_seq (pp, t);
- if (TYPE_P (t))
- pp->abstract_declarator (t);
- else
- pp->declarator (t);
-}
-
-/* Statements. */
-
-void
-cxx_pretty_printer::statement (tree t)
-{
- switch (TREE_CODE (t))
- {
- case CTOR_INITIALIZER:
- pp_cxx_ctor_initializer (this, t);
- break;
-
- case USING_STMT:
- pp_cxx_ws_string (this, "using");
- pp_cxx_ws_string (this, "namespace");
- if (DECL_CONTEXT (t))
- pp_cxx_nested_name_specifier (this, DECL_CONTEXT (t));
- pp_cxx_qualified_id (this, USING_STMT_NAMESPACE (t));
- break;
-
- case USING_DECL:
- pp_cxx_ws_string (this, "using");
- pp_cxx_nested_name_specifier (this, USING_DECL_SCOPE (t));
- pp_cxx_unqualified_id (this, DECL_NAME (t));
- break;
-
- case EH_SPEC_BLOCK:
- break;
-
- /* try-block:
- try compound-statement handler-seq */
- case TRY_BLOCK:
- pp_maybe_newline_and_indent (this, 0);
- pp_cxx_ws_string (this, "try");
- pp_newline_and_indent (this, 3);
- statement (TRY_STMTS (t));
- pp_newline_and_indent (this, -3);
- if (CLEANUP_P (t))
- ;
- else
- statement (TRY_HANDLERS (t));
- break;
-
- /*
- handler-seq:
- handler handler-seq(opt)
-
- handler:
- catch ( exception-declaration ) compound-statement
-
- exception-declaration:
- type-specifier-seq declarator
- type-specifier-seq abstract-declarator
- ... */
- case HANDLER:
- pp_cxx_ws_string (this, "catch");
- pp_cxx_left_paren (this);
- pp_cxx_exception_declaration (this, HANDLER_PARMS (t));
- pp_cxx_right_paren (this);
- pp_indentation (this) += 3;
- pp_needs_newline (this) = true;
- statement (HANDLER_BODY (t));
- pp_indentation (this) -= 3;
- pp_needs_newline (this) = true;
- break;
-
- /* selection-statement:
- if ( expression ) statement
- if ( expression ) statement else statement */
- case IF_STMT:
- pp_cxx_ws_string (this, "if");
- pp_cxx_whitespace (this);
- pp_cxx_left_paren (this);
- expression (IF_COND (t));
- pp_cxx_right_paren (this);
- pp_newline_and_indent (this, 2);
- statement (THEN_CLAUSE (t));
- pp_newline_and_indent (this, -2);
- if (ELSE_CLAUSE (t))
- {
- tree else_clause = ELSE_CLAUSE (t);
- pp_cxx_ws_string (this, "else");
- if (TREE_CODE (else_clause) == IF_STMT)
- pp_cxx_whitespace (this);
- else
- pp_newline_and_indent (this, 2);
- statement (else_clause);
- if (TREE_CODE (else_clause) != IF_STMT)
- pp_newline_and_indent (this, -2);
- }
- break;
-
- case RANGE_FOR_STMT:
- pp_cxx_ws_string (this, "for");
- pp_space (this);
- pp_cxx_left_paren (this);
- if (RANGE_FOR_INIT_STMT (t))
- {
- statement (RANGE_FOR_INIT_STMT (t));
- pp_needs_newline (this) = false;
- pp_cxx_whitespace (this);
- }
- statement (RANGE_FOR_DECL (t));
- pp_space (this);
- pp_needs_newline (this) = false;
- pp_colon (this);
- pp_space (this);
- statement (RANGE_FOR_EXPR (t));
- pp_cxx_right_paren (this);
- pp_newline_and_indent (this, 3);
- statement (FOR_BODY (t));
- pp_indentation (this) -= 3;
- pp_needs_newline (this) = true;
- break;
-
- /* expression-statement:
- expression(opt) ; */
- case EXPR_STMT:
- expression (EXPR_STMT_EXPR (t));
- pp_cxx_semicolon (this);
- pp_needs_newline (this) = true;
- break;
-
- case CLEANUP_STMT:
- pp_cxx_ws_string (this, "try");
- pp_newline_and_indent (this, 2);
- statement (CLEANUP_BODY (t));
- pp_newline_and_indent (this, -2);
- pp_cxx_ws_string (this, CLEANUP_EH_ONLY (t) ? "catch" : "finally");
- pp_newline_and_indent (this, 2);
- statement (CLEANUP_EXPR (t));
- pp_newline_and_indent (this, -2);
- break;
-
- case STATIC_ASSERT:
- declaration (t);
- break;
-
- case OMP_DEPOBJ:
- pp_cxx_ws_string (this, "#pragma omp depobj");
- pp_space (this);
- pp_cxx_left_paren (this);
- expression (OMP_DEPOBJ_DEPOBJ (t));
- pp_cxx_right_paren (this);
- if (OMP_DEPOBJ_CLAUSES (t) && OMP_DEPOBJ_CLAUSES (t) != error_mark_node)
- {
- if (TREE_CODE (OMP_DEPOBJ_CLAUSES (t)) == OMP_CLAUSE)
- dump_omp_clauses (this, OMP_DEPOBJ_CLAUSES (t),
- pp_indentation (this), TDF_NONE);
- else
- switch (tree_to_uhwi (OMP_DEPOBJ_CLAUSES (t)))
- {
- case OMP_CLAUSE_DEPEND_IN:
- pp_cxx_ws_string (this, " update(in)");
- break;
- case OMP_CLAUSE_DEPEND_INOUT:
- pp_cxx_ws_string (this, " update(inout)");
- break;
- case OMP_CLAUSE_DEPEND_OUT:
- pp_cxx_ws_string (this, " update(out)");
- break;
- case OMP_CLAUSE_DEPEND_MUTEXINOUTSET:
- pp_cxx_ws_string (this, " update(mutexinoutset)");
- break;
- case OMP_CLAUSE_DEPEND_LAST:
- pp_cxx_ws_string (this, " destroy");
- break;
- default:
- break;
- }
- }
- pp_needs_newline (this) = true;
- break;
-
- default:
- c_pretty_printer::statement (t);
- break;
- }
-}
-
-/* original-namespace-definition:
- namespace identifier { namespace-body }
-
- As an edge case, we also handle unnamed namespace definition here. */
-
-static void
-pp_cxx_original_namespace_definition (cxx_pretty_printer *pp, tree t)
-{
- pp_cxx_ws_string (pp, "namespace");
- if (DECL_CONTEXT (t))
- pp_cxx_nested_name_specifier (pp, DECL_CONTEXT (t));
- if (DECL_NAME (t))
- pp_cxx_unqualified_id (pp, t);
- pp_cxx_whitespace (pp);
- pp_cxx_left_brace (pp);
- /* We do not print the namespace-body. */
- pp_cxx_whitespace (pp);
- pp_cxx_right_brace (pp);
-}
-
-/* namespace-alias:
- identifier
-
- namespace-alias-definition:
- namespace identifier = qualified-namespace-specifier ;
-
- qualified-namespace-specifier:
- ::(opt) nested-name-specifier(opt) namespace-name */
-
-static void
-pp_cxx_namespace_alias_definition (cxx_pretty_printer *pp, tree t)
-{
- pp_cxx_ws_string (pp, "namespace");
- if (DECL_CONTEXT (t))
- pp_cxx_nested_name_specifier (pp, DECL_CONTEXT (t));
- pp_cxx_unqualified_id (pp, t);
- pp_cxx_whitespace (pp);
- pp_equal (pp);
- pp_cxx_whitespace (pp);
- if (DECL_CONTEXT (DECL_NAMESPACE_ALIAS (t)))
- pp_cxx_nested_name_specifier (pp,
- DECL_CONTEXT (DECL_NAMESPACE_ALIAS (t)));
- pp_cxx_qualified_id (pp, DECL_NAMESPACE_ALIAS (t));
- pp_cxx_semicolon (pp);
-}
-
-/* simple-declaration:
- decl-specifier-seq(opt) init-declarator-list(opt) */
-
-static void
-pp_cxx_simple_declaration (cxx_pretty_printer *pp, tree t)
-{
- pp->declaration_specifiers (t);
- pp_cxx_init_declarator (pp, t);
- pp_cxx_semicolon (pp);
- pp_needs_newline (pp) = true;
-}
-
-/*
- template-parameter-list:
- template-parameter
- template-parameter-list , template-parameter */
-
-static inline void
-pp_cxx_template_parameter_list (cxx_pretty_printer *pp, tree t)
-{
- const int n = TREE_VEC_LENGTH (t);
- int i;
- for (i = 0; i < n; ++i)
- {
- if (i)
- pp_cxx_separate_with (pp, ',');
- pp_cxx_template_parameter (pp, TREE_VEC_ELT (t, i));
- }
-}
-
-/* template-parameter:
- type-parameter
- parameter-declaration
-
- type-parameter:
- class ...(opt) identifier(opt)
- class identifier(opt) = type-id
- typename identifier(opt)
- typename ...(opt) identifier(opt) = type-id
- template < template-parameter-list > class ...(opt) identifier(opt)
- template < template-parameter-list > class identifier(opt) = template-name */
-
-static void
-pp_cxx_template_parameter (cxx_pretty_printer *pp, tree t)
-{
- tree parameter = TREE_VALUE (t);
- switch (TREE_CODE (parameter))
- {
- case TYPE_DECL:
- pp_cxx_ws_string (pp, "class");
- if (TEMPLATE_TYPE_PARAMETER_PACK (TREE_TYPE (t)))
- pp_cxx_ws_string (pp, "...");
- if (DECL_NAME (parameter))
- pp_cxx_tree_identifier (pp, DECL_NAME (parameter));
- /* FIXME: Check if we should print also default argument. */
- break;
-
- case PARM_DECL:
- pp_cxx_parameter_declaration (pp, parameter);
- break;
-
- case TEMPLATE_DECL:
- break;
-
- default:
- pp_unsupported_tree (pp, t);
- break;
- }
-}
-
-/* Pretty-print a template parameter in the canonical form
- "template-parameter-<level>-<position in parameter list>". */
-
-void
-pp_cxx_canonical_template_parameter (cxx_pretty_printer *pp, tree parm)
-{
- const enum tree_code code = TREE_CODE (parm);
-
- /* Brings type template parameters to the canonical forms. */
- if (code == TEMPLATE_TYPE_PARM || code == TEMPLATE_TEMPLATE_PARM
- || code == BOUND_TEMPLATE_TEMPLATE_PARM)
- parm = TEMPLATE_TYPE_PARM_INDEX (parm);
-
- pp_cxx_begin_template_argument_list (pp);
- pp->translate_string ("template-parameter-");
- pp_wide_integer (pp, TEMPLATE_PARM_LEVEL (parm));
- pp_minus (pp);
- pp_wide_integer (pp, TEMPLATE_PARM_IDX (parm) + 1);
- pp_cxx_end_template_argument_list (pp);
-}
-
-/* Print a constrained-type-specifier. */
-
-void
-pp_cxx_constrained_type_spec (cxx_pretty_printer *pp, tree c)
-{
- pp_cxx_whitespace (pp);
- pp_cxx_left_bracket (pp);
- pp->translate_string ("requires");
- pp_cxx_whitespace (pp);
- if (c == error_mark_node)
- {
- pp_cxx_ws_string(pp, "<unsatisfied-type-constraint>");
- return;
- }
- tree t, a;
- placeholder_extract_concept_and_args (c, t, a);
- pp->id_expression (t);
- pp_cxx_begin_template_argument_list (pp);
- pp_cxx_ws_string (pp, "<placeholder>");
- pp_cxx_separate_with (pp, ',');
- tree args = make_tree_vec (TREE_VEC_LENGTH (a) - 1);
- for (int i = 0; i < TREE_VEC_LENGTH (a) - 1; ++i)
- TREE_VEC_ELT (args, i) = TREE_VEC_ELT (a, i + 1);
- pp_cxx_template_argument_list (pp, args);
- ggc_free (args);
- pp_cxx_end_template_argument_list (pp);
- pp_cxx_right_bracket (pp);
-}
-
-/*
- template-declaration:
- export(opt) template < template-parameter-list > declaration
-
- Concept extensions:
-
- template-declaration:
- export(opt) template < template-parameter-list >
- requires-clause(opt) declaration */
-
-static void
-pp_cxx_template_declaration (cxx_pretty_printer *pp, tree t)
-{
- tree tmpl = most_general_template (t);
- tree level;
-
- pp_maybe_newline_and_indent (pp, 0);
- for (level = DECL_TEMPLATE_PARMS (tmpl); level; level = TREE_CHAIN (level))
- {
- pp_cxx_ws_string (pp, "template");
- pp_cxx_begin_template_argument_list (pp);
- pp_cxx_template_parameter_list (pp, TREE_VALUE (level));
- pp_cxx_end_template_argument_list (pp);
- pp_newline_and_indent (pp, 3);
- }
-
- if (flag_concepts)
- if (tree ci = get_constraints (t))
- if (tree reqs = CI_TEMPLATE_REQS (ci))
- {
- pp_cxx_requires_clause (pp, reqs);
- pp_newline_and_indent (pp, 6);
- }
-
- if (TREE_CODE (t) == FUNCTION_DECL && DECL_SAVED_TREE (t))
- pp_cxx_function_definition (pp, t);
- else if (TREE_CODE (t) == CONCEPT_DECL)
- pp_cxx_concept_definition (pp, t);
- else
- pp_cxx_simple_declaration (pp, t);
-}
-
-static void
-pp_cxx_explicit_specialization (cxx_pretty_printer *pp, tree t)
-{
- pp_unsupported_tree (pp, t);
-}
-
-static void
-pp_cxx_explicit_instantiation (cxx_pretty_printer *pp, tree t)
-{
- pp_unsupported_tree (pp, t);
-}
-
-static void
-pp_cxx_concept_definition (cxx_pretty_printer *pp, tree t)
-{
- pp_cxx_unqualified_id (pp, DECL_NAME (t));
- pp_cxx_whitespace (pp);
- pp_cxx_ws_string (pp, "=");
- pp_cxx_whitespace (pp);
- pp->expression (DECL_INITIAL (t));
- pp_cxx_semicolon (pp);
-}
-
-/*
- declaration:
- block-declaration
- function-definition
- template-declaration
- explicit-instantiation
- explicit-specialization
- linkage-specification
- namespace-definition
-
- block-declaration:
- simple-declaration
- asm-definition
- namespace-alias-definition
- using-declaration
- using-directive
- static_assert-declaration */
-void
-cxx_pretty_printer::declaration (tree t)
-{
- if (TREE_CODE (t) == STATIC_ASSERT)
- {
- pp_cxx_ws_string (this, "static_assert");
- pp_cxx_left_paren (this);
- expression (STATIC_ASSERT_CONDITION (t));
- pp_cxx_separate_with (this, ',');
- expression (STATIC_ASSERT_MESSAGE (t));
- pp_cxx_right_paren (this);
- }
- else if (!DECL_LANG_SPECIFIC (t))
- pp_cxx_simple_declaration (this, t);
- else if (DECL_USE_TEMPLATE (t))
- switch (DECL_USE_TEMPLATE (t))
- {
- case 1:
- pp_cxx_template_declaration (this, t);
- break;
-
- case 2:
- pp_cxx_explicit_specialization (this, t);
- break;
-
- case 3:
- pp_cxx_explicit_instantiation (this, t);
- break;
-
- default:
- break;
- }
- else switch (TREE_CODE (t))
- {
- case VAR_DECL:
- case TYPE_DECL:
- pp_cxx_simple_declaration (this, t);
- break;
-
- case FUNCTION_DECL:
- if (DECL_SAVED_TREE (t))
- pp_cxx_function_definition (this, t);
- else
- pp_cxx_simple_declaration (this, t);
- break;
-
- case NAMESPACE_DECL:
- if (DECL_NAMESPACE_ALIAS (t))
- pp_cxx_namespace_alias_definition (this, t);
- else
- pp_cxx_original_namespace_definition (this, t);
- break;
-
- default:
- pp_unsupported_tree (this, t);
- break;
- }
-}
-
-static void
-pp_cxx_typeid_expression (cxx_pretty_printer *pp, tree t)
-{
- t = TREE_OPERAND (t, 0);
- pp_cxx_ws_string (pp, "typeid");
- pp_cxx_left_paren (pp);
- if (TYPE_P (t))
- pp->type_id (t);
- else
- pp->expression (t);
- pp_cxx_right_paren (pp);
-}
-
-void
-pp_cxx_va_arg_expression (cxx_pretty_printer *pp, tree t)
-{
- pp_cxx_ws_string (pp, "va_arg");
- pp_cxx_left_paren (pp);
- pp->assignment_expression (TREE_OPERAND (t, 0));
- pp_cxx_separate_with (pp, ',');
- pp->type_id (TREE_TYPE (t));
- pp_cxx_right_paren (pp);
-}
-
-static bool
-pp_cxx_offsetof_expression_1 (cxx_pretty_printer *pp, tree t)
-{
- switch (TREE_CODE (t))
- {
- case ARROW_EXPR:
- if (TREE_CODE (TREE_OPERAND (t, 0)) == STATIC_CAST_EXPR
- && INDIRECT_TYPE_P (TREE_TYPE (TREE_OPERAND (t, 0))))
- {
- pp->type_id (TREE_TYPE (TREE_TYPE (TREE_OPERAND (t, 0))));
- pp_cxx_separate_with (pp, ',');
- return true;
- }
- return false;
- case COMPONENT_REF:
- if (!pp_cxx_offsetof_expression_1 (pp, TREE_OPERAND (t, 0)))
- return false;
- if (TREE_CODE (TREE_OPERAND (t, 0)) != ARROW_EXPR)
- pp_cxx_dot (pp);
- pp->expression (TREE_OPERAND (t, 1));
- return true;
- case ARRAY_REF:
- if (!pp_cxx_offsetof_expression_1 (pp, TREE_OPERAND (t, 0)))
- return false;
- pp_left_bracket (pp);
- pp->expression (TREE_OPERAND (t, 1));
- pp_right_bracket (pp);
- return true;
- default:
- return false;
- }
-}
-
-void
-pp_cxx_offsetof_expression (cxx_pretty_printer *pp, tree t)
-{
- pp_cxx_ws_string (pp, "offsetof");
- pp_cxx_left_paren (pp);
- if (!pp_cxx_offsetof_expression_1 (pp, TREE_OPERAND (t, 0)))
- pp->expression (TREE_OPERAND (t, 0));
- pp_cxx_right_paren (pp);
-}
-
-void
-pp_cxx_addressof_expression (cxx_pretty_printer *pp, tree t)
-{
- pp_cxx_ws_string (pp, "__builtin_addressof");
- pp_cxx_left_paren (pp);
- pp->expression (TREE_OPERAND (t, 0));
- pp_cxx_right_paren (pp);
-}
-
-static char const*
-get_fold_operator (tree t)
-{
- ovl_op_info_t *info = OVL_OP_INFO (FOLD_EXPR_MODIFY_P (t),
- FOLD_EXPR_OP (t));
- return info->name;
-}
-
-void
-pp_cxx_unary_left_fold_expression (cxx_pretty_printer *pp, tree t)
-{
- char const* op = get_fold_operator (t);
- tree expr = PACK_EXPANSION_PATTERN (FOLD_EXPR_PACK (t));
- pp_cxx_left_paren (pp);
- pp_cxx_ws_string (pp, "...");
- pp_cxx_ws_string (pp, op);
- pp->expression (expr);
- pp_cxx_right_paren (pp);
-}
-
-void
-pp_cxx_unary_right_fold_expression (cxx_pretty_printer *pp, tree t)
-{
- char const* op = get_fold_operator (t);
- tree expr = PACK_EXPANSION_PATTERN (FOLD_EXPR_PACK (t));
- pp_cxx_left_paren (pp);
- pp->expression (expr);
- pp_space (pp);
- pp_cxx_ws_string (pp, op);
- pp_cxx_ws_string (pp, "...");
- pp_cxx_right_paren (pp);
-}
-
-void
-pp_cxx_binary_fold_expression (cxx_pretty_printer *pp, tree t)
-{
- char const* op = get_fold_operator (t);
- tree t1 = TREE_OPERAND (t, 1);
- tree t2 = TREE_OPERAND (t, 2);
- if (t1 == FOLD_EXPR_PACK (t))
- t1 = PACK_EXPANSION_PATTERN (t1);
- else
- t2 = PACK_EXPANSION_PATTERN (t2);
- pp_cxx_left_paren (pp);
- pp->expression (t1);
- pp_cxx_ws_string (pp, op);
- pp_cxx_ws_string (pp, "...");
- pp_cxx_ws_string (pp, op);
- pp->expression (t2);
- pp_cxx_right_paren (pp);
-}
-
-void
-pp_cxx_trait_expression (cxx_pretty_printer *pp, tree t)
-{
- cp_trait_kind kind = TRAIT_EXPR_KIND (t);
-
- switch (kind)
- {
- case CPTK_HAS_NOTHROW_ASSIGN:
- pp_cxx_ws_string (pp, "__has_nothrow_assign");
- break;
- case CPTK_HAS_TRIVIAL_ASSIGN:
- pp_cxx_ws_string (pp, "__has_trivial_assign");
- break;
- case CPTK_HAS_NOTHROW_CONSTRUCTOR:
- pp_cxx_ws_string (pp, "__has_nothrow_constructor");
- break;
- case CPTK_HAS_TRIVIAL_CONSTRUCTOR:
- pp_cxx_ws_string (pp, "__has_trivial_constructor");
- break;
- case CPTK_HAS_NOTHROW_COPY:
- pp_cxx_ws_string (pp, "__has_nothrow_copy");
- break;
- case CPTK_HAS_TRIVIAL_COPY:
- pp_cxx_ws_string (pp, "__has_trivial_copy");
- break;
- case CPTK_HAS_TRIVIAL_DESTRUCTOR:
- pp_cxx_ws_string (pp, "__has_trivial_destructor");
- break;
- case CPTK_HAS_UNIQUE_OBJ_REPRESENTATIONS:
- pp_cxx_ws_string (pp, "__has_unique_object_representations");
- break;
- case CPTK_HAS_VIRTUAL_DESTRUCTOR:
- pp_cxx_ws_string (pp, "__has_virtual_destructor");
- break;
- case CPTK_IS_ABSTRACT:
- pp_cxx_ws_string (pp, "__is_abstract");
- break;
- case CPTK_IS_AGGREGATE:
- pp_cxx_ws_string (pp, "__is_aggregate");
- break;
- case CPTK_IS_BASE_OF:
- pp_cxx_ws_string (pp, "__is_base_of");
- break;
- case CPTK_IS_CLASS:
- pp_cxx_ws_string (pp, "__is_class");
- break;
- case CPTK_IS_EMPTY:
- pp_cxx_ws_string (pp, "__is_empty");
- break;
- case CPTK_IS_ENUM:
- pp_cxx_ws_string (pp, "__is_enum");
- break;
- case CPTK_IS_FINAL:
- pp_cxx_ws_string (pp, "__is_final");
- break;
- case CPTK_IS_LAYOUT_COMPATIBLE:
- pp_cxx_ws_string (pp, "__is_layout_compatible");
- break;
- case CPTK_IS_POINTER_INTERCONVERTIBLE_BASE_OF:
- pp_cxx_ws_string (pp, "__is_pointer_interconvertible_base_of");
- break;
- case CPTK_IS_POD:
- pp_cxx_ws_string (pp, "__is_pod");
- break;
- case CPTK_IS_POLYMORPHIC:
- pp_cxx_ws_string (pp, "__is_polymorphic");
- break;
- case CPTK_IS_SAME_AS:
- pp_cxx_ws_string (pp, "__is_same");
- break;
- case CPTK_IS_STD_LAYOUT:
- pp_cxx_ws_string (pp, "__is_std_layout");
- break;
- case CPTK_IS_TRIVIAL:
- pp_cxx_ws_string (pp, "__is_trivial");
- break;
- case CPTK_IS_TRIVIALLY_ASSIGNABLE:
- pp_cxx_ws_string (pp, "__is_trivially_assignable");
- break;
- case CPTK_IS_TRIVIALLY_CONSTRUCTIBLE:
- pp_cxx_ws_string (pp, "__is_trivially_constructible");
- break;
- case CPTK_IS_TRIVIALLY_COPYABLE:
- pp_cxx_ws_string (pp, "__is_trivially_copyable");
- break;
- case CPTK_IS_UNION:
- pp_cxx_ws_string (pp, "__is_union");
- break;
- case CPTK_IS_LITERAL_TYPE:
- pp_cxx_ws_string (pp, "__is_literal_type");
- break;
- case CPTK_IS_ASSIGNABLE:
- pp_cxx_ws_string (pp, "__is_assignable");
- break;
- case CPTK_IS_CONSTRUCTIBLE:
- pp_cxx_ws_string (pp, "__is_constructible");
- break;
- case CPTK_IS_NOTHROW_ASSIGNABLE:
- pp_cxx_ws_string (pp, "__is_nothrow_assignable");
- break;
- case CPTK_IS_NOTHROW_CONSTRUCTIBLE:
- pp_cxx_ws_string (pp, "__is_nothrow_constructible");
- break;
-
- default:
- gcc_unreachable ();
- }
-
- pp_cxx_left_paren (pp);
- pp->type_id (TRAIT_EXPR_TYPE1 (t));
-
- if (kind == CPTK_IS_BASE_OF
- || kind == CPTK_IS_SAME_AS
- || kind == CPTK_IS_LAYOUT_COMPATIBLE
- || kind == CPTK_IS_POINTER_INTERCONVERTIBLE_BASE_OF)
- {
- pp_cxx_separate_with (pp, ',');
- pp->type_id (TRAIT_EXPR_TYPE2 (t));
- }
-
- pp_cxx_right_paren (pp);
-}
-
-// requires-clause:
-// 'requires' logical-or-expression
-void
-pp_cxx_requires_clause (cxx_pretty_printer *pp, tree t)
-{
- if (!t)
- return;
- pp->padding = pp_before;
- pp_cxx_ws_string (pp, "requires");
- pp_space (pp);
- pp->expression (t);
-}
-
-/* requirement:
- simple-requirement
- compound-requirement
- type-requirement
- nested-requirement */
-static void
-pp_cxx_requirement (cxx_pretty_printer *pp, tree t)
-{
- switch (TREE_CODE (t))
- {
- case SIMPLE_REQ:
- pp_cxx_simple_requirement (pp, t);
- break;
-
- case TYPE_REQ:
- pp_cxx_type_requirement (pp, t);
- break;
-
- case COMPOUND_REQ:
- pp_cxx_compound_requirement (pp, t);
- break;
-
- case NESTED_REQ:
- pp_cxx_nested_requirement (pp, t);
- break;
-
- default:
- gcc_unreachable ();
- }
-}
-
-// requirement-list:
-// requirement
-// requirement-list ';' requirement[opt]
-//
-static void
-pp_cxx_requirement_list (cxx_pretty_printer *pp, tree t)
-{
- for (; t; t = TREE_CHAIN (t))
- pp_cxx_requirement (pp, TREE_VALUE (t));
-}
-
-// requirement-body:
-// '{' requirement-list '}'
-static void
-pp_cxx_requirement_body (cxx_pretty_printer *pp, tree t)
-{
- pp_cxx_left_brace (pp);
- pp_cxx_requirement_list (pp, t);
- pp_cxx_right_brace (pp);
-}
-
-// requires-expression:
-// 'requires' requirement-parameter-list requirement-body
-void
-pp_cxx_requires_expr (cxx_pretty_printer *pp, tree t)
-{
- pp_string (pp, "requires");
- if (tree parms = REQUIRES_EXPR_PARMS (t))
- {
- bool first = true;
- pp_cxx_left_paren (pp);
- for (; parms; parms = TREE_CHAIN (parms))
- {
- if (!first)
- pp_cxx_separate_with (pp, ',' );
- first = false;
- pp_cxx_parameter_declaration (pp, parms);
- }
- pp_cxx_right_paren (pp);
- pp_cxx_whitespace (pp);
- }
- pp_cxx_requirement_body (pp, TREE_OPERAND (t, 1));
-}
-
-/* simple-requirement:
- expression ';' */
-void
-pp_cxx_simple_requirement (cxx_pretty_printer *pp, tree t)
-{
- pp->expression (TREE_OPERAND (t, 0));
- pp_cxx_semicolon (pp);
-}
-
-/* type-requirement:
- typename type-name ';' */
-void
-pp_cxx_type_requirement (cxx_pretty_printer *pp, tree t)
-{
- pp->type_id (TREE_OPERAND (t, 0));
- pp_cxx_semicolon (pp);
-}
-
-/* compound-requirement:
- '{' expression '}' 'noexcept' [opt] trailing-return-type [opt] */
-void
-pp_cxx_compound_requirement (cxx_pretty_printer *pp, tree t)
-{
- pp_cxx_left_brace (pp);
- pp->expression (TREE_OPERAND (t, 0));
- pp_cxx_right_brace (pp);
-
- if (COMPOUND_REQ_NOEXCEPT_P (t))
- pp_cxx_ws_string (pp, "noexcept");
-
- if (tree type = TREE_OPERAND (t, 1))
- {
- pp_cxx_whitespace (pp);
- pp_cxx_ws_string (pp, "->");
- pp->type_id (type);
- }
- pp_cxx_semicolon (pp);
-}
-
-/* nested requirement:
- 'requires' constraint-expression */
-void
-pp_cxx_nested_requirement (cxx_pretty_printer *pp, tree t)
-{
- pp_cxx_ws_string (pp, "requires");
- pp->expression (TREE_OPERAND (t, 0));
- pp_cxx_semicolon (pp);
-}
-
-void
-pp_cxx_check_constraint (cxx_pretty_printer *pp, tree t)
-{
- tree decl = CHECK_CONSTR_CONCEPT (t);
- tree tmpl = DECL_TI_TEMPLATE (decl);
- tree args = CHECK_CONSTR_ARGS (t);
- tree id = build_nt (TEMPLATE_ID_EXPR, tmpl, args);
-
- if (TREE_CODE (decl) == CONCEPT_DECL)
- pp->expression (id);
- else if (VAR_P (decl))
- pp->expression (id);
- else if (TREE_CODE (decl) == FUNCTION_DECL)
- {
- tree call = build_vl_exp (CALL_EXPR, 2);
- TREE_OPERAND (call, 0) = integer_two_node;
- TREE_OPERAND (call, 1) = id;
- pp->expression (call);
- }
- else
- gcc_unreachable ();
-}
-
-/* Output the "[with ...]" clause for a parameter mapping of an atomic
- constraint. */
-
-void
-pp_cxx_parameter_mapping (cxx_pretty_printer *pp, tree map)
-{
- pp_cxx_whitespace (pp);
- pp_cxx_left_bracket (pp);
- pp->translate_string ("with");
- pp_cxx_whitespace (pp);
-
- for (tree p = map; p; p = TREE_CHAIN (p))
- {
- tree parm = TREE_VALUE (p);
- tree arg = TREE_PURPOSE (p);
-
- if (TYPE_P (parm))
- pp->type_id (parm);
- else if (tree name = DECL_NAME (TEMPLATE_PARM_DECL (parm)))
- pp_cxx_tree_identifier (pp, name);
- else
- pp->translate_string ("<unnamed>");
-
- pp_cxx_whitespace (pp);
- pp_equal (pp);
- pp_cxx_whitespace (pp);
-
- if (TYPE_P (arg) || DECL_TEMPLATE_TEMPLATE_PARM_P (arg))
- pp->type_id (arg);
- else
- pp->expression (arg);
-
- if (TREE_CHAIN (p) != NULL_TREE)
- pp_cxx_separate_with (pp, ';');
- }
-
- pp_cxx_right_bracket (pp);
-}
-
-void
-pp_cxx_atomic_constraint (cxx_pretty_printer *pp, tree t)
-{
- /* Emit the expression. */
- pp->expression (ATOMIC_CONSTR_EXPR (t));
-
- /* Emit the parameter mapping. */
- tree map = ATOMIC_CONSTR_MAP (t);
- if (map && map != error_mark_node)
- pp_cxx_parameter_mapping (pp, map);
-}
-
-void
-pp_cxx_conjunction (cxx_pretty_printer *pp, tree t)
-{
- pp_cxx_constraint (pp, TREE_OPERAND (t, 0));
- pp_string (pp, " /\\ ");
- pp_cxx_constraint (pp, TREE_OPERAND (t, 1));
-}
-
-void
-pp_cxx_disjunction (cxx_pretty_printer *pp, tree t)
-{
- pp_cxx_constraint (pp, TREE_OPERAND (t, 0));
- pp_string (pp, " \\/ ");
- pp_cxx_constraint (pp, TREE_OPERAND (t, 1));
-}
-
-void
-pp_cxx_constraint (cxx_pretty_printer *pp, tree t)
-{
- if (t == error_mark_node)
- return pp->expression (t);
-
- switch (TREE_CODE (t))
- {
- case ATOMIC_CONSTR:
- pp_cxx_atomic_constraint (pp, t);
- break;
-
- case CHECK_CONSTR:
- pp_cxx_check_constraint (pp, t);
- break;
-
- case CONJ_CONSTR:
- pp_cxx_conjunction (pp, t);
- break;
-
- case DISJ_CONSTR:
- pp_cxx_disjunction (pp, t);
- break;
-
- case EXPR_PACK_EXPANSION:
- pp->expression (TREE_OPERAND (t, 0));
- break;
-
- default:
- gcc_unreachable ();
- }
-}
-
-
-typedef c_pretty_print_fn pp_fun;
-
-/* Initialization of a C++ pretty-printer object. */
-
-cxx_pretty_printer::cxx_pretty_printer ()
- : c_pretty_printer (),
- enclosing_scope (global_namespace)
-{
- type_specifier_seq = (pp_fun) pp_cxx_type_specifier_seq;
- parameter_list = (pp_fun) pp_cxx_parameter_declaration_clause;
-}
-
-/* cxx_pretty_printer's implementation of pretty_printer::clone vfunc. */
-
-pretty_printer *
-cxx_pretty_printer::clone () const
-{
- return new cxx_pretty_printer (*this);
-}