aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Schwinge <tschwinge@baylibre.com>2024-04-10 10:55:10 +0200
committerThomas Schwinge <tschwinge@baylibre.com>2024-04-10 10:55:10 +0200
commite02c6e686bd345089480237d58f2d153cbcc463c (patch)
tree5a61030629450dd778b1beb356c10a208a6aeb78
parent0de2032ecf451e9fed2ad16c3ce771663fbc37a5 (diff)
parent4c2169d2f4061e72e1e61e9a175d16f7ff50f5c0 (diff)
downloadgcc-e02c6e686bd345089480237d58f2d153cbcc463c.zip
gcc-e02c6e686bd345089480237d58f2d153cbcc463c.tar.gz
gcc-e02c6e686bd345089480237d58f2d153cbcc463c.tar.bz2
Merge commit 'ceed844b5284aeabbdfe25ccf099e7ebeeb14a9b^' into HEAD
-rw-r--r--ChangeLog20
-rw-r--r--MAINTAINERS22
-rw-r--r--gcc/ChangeLog1294
-rw-r--r--gcc/DATESTAMP2
-rw-r--r--gcc/Makefile.in2
-rw-r--r--gcc/ada/ChangeLog4
-rw-r--r--gcc/ada/Makefile.rtl2
-rw-r--r--gcc/ada/accessibility.adb2
-rw-r--r--gcc/ada/accessibility.ads2
-rw-r--r--gcc/ada/ada_get_targ.adb2
-rw-r--r--gcc/ada/adabkend.adb2
-rw-r--r--gcc/ada/adabkend.ads2
-rw-r--r--gcc/ada/adadecode.c2
-rw-r--r--gcc/ada/adadecode.h2
-rw-r--r--gcc/ada/adaint.c2
-rw-r--r--gcc/ada/adaint.h2
-rw-r--r--gcc/ada/affinity.c2
-rw-r--r--gcc/ada/ali-util.adb2
-rw-r--r--gcc/ada/ali-util.ads2
-rw-r--r--gcc/ada/ali.adb2
-rw-r--r--gcc/ada/ali.ads2
-rw-r--r--gcc/ada/alloc.ads2
-rw-r--r--gcc/ada/argv-lynxos178-raven-cert.c2
-rw-r--r--gcc/ada/argv.c2
-rw-r--r--gcc/ada/aspects.adb2
-rw-r--r--gcc/ada/aspects.ads2
-rw-r--r--gcc/ada/atree.adb2
-rw-r--r--gcc/ada/atree.ads2
-rw-r--r--gcc/ada/atree.h2
-rw-r--r--gcc/ada/aux-io.c2
-rw-r--r--gcc/ada/back_end.adb2
-rw-r--r--gcc/ada/back_end.ads2
-rw-r--r--gcc/ada/backend_utils.adb2
-rw-r--r--gcc/ada/backend_utils.ads2
-rw-r--r--gcc/ada/bcheck.adb2
-rw-r--r--gcc/ada/bcheck.ads2
-rw-r--r--gcc/ada/binde.adb2
-rw-r--r--gcc/ada/binde.ads2
-rw-r--r--gcc/ada/binderr.adb2
-rw-r--r--gcc/ada/binderr.ads2
-rw-r--r--gcc/ada/bindgen.adb2
-rw-r--r--gcc/ada/bindgen.ads2
-rw-r--r--gcc/ada/bindo-augmentors.adb2
-rw-r--r--gcc/ada/bindo-augmentors.ads2
-rw-r--r--gcc/ada/bindo-builders.adb2
-rw-r--r--gcc/ada/bindo-builders.ads2
-rw-r--r--gcc/ada/bindo-diagnostics.adb2
-rw-r--r--gcc/ada/bindo-diagnostics.ads2
-rw-r--r--gcc/ada/bindo-elaborators.adb2
-rw-r--r--gcc/ada/bindo-elaborators.ads2
-rw-r--r--gcc/ada/bindo-graphs.adb2
-rw-r--r--gcc/ada/bindo-graphs.ads2
-rw-r--r--gcc/ada/bindo-units.adb2
-rw-r--r--gcc/ada/bindo-units.ads2
-rw-r--r--gcc/ada/bindo-validators.adb2
-rw-r--r--gcc/ada/bindo-validators.ads2
-rw-r--r--gcc/ada/bindo-writers.adb2
-rw-r--r--gcc/ada/bindo-writers.ads2
-rw-r--r--gcc/ada/bindo.adb2
-rw-r--r--gcc/ada/bindo.ads2
-rw-r--r--gcc/ada/bindusg.adb2
-rw-r--r--gcc/ada/bindusg.ads2
-rw-r--r--gcc/ada/butil.adb2
-rw-r--r--gcc/ada/butil.ads2
-rw-r--r--gcc/ada/cal.c2
-rw-r--r--gcc/ada/casing.adb2
-rw-r--r--gcc/ada/casing.ads2
-rw-r--r--gcc/ada/checks.adb2
-rw-r--r--gcc/ada/checks.ads2
-rw-r--r--gcc/ada/cio.c2
-rw-r--r--gcc/ada/clean.adb2
-rw-r--r--gcc/ada/clean.ads2
-rw-r--r--gcc/ada/comperr.adb2
-rw-r--r--gcc/ada/comperr.ads2
-rw-r--r--gcc/ada/config-lang.in2
-rw-r--r--gcc/ada/contracts.adb2
-rw-r--r--gcc/ada/contracts.ads2
-rw-r--r--gcc/ada/csets.adb2
-rw-r--r--gcc/ada/csets.ads2
-rw-r--r--gcc/ada/cstand.adb2
-rw-r--r--gcc/ada/cstand.ads2
-rw-r--r--gcc/ada/cstreams.c2
-rw-r--r--gcc/ada/ctrl_c.c2
-rw-r--r--gcc/ada/debug.adb2
-rw-r--r--gcc/ada/debug.ads2
-rw-r--r--gcc/ada/debug_a.adb2
-rw-r--r--gcc/ada/debug_a.ads2
-rw-r--r--gcc/ada/einfo-utils.adb2
-rw-r--r--gcc/ada/einfo-utils.ads2
-rw-r--r--gcc/ada/einfo.adb2
-rw-r--r--gcc/ada/einfo.ads2
-rw-r--r--gcc/ada/elists.adb2
-rw-r--r--gcc/ada/elists.ads2
-rw-r--r--gcc/ada/elists.h2
-rw-r--r--gcc/ada/env.c2
-rw-r--r--gcc/ada/env.h2
-rw-r--r--gcc/ada/err_vars.ads2
-rw-r--r--gcc/ada/errno.c2
-rw-r--r--gcc/ada/errout.adb2
-rw-r--r--gcc/ada/errout.ads2
-rw-r--r--gcc/ada/erroutc.adb2
-rw-r--r--gcc/ada/erroutc.ads2
-rw-r--r--gcc/ada/errutil.adb2
-rw-r--r--gcc/ada/errutil.ads2
-rw-r--r--gcc/ada/eval_fat.adb2
-rw-r--r--gcc/ada/eval_fat.ads2
-rw-r--r--gcc/ada/exit.c2
-rw-r--r--gcc/ada/exp_aggr.adb2
-rw-r--r--gcc/ada/exp_aggr.ads2
-rw-r--r--gcc/ada/exp_atag.adb2
-rw-r--r--gcc/ada/exp_atag.ads2
-rw-r--r--gcc/ada/exp_attr.adb2
-rw-r--r--gcc/ada/exp_attr.ads2
-rw-r--r--gcc/ada/exp_cg.adb2
-rw-r--r--gcc/ada/exp_cg.ads2
-rw-r--r--gcc/ada/exp_ch10.ads2
-rw-r--r--gcc/ada/exp_ch11.adb2
-rw-r--r--gcc/ada/exp_ch11.ads2
-rw-r--r--gcc/ada/exp_ch12.adb2
-rw-r--r--gcc/ada/exp_ch12.ads2
-rw-r--r--gcc/ada/exp_ch13.adb2
-rw-r--r--gcc/ada/exp_ch13.ads2
-rw-r--r--gcc/ada/exp_ch2.adb2
-rw-r--r--gcc/ada/exp_ch2.ads2
-rw-r--r--gcc/ada/exp_ch3.adb2
-rw-r--r--gcc/ada/exp_ch3.ads2
-rw-r--r--gcc/ada/exp_ch4.adb2
-rw-r--r--gcc/ada/exp_ch4.ads2
-rw-r--r--gcc/ada/exp_ch5.adb2
-rw-r--r--gcc/ada/exp_ch5.ads2
-rw-r--r--gcc/ada/exp_ch6.adb2
-rw-r--r--gcc/ada/exp_ch6.ads2
-rw-r--r--gcc/ada/exp_ch7.adb2
-rw-r--r--gcc/ada/exp_ch7.ads2
-rw-r--r--gcc/ada/exp_ch8.adb2
-rw-r--r--gcc/ada/exp_ch8.ads2
-rw-r--r--gcc/ada/exp_ch9.adb2
-rw-r--r--gcc/ada/exp_ch9.ads2
-rw-r--r--gcc/ada/exp_code.adb2
-rw-r--r--gcc/ada/exp_code.ads2
-rw-r--r--gcc/ada/exp_dbug.adb2
-rw-r--r--gcc/ada/exp_dbug.ads2
-rw-r--r--gcc/ada/exp_disp.adb2
-rw-r--r--gcc/ada/exp_disp.ads2
-rw-r--r--gcc/ada/exp_dist.adb2
-rw-r--r--gcc/ada/exp_dist.ads2
-rw-r--r--gcc/ada/exp_fixd.adb2
-rw-r--r--gcc/ada/exp_fixd.ads2
-rw-r--r--gcc/ada/exp_imgv.adb2
-rw-r--r--gcc/ada/exp_imgv.ads2
-rw-r--r--gcc/ada/exp_intr.adb2
-rw-r--r--gcc/ada/exp_intr.ads2
-rw-r--r--gcc/ada/exp_pakd.adb2
-rw-r--r--gcc/ada/exp_pakd.ads2
-rw-r--r--gcc/ada/exp_prag.adb2
-rw-r--r--gcc/ada/exp_prag.ads2
-rw-r--r--gcc/ada/exp_put_image.adb2
-rw-r--r--gcc/ada/exp_put_image.ads2
-rw-r--r--gcc/ada/exp_sel.adb2
-rw-r--r--gcc/ada/exp_sel.ads2
-rw-r--r--gcc/ada/exp_smem.adb2
-rw-r--r--gcc/ada/exp_smem.ads2
-rw-r--r--gcc/ada/exp_spark.adb2
-rw-r--r--gcc/ada/exp_spark.ads2
-rw-r--r--gcc/ada/exp_strm.adb2
-rw-r--r--gcc/ada/exp_strm.ads2
-rw-r--r--gcc/ada/exp_tss.adb2
-rw-r--r--gcc/ada/exp_tss.ads2
-rw-r--r--gcc/ada/exp_unst.adb2
-rw-r--r--gcc/ada/exp_unst.ads2
-rw-r--r--gcc/ada/exp_util.adb2
-rw-r--r--gcc/ada/exp_util.ads2
-rw-r--r--gcc/ada/expander.adb2
-rw-r--r--gcc/ada/expander.ads2
-rw-r--r--gcc/ada/expect.c2
-rw-r--r--gcc/ada/fe.h2
-rw-r--r--gcc/ada/final.c2
-rw-r--r--gcc/ada/fmap.adb2
-rw-r--r--gcc/ada/fmap.ads2
-rw-r--r--gcc/ada/fname-sf.adb2
-rw-r--r--gcc/ada/fname-sf.ads2
-rw-r--r--gcc/ada/fname-uf.adb2
-rw-r--r--gcc/ada/fname-uf.ads2
-rw-r--r--gcc/ada/fname.adb2
-rw-r--r--gcc/ada/fname.ads2
-rw-r--r--gcc/ada/freeze.adb2
-rw-r--r--gcc/ada/freeze.ads2
-rw-r--r--gcc/ada/frontend.adb2
-rw-r--r--gcc/ada/frontend.ads2
-rw-r--r--gcc/ada/gcc-interface/Make-lang.in2
-rw-r--r--gcc/ada/gcc-interface/Makefile.in2
-rw-r--r--gcc/ada/gcc-interface/ada-builtin-types.def2
-rw-r--r--gcc/ada/gcc-interface/ada-builtins.def2
-rw-r--r--gcc/ada/gcc-interface/ada-tree.def2
-rw-r--r--gcc/ada/gcc-interface/ada-tree.h2
-rw-r--r--gcc/ada/gcc-interface/ada.h2
-rw-r--r--gcc/ada/gcc-interface/config-lang.in2
-rw-r--r--gcc/ada/gcc-interface/cuintp.cc2
-rw-r--r--gcc/ada/gcc-interface/decl.cc2
-rw-r--r--gcc/ada/gcc-interface/gadaint.h2
-rw-r--r--gcc/ada/gcc-interface/gigi.h2
-rw-r--r--gcc/ada/gcc-interface/lang-specs.h2
-rw-r--r--gcc/ada/gcc-interface/lang.opt2
-rw-r--r--gcc/ada/gcc-interface/misc.cc2
-rw-r--r--gcc/ada/gcc-interface/system.ads2
-rw-r--r--gcc/ada/gcc-interface/targtyps.cc2
-rw-r--r--gcc/ada/gcc-interface/trans.cc2
-rw-r--r--gcc/ada/gcc-interface/utils.cc2
-rw-r--r--gcc/ada/gcc-interface/utils2.cc2
-rw-r--r--gcc/ada/gen_il-fields.ads2
-rw-r--r--gcc/ada/gen_il-gen-gen_entities.adb2
-rw-r--r--gcc/ada/gen_il-gen-gen_nodes.adb2
-rw-r--r--gcc/ada/gen_il-gen.adb2
-rw-r--r--gcc/ada/gen_il-gen.ads2
-rw-r--r--gcc/ada/gen_il-internals.adb2
-rw-r--r--gcc/ada/gen_il-internals.ads2
-rw-r--r--gcc/ada/gen_il-main.adb2
-rw-r--r--gcc/ada/gen_il-types.ads2
-rw-r--r--gcc/ada/gen_il.adb2
-rw-r--r--gcc/ada/gen_il.ads2
-rw-r--r--gcc/ada/get_scos.adb2
-rw-r--r--gcc/ada/get_scos.ads2
-rw-r--r--gcc/ada/get_targ.adb2
-rw-r--r--gcc/ada/get_targ.ads2
-rw-r--r--gcc/ada/ghost.adb2
-rw-r--r--gcc/ada/ghost.ads2
-rw-r--r--gcc/ada/gnat-style.texi2
-rw-r--r--gcc/ada/gnat1drv.adb2
-rw-r--r--gcc/ada/gnat1drv.ads2
-rw-r--r--gcc/ada/gnat_cuda.adb2
-rw-r--r--gcc/ada/gnat_cuda.ads2
-rw-r--r--gcc/ada/gnatbind.adb2
-rw-r--r--gcc/ada/gnatbind.ads2
-rw-r--r--gcc/ada/gnatchop.adb2
-rw-r--r--gcc/ada/gnatclean.adb2
-rw-r--r--gcc/ada/gnatcmd.adb2
-rw-r--r--gcc/ada/gnatcmd.ads2
-rw-r--r--gcc/ada/gnatdll.adb2
-rw-r--r--gcc/ada/gnatkr.adb2
-rw-r--r--gcc/ada/gnatkr.ads2
-rw-r--r--gcc/ada/gnatlink.adb2
-rw-r--r--gcc/ada/gnatlink.ads2
-rw-r--r--gcc/ada/gnatls.adb2
-rw-r--r--gcc/ada/gnatls.ads2
-rw-r--r--gcc/ada/gnatmake.adb2
-rw-r--r--gcc/ada/gnatmake.ads2
-rw-r--r--gcc/ada/gnatname.adb2
-rw-r--r--gcc/ada/gnatname.ads2
-rw-r--r--gcc/ada/gnatprep.adb2
-rw-r--r--gcc/ada/gnatprep.ads2
-rw-r--r--gcc/ada/gnatvsn.adb2
-rw-r--r--gcc/ada/gnatvsn.ads4
-rw-r--r--gcc/ada/gprep.adb2
-rw-r--r--gcc/ada/gprep.ads2
-rw-r--r--gcc/ada/gsocket.h2
-rw-r--r--gcc/ada/hostparm.ads2
-rw-r--r--gcc/ada/impunit.adb2
-rw-r--r--gcc/ada/impunit.ads2
-rw-r--r--gcc/ada/indepsw-aix.adb2
-rw-r--r--gcc/ada/indepsw-darwin.adb2
-rw-r--r--gcc/ada/indepsw-gnu.adb2
-rw-r--r--gcc/ada/indepsw.adb2
-rw-r--r--gcc/ada/indepsw.ads2
-rw-r--r--gcc/ada/init.c2
-rw-r--r--gcc/ada/initialize.c2
-rw-r--r--gcc/ada/inline.adb2
-rw-r--r--gcc/ada/inline.ads2
-rw-r--r--gcc/ada/itypes.adb2
-rw-r--r--gcc/ada/itypes.ads2
-rw-r--r--gcc/ada/krunch.adb2
-rw-r--r--gcc/ada/krunch.ads2
-rw-r--r--gcc/ada/layout.adb2
-rw-r--r--gcc/ada/layout.ads2
-rw-r--r--gcc/ada/lib-list.adb2
-rw-r--r--gcc/ada/lib-load.adb2
-rw-r--r--gcc/ada/lib-load.ads2
-rw-r--r--gcc/ada/lib-sort.adb2
-rw-r--r--gcc/ada/lib-util.adb2
-rw-r--r--gcc/ada/lib-util.ads2
-rw-r--r--gcc/ada/lib-writ.adb2
-rw-r--r--gcc/ada/lib-writ.ads2
-rw-r--r--gcc/ada/lib-xref-spark_specific.adb2
-rw-r--r--gcc/ada/lib-xref.adb2
-rw-r--r--gcc/ada/lib-xref.ads2
-rw-r--r--gcc/ada/lib.adb2
-rw-r--r--gcc/ada/lib.ads2
-rw-r--r--gcc/ada/libgnarl/a-astaco.adb2
-rw-r--r--gcc/ada/libgnarl/a-dispat.adb2
-rw-r--r--gcc/ada/libgnarl/a-dynpri.adb2
-rw-r--r--gcc/ada/libgnarl/a-etgrbu.ads2
-rw-r--r--gcc/ada/libgnarl/a-exetim__darwin.adb2
-rw-r--r--gcc/ada/libgnarl/a-exetim__default.ads2
-rw-r--r--gcc/ada/libgnarl/a-exetim__mingw.adb2
-rw-r--r--gcc/ada/libgnarl/a-exetim__mingw.ads2
-rw-r--r--gcc/ada/libgnarl/a-exetim__posix.adb2
-rw-r--r--gcc/ada/libgnarl/a-interr.adb2
-rw-r--r--gcc/ada/libgnarl/a-interr.ads2
-rw-r--r--gcc/ada/libgnarl/a-intnam.ads2
-rw-r--r--gcc/ada/libgnarl/a-intnam__aix.ads2
-rw-r--r--gcc/ada/libgnarl/a-intnam__darwin.ads2
-rw-r--r--gcc/ada/libgnarl/a-intnam__dragonfly.ads2
-rw-r--r--gcc/ada/libgnarl/a-intnam__dummy.ads2
-rw-r--r--gcc/ada/libgnarl/a-intnam__freebsd.ads2
-rw-r--r--gcc/ada/libgnarl/a-intnam__hpux.ads2
-rw-r--r--gcc/ada/libgnarl/a-intnam__linux.ads2
-rw-r--r--gcc/ada/libgnarl/a-intnam__lynxos.ads2
-rw-r--r--gcc/ada/libgnarl/a-intnam__mingw.ads2
-rw-r--r--gcc/ada/libgnarl/a-intnam__qnx.ads2
-rw-r--r--gcc/ada/libgnarl/a-intnam__rtems.ads2
-rw-r--r--gcc/ada/libgnarl/a-intnam__solaris.ads2
-rw-r--r--gcc/ada/libgnarl/a-intnam__vxworks.ads2
-rw-r--r--gcc/ada/libgnarl/a-reatim.adb2
-rw-r--r--gcc/ada/libgnarl/a-reatim.ads2
-rw-r--r--gcc/ada/libgnarl/a-retide.adb2
-rw-r--r--gcc/ada/libgnarl/a-retide.ads2
-rw-r--r--gcc/ada/libgnarl/a-rttiev.adb2
-rw-r--r--gcc/ada/libgnarl/a-rttiev.ads2
-rw-r--r--gcc/ada/libgnarl/a-synbar.adb2
-rw-r--r--gcc/ada/libgnarl/a-synbar.ads2
-rw-r--r--gcc/ada/libgnarl/a-synbar__posix.adb2
-rw-r--r--gcc/ada/libgnarl/a-synbar__posix.ads2
-rw-r--r--gcc/ada/libgnarl/a-sytaco.adb2
-rw-r--r--gcc/ada/libgnarl/a-sytaco.ads2
-rw-r--r--gcc/ada/libgnarl/a-tasatt.adb2
-rw-r--r--gcc/ada/libgnarl/a-tasatt.ads2
-rw-r--r--gcc/ada/libgnarl/a-taside.adb2
-rw-r--r--gcc/ada/libgnarl/a-taside.ads2
-rw-r--r--gcc/ada/libgnarl/a-tasini.adb2
-rw-r--r--gcc/ada/libgnarl/a-tasini.ads2
-rw-r--r--gcc/ada/libgnarl/a-taster.adb2
-rw-r--r--gcc/ada/libgnarl/g-boubuf.adb2
-rw-r--r--gcc/ada/libgnarl/g-boubuf.ads2
-rw-r--r--gcc/ada/libgnarl/g-boumai.ads2
-rw-r--r--gcc/ada/libgnarl/g-semaph.adb2
-rw-r--r--gcc/ada/libgnarl/g-semaph.ads2
-rw-r--r--gcc/ada/libgnarl/g-signal.adb2
-rw-r--r--gcc/ada/libgnarl/g-signal.ads2
-rw-r--r--gcc/ada/libgnarl/g-tastus.ads2
-rw-r--r--gcc/ada/libgnarl/g-thread.adb2
-rw-r--r--gcc/ada/libgnarl/g-thread.ads2
-rw-r--r--gcc/ada/libgnarl/i-vxinco.adb2
-rw-r--r--gcc/ada/libgnarl/i-vxinco.ads2
-rw-r--r--gcc/ada/libgnarl/s-inmaop.ads2
-rw-r--r--gcc/ada/libgnarl/s-inmaop__dummy.adb2
-rw-r--r--gcc/ada/libgnarl/s-inmaop__hwint.adb2
-rw-r--r--gcc/ada/libgnarl/s-inmaop__posix.adb2
-rw-r--r--gcc/ada/libgnarl/s-interr.adb2
-rw-r--r--gcc/ada/libgnarl/s-interr.ads2
-rw-r--r--gcc/ada/libgnarl/s-interr__dummy.adb2
-rw-r--r--gcc/ada/libgnarl/s-interr__hwint.adb2
-rw-r--r--gcc/ada/libgnarl/s-interr__sigaction.adb2
-rw-r--r--gcc/ada/libgnarl/s-interr__vxworks.adb2
-rw-r--r--gcc/ada/libgnarl/s-intman.ads2
-rw-r--r--gcc/ada/libgnarl/s-intman__android.adb2
-rw-r--r--gcc/ada/libgnarl/s-intman__dummy.adb2
-rw-r--r--gcc/ada/libgnarl/s-intman__lynxos.adb2
-rw-r--r--gcc/ada/libgnarl/s-intman__mingw.adb2
-rw-r--r--gcc/ada/libgnarl/s-intman__posix.adb2
-rw-r--r--gcc/ada/libgnarl/s-intman__qnx.adb2
-rw-r--r--gcc/ada/libgnarl/s-intman__rtems.adb2
-rw-r--r--gcc/ada/libgnarl/s-intman__rtems.ads2
-rw-r--r--gcc/ada/libgnarl/s-intman__solaris.adb2
-rw-r--r--gcc/ada/libgnarl/s-intman__susv3.adb2
-rw-r--r--gcc/ada/libgnarl/s-intman__vxworks.adb2
-rw-r--r--gcc/ada/libgnarl/s-intman__vxworks.ads2
-rw-r--r--gcc/ada/libgnarl/s-linux.ads2
-rw-r--r--gcc/ada/libgnarl/s-linux__alpha.ads2
-rw-r--r--gcc/ada/libgnarl/s-linux__android.ads2
-rw-r--r--gcc/ada/libgnarl/s-linux__hppa.ads2
-rw-r--r--gcc/ada/libgnarl/s-linux__loongarch.ads2
-rw-r--r--gcc/ada/libgnarl/s-linux__mips.ads2
-rw-r--r--gcc/ada/libgnarl/s-linux__riscv.ads2
-rw-r--r--gcc/ada/libgnarl/s-linux__sparc.ads2
-rw-r--r--gcc/ada/libgnarl/s-linux__x32.ads2
-rw-r--r--gcc/ada/libgnarl/s-mudido.adb2
-rw-r--r--gcc/ada/libgnarl/s-mudido__affinity.adb2
-rw-r--r--gcc/ada/libgnarl/s-osinte__aix.adb2
-rw-r--r--gcc/ada/libgnarl/s-osinte__aix.ads2
-rw-r--r--gcc/ada/libgnarl/s-osinte__android.adb2
-rw-r--r--gcc/ada/libgnarl/s-osinte__android.ads2
-rw-r--r--gcc/ada/libgnarl/s-osinte__darwin.adb2
-rw-r--r--gcc/ada/libgnarl/s-osinte__darwin.ads2
-rw-r--r--gcc/ada/libgnarl/s-osinte__dragonfly.adb2
-rw-r--r--gcc/ada/libgnarl/s-osinte__dragonfly.ads2
-rw-r--r--gcc/ada/libgnarl/s-osinte__dummy.ads2
-rw-r--r--gcc/ada/libgnarl/s-osinte__freebsd.adb2
-rw-r--r--gcc/ada/libgnarl/s-osinte__freebsd.ads2
-rw-r--r--gcc/ada/libgnarl/s-osinte__gnu.adb2
-rw-r--r--gcc/ada/libgnarl/s-osinte__gnu.ads2
-rw-r--r--gcc/ada/libgnarl/s-osinte__hpux-dce.adb2
-rw-r--r--gcc/ada/libgnarl/s-osinte__hpux-dce.ads2
-rw-r--r--gcc/ada/libgnarl/s-osinte__hpux.ads2
-rw-r--r--gcc/ada/libgnarl/s-osinte__kfreebsd-gnu.ads2
-rw-r--r--gcc/ada/libgnarl/s-osinte__linux.ads2
-rw-r--r--gcc/ada/libgnarl/s-osinte__lynxos178.adb2
-rw-r--r--gcc/ada/libgnarl/s-osinte__lynxos178e.ads2
-rw-r--r--gcc/ada/libgnarl/s-osinte__mingw.ads2
-rw-r--r--gcc/ada/libgnarl/s-osinte__posix.adb2
-rw-r--r--gcc/ada/libgnarl/s-osinte__qnx.adb2
-rw-r--r--gcc/ada/libgnarl/s-osinte__qnx.ads2
-rw-r--r--gcc/ada/libgnarl/s-osinte__rtems.adb2
-rw-r--r--gcc/ada/libgnarl/s-osinte__rtems.ads2
-rw-r--r--gcc/ada/libgnarl/s-osinte__solaris.adb2
-rw-r--r--gcc/ada/libgnarl/s-osinte__solaris.ads2
-rw-r--r--gcc/ada/libgnarl/s-osinte__vxworks.adb2
-rw-r--r--gcc/ada/libgnarl/s-osinte__vxworks.ads2
-rw-r--r--gcc/ada/libgnarl/s-osinte__x32.adb2
-rw-r--r--gcc/ada/libgnarl/s-proinf.adb2
-rw-r--r--gcc/ada/libgnarl/s-proinf.ads2
-rw-r--r--gcc/ada/libgnarl/s-putaim.adb2
-rw-r--r--gcc/ada/libgnarl/s-putaim.ads2
-rw-r--r--gcc/ada/libgnarl/s-qnx.ads2
-rw-r--r--gcc/ada/libgnarl/s-solita.adb2
-rw-r--r--gcc/ada/libgnarl/s-solita.ads2
-rw-r--r--gcc/ada/libgnarl/s-stusta.adb2
-rw-r--r--gcc/ada/libgnarl/s-stusta.ads2
-rw-r--r--gcc/ada/libgnarl/s-taasde.adb2
-rw-r--r--gcc/ada/libgnarl/s-taasde.ads2
-rw-r--r--gcc/ada/libgnarl/s-tadeca.adb2
-rw-r--r--gcc/ada/libgnarl/s-tadeca.ads2
-rw-r--r--gcc/ada/libgnarl/s-tadert.adb2
-rw-r--r--gcc/ada/libgnarl/s-tadert.ads2
-rw-r--r--gcc/ada/libgnarl/s-taenca.adb2
-rw-r--r--gcc/ada/libgnarl/s-taenca.ads2
-rw-r--r--gcc/ada/libgnarl/s-taprob.adb2
-rw-r--r--gcc/ada/libgnarl/s-taprob.ads2
-rw-r--r--gcc/ada/libgnarl/s-taprop.ads2
-rw-r--r--gcc/ada/libgnarl/s-taprop__dummy.adb2
-rw-r--r--gcc/ada/libgnarl/s-taprop__hpux-dce.adb2
-rw-r--r--gcc/ada/libgnarl/s-taprop__linux.adb2
-rw-r--r--gcc/ada/libgnarl/s-taprop__mingw.adb2
-rw-r--r--gcc/ada/libgnarl/s-taprop__posix.adb2
-rw-r--r--gcc/ada/libgnarl/s-taprop__qnx.adb2
-rw-r--r--gcc/ada/libgnarl/s-taprop__rtems.adb2
-rw-r--r--gcc/ada/libgnarl/s-taprop__solaris.adb2
-rw-r--r--gcc/ada/libgnarl/s-taprop__vxworks.adb2
-rw-r--r--gcc/ada/libgnarl/s-tarest.adb2
-rw-r--r--gcc/ada/libgnarl/s-tarest.ads2
-rw-r--r--gcc/ada/libgnarl/s-tasdeb.adb2
-rw-r--r--gcc/ada/libgnarl/s-tasdeb.ads2
-rw-r--r--gcc/ada/libgnarl/s-tasinf.adb2
-rw-r--r--gcc/ada/libgnarl/s-tasinf.ads2
-rw-r--r--gcc/ada/libgnarl/s-tasinf__linux.adb2
-rw-r--r--gcc/ada/libgnarl/s-tasinf__linux.ads2
-rw-r--r--gcc/ada/libgnarl/s-tasinf__mingw.adb2
-rw-r--r--gcc/ada/libgnarl/s-tasinf__mingw.ads2
-rw-r--r--gcc/ada/libgnarl/s-tasinf__solaris.adb2
-rw-r--r--gcc/ada/libgnarl/s-tasinf__solaris.ads2
-rw-r--r--gcc/ada/libgnarl/s-tasinf__vxworks.ads2
-rw-r--r--gcc/ada/libgnarl/s-tasini.adb2
-rw-r--r--gcc/ada/libgnarl/s-tasini.ads2
-rw-r--r--gcc/ada/libgnarl/s-taskin.adb2
-rw-r--r--gcc/ada/libgnarl/s-taskin.ads2
-rw-r--r--gcc/ada/libgnarl/s-taspri__dummy.ads2
-rw-r--r--gcc/ada/libgnarl/s-taspri__hpux-dce.ads2
-rw-r--r--gcc/ada/libgnarl/s-taspri__lynxos.ads2
-rw-r--r--gcc/ada/libgnarl/s-taspri__mingw.ads2
-rw-r--r--gcc/ada/libgnarl/s-taspri__posix-noaltstack.ads2
-rw-r--r--gcc/ada/libgnarl/s-taspri__posix.ads2
-rw-r--r--gcc/ada/libgnarl/s-taspri__solaris.ads2
-rw-r--r--gcc/ada/libgnarl/s-taspri__vxworks.ads2
-rw-r--r--gcc/ada/libgnarl/s-tasque.adb2
-rw-r--r--gcc/ada/libgnarl/s-tasque.ads2
-rw-r--r--gcc/ada/libgnarl/s-tasren.adb2
-rw-r--r--gcc/ada/libgnarl/s-tasren.ads2
-rw-r--r--gcc/ada/libgnarl/s-tasres.ads2
-rw-r--r--gcc/ada/libgnarl/s-tassta.adb2
-rw-r--r--gcc/ada/libgnarl/s-tassta.ads2
-rw-r--r--gcc/ada/libgnarl/s-tasuti.adb2
-rw-r--r--gcc/ada/libgnarl/s-tasuti.ads2
-rw-r--r--gcc/ada/libgnarl/s-tataat.adb2
-rw-r--r--gcc/ada/libgnarl/s-tataat.ads2
-rw-r--r--gcc/ada/libgnarl/s-tpinop.adb2
-rw-r--r--gcc/ada/libgnarl/s-tpinop.ads2
-rw-r--r--gcc/ada/libgnarl/s-tpoaal.adb2
-rw-r--r--gcc/ada/libgnarl/s-tpoben.adb2
-rw-r--r--gcc/ada/libgnarl/s-tpoben.ads2
-rw-r--r--gcc/ada/libgnarl/s-tpobmu.adb2
-rw-r--r--gcc/ada/libgnarl/s-tpobmu.ads2
-rw-r--r--gcc/ada/libgnarl/s-tpobop.adb2
-rw-r--r--gcc/ada/libgnarl/s-tpobop.ads2
-rw-r--r--gcc/ada/libgnarl/s-tpopmo.adb2
-rw-r--r--gcc/ada/libgnarl/s-tpopsp__posix-foreign.adb2
-rw-r--r--gcc/ada/libgnarl/s-tpopsp__posix.adb2
-rw-r--r--gcc/ada/libgnarl/s-tpopsp__solaris.adb2
-rw-r--r--gcc/ada/libgnarl/s-tpopsp__tls.adb2
-rw-r--r--gcc/ada/libgnarl/s-tpopsp__vxworks-rtp.adb2
-rw-r--r--gcc/ada/libgnarl/s-tpopsp__vxworks-tls.adb2
-rw-r--r--gcc/ada/libgnarl/s-tpopsp__vxworks.adb2
-rw-r--r--gcc/ada/libgnarl/s-tporft.adb2
-rw-r--r--gcc/ada/libgnarl/s-tposen.adb2
-rw-r--r--gcc/ada/libgnarl/s-tposen.ads2
-rw-r--r--gcc/ada/libgnarl/s-vxwext.adb2
-rw-r--r--gcc/ada/libgnarl/s-vxwext.ads2
-rw-r--r--gcc/ada/libgnarl/s-vxwext__kernel-smp.adb2
-rw-r--r--gcc/ada/libgnarl/s-vxwext__kernel.adb2
-rw-r--r--gcc/ada/libgnarl/s-vxwext__kernel.ads2
-rw-r--r--gcc/ada/libgnarl/s-vxwext__rtp-smp.adb2
-rw-r--r--gcc/ada/libgnarl/s-vxwext__rtp.adb2
-rw-r--r--gcc/ada/libgnarl/s-vxwext__rtp.ads2
-rw-r--r--gcc/ada/libgnarl/s-vxwork__aarch64.ads2
-rw-r--r--gcc/ada/libgnarl/s-vxwork__arm.ads2
-rw-r--r--gcc/ada/libgnarl/s-vxwork__ppc.ads2
-rw-r--r--gcc/ada/libgnarl/s-vxwork__x86.ads2
-rw-r--r--gcc/ada/libgnarl/thread.c2
-rw-r--r--gcc/ada/libgnat/a-assert.adb2
-rw-r--r--gcc/ada/libgnat/a-assert.ads2
-rw-r--r--gcc/ada/libgnat/a-btgbso.adb2
-rw-r--r--gcc/ada/libgnat/a-btgbso.ads2
-rw-r--r--gcc/ada/libgnat/a-calari.adb2
-rw-r--r--gcc/ada/libgnat/a-calari.ads2
-rw-r--r--gcc/ada/libgnat/a-calcon.adb2
-rw-r--r--gcc/ada/libgnat/a-calcon.ads2
-rw-r--r--gcc/ada/libgnat/a-caldel.adb2
-rw-r--r--gcc/ada/libgnat/a-caldel.ads2
-rw-r--r--gcc/ada/libgnat/a-calend.adb2
-rw-r--r--gcc/ada/libgnat/a-calend.ads2
-rw-r--r--gcc/ada/libgnat/a-calfor.adb2
-rw-r--r--gcc/ada/libgnat/a-calfor.ads2
-rw-r--r--gcc/ada/libgnat/a-catizo.adb2
-rw-r--r--gcc/ada/libgnat/a-cbdlli.adb2
-rw-r--r--gcc/ada/libgnat/a-cbdlli.ads2
-rw-r--r--gcc/ada/libgnat/a-cbhama.adb2
-rw-r--r--gcc/ada/libgnat/a-cbhama.ads2
-rw-r--r--gcc/ada/libgnat/a-cbhase.adb2
-rw-r--r--gcc/ada/libgnat/a-cbhase.ads2
-rw-r--r--gcc/ada/libgnat/a-cbmutr.adb2
-rw-r--r--gcc/ada/libgnat/a-cbmutr.ads2
-rw-r--r--gcc/ada/libgnat/a-cborma.adb2
-rw-r--r--gcc/ada/libgnat/a-cborma.ads2
-rw-r--r--gcc/ada/libgnat/a-cborse.adb2
-rw-r--r--gcc/ada/libgnat/a-cborse.ads2
-rw-r--r--gcc/ada/libgnat/a-cbprqu.adb2
-rw-r--r--gcc/ada/libgnat/a-cbprqu.ads2
-rw-r--r--gcc/ada/libgnat/a-cbsyqu.adb2
-rw-r--r--gcc/ada/libgnat/a-cbsyqu.ads2
-rw-r--r--gcc/ada/libgnat/a-cdlili.adb2
-rw-r--r--gcc/ada/libgnat/a-cdlili.ads2
-rw-r--r--gcc/ada/libgnat/a-cfdlli.ads2
-rw-r--r--gcc/ada/libgnat/a-cfhama.ads2
-rw-r--r--gcc/ada/libgnat/a-cfhase.ads2
-rw-r--r--gcc/ada/libgnat/a-cfidll.ads2
-rw-r--r--gcc/ada/libgnat/a-cfinse.ads2
-rw-r--r--gcc/ada/libgnat/a-cfinve.ads2
-rw-r--r--gcc/ada/libgnat/a-cforma.ads2
-rw-r--r--gcc/ada/libgnat/a-cforse.ads2
-rw-r--r--gcc/ada/libgnat/a-cgaaso.adb2
-rw-r--r--gcc/ada/libgnat/a-cgaaso.ads2
-rw-r--r--gcc/ada/libgnat/a-cgarso.adb2
-rw-r--r--gcc/ada/libgnat/a-cgcaso.adb2
-rw-r--r--gcc/ada/libgnat/a-chacon.adb2
-rw-r--r--gcc/ada/libgnat/a-chacon.ads2
-rw-r--r--gcc/ada/libgnat/a-chahan.adb2
-rw-r--r--gcc/ada/libgnat/a-chahan.ads2
-rw-r--r--gcc/ada/libgnat/a-chlat9.ads2
-rw-r--r--gcc/ada/libgnat/a-chtgbk.adb2
-rw-r--r--gcc/ada/libgnat/a-chtgbk.ads2
-rw-r--r--gcc/ada/libgnat/a-chtgbo.adb2
-rw-r--r--gcc/ada/libgnat/a-chtgbo.ads2
-rw-r--r--gcc/ada/libgnat/a-chtgfk.adb2
-rw-r--r--gcc/ada/libgnat/a-chtgfk.ads2
-rw-r--r--gcc/ada/libgnat/a-chtgfo.adb2
-rw-r--r--gcc/ada/libgnat/a-chtgfo.ads2
-rw-r--r--gcc/ada/libgnat/a-chtgke.adb2
-rw-r--r--gcc/ada/libgnat/a-chtgke.ads2
-rw-r--r--gcc/ada/libgnat/a-chtgop.adb2
-rw-r--r--gcc/ada/libgnat/a-chtgop.ads2
-rw-r--r--gcc/ada/libgnat/a-chzla1.ads2
-rw-r--r--gcc/ada/libgnat/a-chzla9.ads2
-rw-r--r--gcc/ada/libgnat/a-cidlli.adb2
-rw-r--r--gcc/ada/libgnat/a-cidlli.ads2
-rw-r--r--gcc/ada/libgnat/a-cihama.adb2
-rw-r--r--gcc/ada/libgnat/a-cihama.ads2
-rw-r--r--gcc/ada/libgnat/a-cihase.adb2
-rw-r--r--gcc/ada/libgnat/a-cihase.ads2
-rw-r--r--gcc/ada/libgnat/a-cimutr.adb2
-rw-r--r--gcc/ada/libgnat/a-cimutr.ads2
-rw-r--r--gcc/ada/libgnat/a-ciorma.adb2
-rw-r--r--gcc/ada/libgnat/a-ciorma.ads2
-rw-r--r--gcc/ada/libgnat/a-ciormu.adb2
-rw-r--r--gcc/ada/libgnat/a-ciormu.ads2
-rw-r--r--gcc/ada/libgnat/a-ciorse.adb2
-rw-r--r--gcc/ada/libgnat/a-ciorse.ads2
-rw-r--r--gcc/ada/libgnat/a-clrefi.adb2
-rw-r--r--gcc/ada/libgnat/a-clrefi.ads2
-rw-r--r--gcc/ada/libgnat/a-coboho.adb2
-rw-r--r--gcc/ada/libgnat/a-coboho.ads2
-rw-r--r--gcc/ada/libgnat/a-cobove.adb2
-rw-r--r--gcc/ada/libgnat/a-cobove.ads2
-rw-r--r--gcc/ada/libgnat/a-cofove.ads2
-rw-r--r--gcc/ada/libgnat/a-cofuma.ads2
-rw-r--r--gcc/ada/libgnat/a-cofuse.ads2
-rw-r--r--gcc/ada/libgnat/a-cofuve.ads2
-rw-r--r--gcc/ada/libgnat/a-cogeso.adb2
-rw-r--r--gcc/ada/libgnat/a-cogeso.ads2
-rw-r--r--gcc/ada/libgnat/a-cohama.adb2
-rw-r--r--gcc/ada/libgnat/a-cohama.ads2
-rw-r--r--gcc/ada/libgnat/a-cohase.adb2
-rw-r--r--gcc/ada/libgnat/a-cohase.ads2
-rw-r--r--gcc/ada/libgnat/a-cohata.ads2
-rw-r--r--gcc/ada/libgnat/a-coinho.adb2
-rw-r--r--gcc/ada/libgnat/a-coinho.ads2
-rw-r--r--gcc/ada/libgnat/a-coinho__shared.adb2
-rw-r--r--gcc/ada/libgnat/a-coinho__shared.ads2
-rw-r--r--gcc/ada/libgnat/a-coinve.adb2
-rw-r--r--gcc/ada/libgnat/a-coinve.ads2
-rw-r--r--gcc/ada/libgnat/a-colien.adb2
-rw-r--r--gcc/ada/libgnat/a-colien.ads2
-rw-r--r--gcc/ada/libgnat/a-colire.adb2
-rw-r--r--gcc/ada/libgnat/a-colire.ads2
-rw-r--r--gcc/ada/libgnat/a-comlin.adb2
-rw-r--r--gcc/ada/libgnat/a-comlin.ads2
-rw-r--r--gcc/ada/libgnat/a-comutr.adb2
-rw-r--r--gcc/ada/libgnat/a-comutr.ads2
-rw-r--r--gcc/ada/libgnat/a-conhel.adb2
-rw-r--r--gcc/ada/libgnat/a-conhel.ads2
-rw-r--r--gcc/ada/libgnat/a-convec.adb2
-rw-r--r--gcc/ada/libgnat/a-convec.ads2
-rw-r--r--gcc/ada/libgnat/a-coorma.adb2
-rw-r--r--gcc/ada/libgnat/a-coorma.ads2
-rw-r--r--gcc/ada/libgnat/a-coormu.adb2
-rw-r--r--gcc/ada/libgnat/a-coormu.ads2
-rw-r--r--gcc/ada/libgnat/a-coorse.adb2
-rw-r--r--gcc/ada/libgnat/a-coorse.ads2
-rw-r--r--gcc/ada/libgnat/a-coprnu.adb2
-rw-r--r--gcc/ada/libgnat/a-coprnu.ads2
-rw-r--r--gcc/ada/libgnat/a-costso.adb2
-rw-r--r--gcc/ada/libgnat/a-costso.ads2
-rw-r--r--gcc/ada/libgnat/a-crbltr.ads2
-rw-r--r--gcc/ada/libgnat/a-crbtgk.adb2
-rw-r--r--gcc/ada/libgnat/a-crbtgk.ads2
-rw-r--r--gcc/ada/libgnat/a-crbtgo.adb2
-rw-r--r--gcc/ada/libgnat/a-crbtgo.ads2
-rw-r--r--gcc/ada/libgnat/a-crdlli.adb2
-rw-r--r--gcc/ada/libgnat/a-crdlli.ads2
-rw-r--r--gcc/ada/libgnat/a-csquin.ads2
-rw-r--r--gcc/ada/libgnat/a-cuprqu.adb2
-rw-r--r--gcc/ada/libgnat/a-cuprqu.ads2
-rw-r--r--gcc/ada/libgnat/a-cusyqu.adb2
-rw-r--r--gcc/ada/libgnat/a-cusyqu.ads2
-rw-r--r--gcc/ada/libgnat/a-cwila1.ads2
-rw-r--r--gcc/ada/libgnat/a-cwila9.ads2
-rw-r--r--gcc/ada/libgnat/a-decima.adb2
-rw-r--r--gcc/ada/libgnat/a-decima.ads2
-rw-r--r--gcc/ada/libgnat/a-decima__128.ads2
-rw-r--r--gcc/ada/libgnat/a-dhfina.adb2
-rw-r--r--gcc/ada/libgnat/a-dhfina.ads2
-rw-r--r--gcc/ada/libgnat/a-diocst.adb2
-rw-r--r--gcc/ada/libgnat/a-diocst.ads2
-rw-r--r--gcc/ada/libgnat/a-direct.adb2
-rw-r--r--gcc/ada/libgnat/a-direct.ads2
-rw-r--r--gcc/ada/libgnat/a-direio.adb2
-rw-r--r--gcc/ada/libgnat/a-direio.ads2
-rw-r--r--gcc/ada/libgnat/a-dirval.adb2
-rw-r--r--gcc/ada/libgnat/a-dirval.ads2
-rw-r--r--gcc/ada/libgnat/a-dirval__mingw.adb2
-rw-r--r--gcc/ada/libgnat/a-einuoc.adb2
-rw-r--r--gcc/ada/libgnat/a-einuoc.ads2
-rw-r--r--gcc/ada/libgnat/a-elchha.adb2
-rw-r--r--gcc/ada/libgnat/a-elchha.ads2
-rw-r--r--gcc/ada/libgnat/a-envvar.adb2
-rw-r--r--gcc/ada/libgnat/a-excach.adb2
-rw-r--r--gcc/ada/libgnat/a-except.adb2
-rw-r--r--gcc/ada/libgnat/a-except.ads2
-rw-r--r--gcc/ada/libgnat/a-exctra.adb2
-rw-r--r--gcc/ada/libgnat/a-exctra.ads2
-rw-r--r--gcc/ada/libgnat/a-exexda.adb2
-rw-r--r--gcc/ada/libgnat/a-exexpr.adb2
-rw-r--r--gcc/ada/libgnat/a-exextr.adb2
-rw-r--r--gcc/ada/libgnat/a-exstat.adb2
-rw-r--r--gcc/ada/libgnat/a-finali.adb2
-rw-r--r--gcc/ada/libgnat/a-finali.ads2
-rw-r--r--gcc/ada/libgnat/a-locale.adb2
-rw-r--r--gcc/ada/libgnat/a-locale.ads2
-rw-r--r--gcc/ada/libgnat/a-nagefl.ads2
-rw-r--r--gcc/ada/libgnat/a-naliop.ads2
-rw-r--r--gcc/ada/libgnat/a-naliop__nolibm.ads2
-rw-r--r--gcc/ada/libgnat/a-nallfl.ads2
-rw-r--r--gcc/ada/libgnat/a-nallfl__wraplf.ads2
-rw-r--r--gcc/ada/libgnat/a-nalofl.ads2
-rw-r--r--gcc/ada/libgnat/a-nalofl__simd.ads2
-rw-r--r--gcc/ada/libgnat/a-nashfl.ads2
-rw-r--r--gcc/ada/libgnat/a-nashfl__wraplf.ads2
-rw-r--r--gcc/ada/libgnat/a-nbnbig.adb2
-rw-r--r--gcc/ada/libgnat/a-nbnbin.adb2
-rw-r--r--gcc/ada/libgnat/a-nbnbin__gmp.adb2
-rw-r--r--gcc/ada/libgnat/a-nbnbre.adb2
-rw-r--r--gcc/ada/libgnat/a-ngcefu.adb2
-rw-r--r--gcc/ada/libgnat/a-ngcoar.adb2
-rw-r--r--gcc/ada/libgnat/a-ngcoty.adb2
-rw-r--r--gcc/ada/libgnat/a-ngcoty.ads2
-rw-r--r--gcc/ada/libgnat/a-ngelfu.adb2
-rw-r--r--gcc/ada/libgnat/a-ngelfu.ads2
-rw-r--r--gcc/ada/libgnat/a-ngrear.adb2
-rw-r--r--gcc/ada/libgnat/a-ngrear.ads2
-rw-r--r--gcc/ada/libgnat/a-nuauco.ads2
-rw-r--r--gcc/ada/libgnat/a-nuauco__x86.ads2
-rw-r--r--gcc/ada/libgnat/a-nuaufl.ads2
-rw-r--r--gcc/ada/libgnat/a-nuaufl__simd.ads2
-rw-r--r--gcc/ada/libgnat/a-nuaufl__wraplf.ads2
-rw-r--r--gcc/ada/libgnat/a-nudira.adb2
-rw-r--r--gcc/ada/libgnat/a-nudira.ads2
-rw-r--r--gcc/ada/libgnat/a-nuflra.adb2
-rw-r--r--gcc/ada/libgnat/a-nuflra.ads2
-rw-r--r--gcc/ada/libgnat/a-numaux.ads2
-rw-r--r--gcc/ada/libgnat/a-rbtgbk.adb2
-rw-r--r--gcc/ada/libgnat/a-rbtgbk.ads2
-rw-r--r--gcc/ada/libgnat/a-rbtgbo.adb2
-rw-r--r--gcc/ada/libgnat/a-rbtgbo.ads2
-rw-r--r--gcc/ada/libgnat/a-rbtgso.adb2
-rw-r--r--gcc/ada/libgnat/a-rbtgso.ads2
-rw-r--r--gcc/ada/libgnat/a-sbecin.adb2
-rw-r--r--gcc/ada/libgnat/a-sbecin.ads2
-rw-r--r--gcc/ada/libgnat/a-sbhcin.adb2
-rw-r--r--gcc/ada/libgnat/a-sbhcin.ads2
-rw-r--r--gcc/ada/libgnat/a-sblcin.adb2
-rw-r--r--gcc/ada/libgnat/a-sblcin.ads2
-rw-r--r--gcc/ada/libgnat/a-secain.adb2
-rw-r--r--gcc/ada/libgnat/a-secain.ads2
-rw-r--r--gcc/ada/libgnat/a-sequio.adb2
-rw-r--r--gcc/ada/libgnat/a-sequio.ads2
-rw-r--r--gcc/ada/libgnat/a-sfecin.ads2
-rw-r--r--gcc/ada/libgnat/a-sfhcin.ads2
-rw-r--r--gcc/ada/libgnat/a-sflcin.ads2
-rw-r--r--gcc/ada/libgnat/a-shcain.adb2
-rw-r--r--gcc/ada/libgnat/a-shcain.ads2
-rw-r--r--gcc/ada/libgnat/a-siocst.adb2
-rw-r--r--gcc/ada/libgnat/a-siocst.ads2
-rw-r--r--gcc/ada/libgnat/a-slcain.adb2
-rw-r--r--gcc/ada/libgnat/a-slcain.ads2
-rw-r--r--gcc/ada/libgnat/a-ssicst.adb2
-rw-r--r--gcc/ada/libgnat/a-ssicst.ads2
-rw-r--r--gcc/ada/libgnat/a-stboha.adb2
-rw-r--r--gcc/ada/libgnat/a-stbubo.adb2
-rw-r--r--gcc/ada/libgnat/a-stbubo.ads2
-rw-r--r--gcc/ada/libgnat/a-stbufi.adb2
-rw-r--r--gcc/ada/libgnat/a-stbufi.ads2
-rw-r--r--gcc/ada/libgnat/a-stbufo.adb2
-rw-r--r--gcc/ada/libgnat/a-stbufo.ads2
-rw-r--r--gcc/ada/libgnat/a-stbuun.adb2
-rw-r--r--gcc/ada/libgnat/a-stbuut.adb2
-rw-r--r--gcc/ada/libgnat/a-stbuut.ads2
-rw-r--r--gcc/ada/libgnat/a-stmaco.ads2
-rw-r--r--gcc/ada/libgnat/a-storio.adb2
-rw-r--r--gcc/ada/libgnat/a-strbou.adb2
-rw-r--r--gcc/ada/libgnat/a-strbou.ads2
-rw-r--r--gcc/ada/libgnat/a-stream.adb2
-rw-r--r--gcc/ada/libgnat/a-stream.ads2
-rw-r--r--gcc/ada/libgnat/a-strfix.adb2
-rw-r--r--gcc/ada/libgnat/a-strhas.adb2
-rw-r--r--gcc/ada/libgnat/a-strmap.adb2
-rw-r--r--gcc/ada/libgnat/a-strmap.ads2
-rw-r--r--gcc/ada/libgnat/a-strsea.adb2
-rw-r--r--gcc/ada/libgnat/a-strsea.ads2
-rw-r--r--gcc/ada/libgnat/a-strsto.ads2
-rw-r--r--gcc/ada/libgnat/a-strsup.adb2
-rw-r--r--gcc/ada/libgnat/a-strsup.ads2
-rw-r--r--gcc/ada/libgnat/a-strunb.adb2
-rw-r--r--gcc/ada/libgnat/a-strunb.ads2
-rw-r--r--gcc/ada/libgnat/a-strunb__shared.adb2
-rw-r--r--gcc/ada/libgnat/a-strunb__shared.ads2
-rw-r--r--gcc/ada/libgnat/a-ststbo.adb2
-rw-r--r--gcc/ada/libgnat/a-ststbo.ads2
-rw-r--r--gcc/ada/libgnat/a-ststio.adb2
-rw-r--r--gcc/ada/libgnat/a-ststio.ads2
-rw-r--r--gcc/ada/libgnat/a-ststun.adb2
-rw-r--r--gcc/ada/libgnat/a-ststun.ads2
-rw-r--r--gcc/ada/libgnat/a-sttebu.adb2
-rw-r--r--gcc/ada/libgnat/a-stunau.adb2
-rw-r--r--gcc/ada/libgnat/a-stunau.ads2
-rw-r--r--gcc/ada/libgnat/a-stunau__shared.adb2
-rw-r--r--gcc/ada/libgnat/a-stunha.adb2
-rw-r--r--gcc/ada/libgnat/a-stuten.adb2
-rw-r--r--gcc/ada/libgnat/a-stwibo.adb2
-rw-r--r--gcc/ada/libgnat/a-stwibo.ads2
-rw-r--r--gcc/ada/libgnat/a-stwifi.adb2
-rw-r--r--gcc/ada/libgnat/a-stwiha.adb2
-rw-r--r--gcc/ada/libgnat/a-stwima.adb2
-rw-r--r--gcc/ada/libgnat/a-stwima.ads2
-rw-r--r--gcc/ada/libgnat/a-stwise.adb2
-rw-r--r--gcc/ada/libgnat/a-stwise.ads2
-rw-r--r--gcc/ada/libgnat/a-stwisu.adb2
-rw-r--r--gcc/ada/libgnat/a-stwisu.ads2
-rw-r--r--gcc/ada/libgnat/a-stwiun.adb2
-rw-r--r--gcc/ada/libgnat/a-stwiun.ads2
-rw-r--r--gcc/ada/libgnat/a-stwiun__shared.adb2
-rw-r--r--gcc/ada/libgnat/a-stwiun__shared.ads2
-rw-r--r--gcc/ada/libgnat/a-stzbou.adb2
-rw-r--r--gcc/ada/libgnat/a-stzbou.ads2
-rw-r--r--gcc/ada/libgnat/a-stzfix.adb2
-rw-r--r--gcc/ada/libgnat/a-stzhas.adb2
-rw-r--r--gcc/ada/libgnat/a-stzmap.adb2
-rw-r--r--gcc/ada/libgnat/a-stzmap.ads2
-rw-r--r--gcc/ada/libgnat/a-stzsea.adb2
-rw-r--r--gcc/ada/libgnat/a-stzsea.ads2
-rw-r--r--gcc/ada/libgnat/a-stzsup.adb2
-rw-r--r--gcc/ada/libgnat/a-stzsup.ads2
-rw-r--r--gcc/ada/libgnat/a-stzunb.adb2
-rw-r--r--gcc/ada/libgnat/a-stzunb.ads2
-rw-r--r--gcc/ada/libgnat/a-stzunb__shared.adb2
-rw-r--r--gcc/ada/libgnat/a-stzunb__shared.ads2
-rw-r--r--gcc/ada/libgnat/a-suecin.adb2
-rw-r--r--gcc/ada/libgnat/a-suecin.ads2
-rw-r--r--gcc/ada/libgnat/a-suenco.adb2
-rw-r--r--gcc/ada/libgnat/a-suenst.adb2
-rw-r--r--gcc/ada/libgnat/a-suewst.adb2
-rw-r--r--gcc/ada/libgnat/a-suezst.adb2
-rw-r--r--gcc/ada/libgnat/a-suhcin.adb2
-rw-r--r--gcc/ada/libgnat/a-suhcin.ads2
-rw-r--r--gcc/ada/libgnat/a-sulcin.adb2
-rw-r--r--gcc/ada/libgnat/a-sulcin.ads2
-rw-r--r--gcc/ada/libgnat/a-suteio.adb2
-rw-r--r--gcc/ada/libgnat/a-suteio.ads2
-rw-r--r--gcc/ada/libgnat/a-suteio__shared.adb2
-rw-r--r--gcc/ada/libgnat/a-swbwha.adb2
-rw-r--r--gcc/ada/libgnat/a-swmwco.ads2
-rw-r--r--gcc/ada/libgnat/a-swunau.adb2
-rw-r--r--gcc/ada/libgnat/a-swunau.ads2
-rw-r--r--gcc/ada/libgnat/a-swunau__shared.adb2
-rw-r--r--gcc/ada/libgnat/a-swuwha.adb2
-rw-r--r--gcc/ada/libgnat/a-swuwti.adb2
-rw-r--r--gcc/ada/libgnat/a-swuwti.ads2
-rw-r--r--gcc/ada/libgnat/a-swuwti__shared.adb2
-rw-r--r--gcc/ada/libgnat/a-szbzha.adb2
-rw-r--r--gcc/ada/libgnat/a-szmzco.ads2
-rw-r--r--gcc/ada/libgnat/a-szunau.adb2
-rw-r--r--gcc/ada/libgnat/a-szunau.ads2
-rw-r--r--gcc/ada/libgnat/a-szunau__shared.adb2
-rw-r--r--gcc/ada/libgnat/a-szuzha.adb2
-rw-r--r--gcc/ada/libgnat/a-szuzti.adb2
-rw-r--r--gcc/ada/libgnat/a-szuzti.ads2
-rw-r--r--gcc/ada/libgnat/a-szuzti__shared.adb2
-rw-r--r--gcc/ada/libgnat/a-tags.adb2
-rw-r--r--gcc/ada/libgnat/a-tags.ads2
-rw-r--r--gcc/ada/libgnat/a-teioed.adb2
-rw-r--r--gcc/ada/libgnat/a-teioed.ads2
-rw-r--r--gcc/ada/libgnat/a-textio.adb2
-rw-r--r--gcc/ada/libgnat/a-textio.ads2
-rw-r--r--gcc/ada/libgnat/a-tiboio.adb2
-rw-r--r--gcc/ada/libgnat/a-ticoau.adb2
-rw-r--r--gcc/ada/libgnat/a-ticoau.ads2
-rw-r--r--gcc/ada/libgnat/a-ticoio.adb2
-rw-r--r--gcc/ada/libgnat/a-ticoio.ads2
-rw-r--r--gcc/ada/libgnat/a-tideau.adb2
-rw-r--r--gcc/ada/libgnat/a-tideau.ads2
-rw-r--r--gcc/ada/libgnat/a-tideio.adb2
-rw-r--r--gcc/ada/libgnat/a-tideio.ads2
-rw-r--r--gcc/ada/libgnat/a-tideio__128.adb2
-rw-r--r--gcc/ada/libgnat/a-tienau.adb2
-rw-r--r--gcc/ada/libgnat/a-tienau.ads2
-rw-r--r--gcc/ada/libgnat/a-tienio.adb2
-rw-r--r--gcc/ada/libgnat/a-tifiau.adb2
-rw-r--r--gcc/ada/libgnat/a-tifiau.ads2
-rw-r--r--gcc/ada/libgnat/a-tifiio.adb2
-rw-r--r--gcc/ada/libgnat/a-tifiio__128.adb2
-rw-r--r--gcc/ada/libgnat/a-tiflau.adb2
-rw-r--r--gcc/ada/libgnat/a-tiflau.ads2
-rw-r--r--gcc/ada/libgnat/a-tiflio.adb2
-rw-r--r--gcc/ada/libgnat/a-tiflio.ads2
-rw-r--r--gcc/ada/libgnat/a-tigeau.adb2
-rw-r--r--gcc/ada/libgnat/a-tigeau.ads2
-rw-r--r--gcc/ada/libgnat/a-tigeli.adb2
-rw-r--r--gcc/ada/libgnat/a-tiinau.adb2
-rw-r--r--gcc/ada/libgnat/a-tiinau.ads2
-rw-r--r--gcc/ada/libgnat/a-tiinio.adb2
-rw-r--r--gcc/ada/libgnat/a-tiinio.ads2
-rw-r--r--gcc/ada/libgnat/a-tiinio__128.adb2
-rw-r--r--gcc/ada/libgnat/a-timoio.adb2
-rw-r--r--gcc/ada/libgnat/a-timoio.ads2
-rw-r--r--gcc/ada/libgnat/a-timoio__128.adb2
-rw-r--r--gcc/ada/libgnat/a-tiocst.adb2
-rw-r--r--gcc/ada/libgnat/a-tiocst.ads2
-rw-r--r--gcc/ada/libgnat/a-tirsfi.adb2
-rw-r--r--gcc/ada/libgnat/a-tirsfi.ads2
-rw-r--r--gcc/ada/libgnat/a-titest.adb2
-rw-r--r--gcc/ada/libgnat/a-undesu.adb2
-rw-r--r--gcc/ada/libgnat/a-wichha.adb2
-rw-r--r--gcc/ada/libgnat/a-wichun.adb2
-rw-r--r--gcc/ada/libgnat/a-wichun.ads2
-rw-r--r--gcc/ada/libgnat/a-witeio.adb2
-rw-r--r--gcc/ada/libgnat/a-witeio.ads2
-rw-r--r--gcc/ada/libgnat/a-wrstfi.adb2
-rw-r--r--gcc/ada/libgnat/a-wrstfi.ads2
-rw-r--r--gcc/ada/libgnat/a-wtcoau.adb2
-rw-r--r--gcc/ada/libgnat/a-wtcoau.ads2
-rw-r--r--gcc/ada/libgnat/a-wtcoio.adb2
-rw-r--r--gcc/ada/libgnat/a-wtcstr.adb2
-rw-r--r--gcc/ada/libgnat/a-wtcstr.ads2
-rw-r--r--gcc/ada/libgnat/a-wtdeau.adb2
-rw-r--r--gcc/ada/libgnat/a-wtdeau.ads2
-rw-r--r--gcc/ada/libgnat/a-wtdeio.adb2
-rw-r--r--gcc/ada/libgnat/a-wtdeio__128.adb2
-rw-r--r--gcc/ada/libgnat/a-wtedit.adb2
-rw-r--r--gcc/ada/libgnat/a-wtedit.ads2
-rw-r--r--gcc/ada/libgnat/a-wtenau.adb2
-rw-r--r--gcc/ada/libgnat/a-wtenau.ads2
-rw-r--r--gcc/ada/libgnat/a-wtenio.adb2
-rw-r--r--gcc/ada/libgnat/a-wtfiau.adb2
-rw-r--r--gcc/ada/libgnat/a-wtfiau.ads2
-rw-r--r--gcc/ada/libgnat/a-wtfiio.adb2
-rw-r--r--gcc/ada/libgnat/a-wtfiio__128.adb2
-rw-r--r--gcc/ada/libgnat/a-wtflau.adb2
-rw-r--r--gcc/ada/libgnat/a-wtflau.ads2
-rw-r--r--gcc/ada/libgnat/a-wtflio.adb2
-rw-r--r--gcc/ada/libgnat/a-wtgeau.adb2
-rw-r--r--gcc/ada/libgnat/a-wtgeau.ads2
-rw-r--r--gcc/ada/libgnat/a-wtinau.adb2
-rw-r--r--gcc/ada/libgnat/a-wtinau.ads2
-rw-r--r--gcc/ada/libgnat/a-wtinio.adb2
-rw-r--r--gcc/ada/libgnat/a-wtinio__128.adb2
-rw-r--r--gcc/ada/libgnat/a-wtmoio.adb2
-rw-r--r--gcc/ada/libgnat/a-wtmoio.ads2
-rw-r--r--gcc/ada/libgnat/a-wtmoio__128.adb2
-rw-r--r--gcc/ada/libgnat/a-wttest.adb2
-rw-r--r--gcc/ada/libgnat/a-wwboio.adb2
-rw-r--r--gcc/ada/libgnat/a-zchhan.adb2
-rw-r--r--gcc/ada/libgnat/a-zchuni.adb2
-rw-r--r--gcc/ada/libgnat/a-zchuni.ads2
-rw-r--r--gcc/ada/libgnat/a-zrstfi.adb2
-rw-r--r--gcc/ada/libgnat/a-zrstfi.ads2
-rw-r--r--gcc/ada/libgnat/a-ztcoau.adb2
-rw-r--r--gcc/ada/libgnat/a-ztcoio.adb2
-rw-r--r--gcc/ada/libgnat/a-ztcstr.adb2
-rw-r--r--gcc/ada/libgnat/a-ztcstr.ads2
-rw-r--r--gcc/ada/libgnat/a-ztdeau.adb2
-rw-r--r--gcc/ada/libgnat/a-ztdeau.ads2
-rw-r--r--gcc/ada/libgnat/a-ztdeio.adb2
-rw-r--r--gcc/ada/libgnat/a-ztdeio__128.adb2
-rw-r--r--gcc/ada/libgnat/a-ztedit.adb2
-rw-r--r--gcc/ada/libgnat/a-ztedit.ads2
-rw-r--r--gcc/ada/libgnat/a-ztenau.adb2
-rw-r--r--gcc/ada/libgnat/a-ztenau.ads2
-rw-r--r--gcc/ada/libgnat/a-ztenio.adb2
-rw-r--r--gcc/ada/libgnat/a-ztexio.adb2
-rw-r--r--gcc/ada/libgnat/a-ztexio.ads2
-rw-r--r--gcc/ada/libgnat/a-ztfiau.adb2
-rw-r--r--gcc/ada/libgnat/a-ztfiau.ads2
-rw-r--r--gcc/ada/libgnat/a-ztfiio.adb2
-rw-r--r--gcc/ada/libgnat/a-ztfiio__128.adb2
-rw-r--r--gcc/ada/libgnat/a-ztflau.adb2
-rw-r--r--gcc/ada/libgnat/a-ztflau.ads2
-rw-r--r--gcc/ada/libgnat/a-ztflio.adb2
-rw-r--r--gcc/ada/libgnat/a-ztgeau.adb2
-rw-r--r--gcc/ada/libgnat/a-ztgeau.ads2
-rw-r--r--gcc/ada/libgnat/a-ztinau.adb2
-rw-r--r--gcc/ada/libgnat/a-ztinau.ads2
-rw-r--r--gcc/ada/libgnat/a-ztinio.adb2
-rw-r--r--gcc/ada/libgnat/a-ztinio__128.adb2
-rw-r--r--gcc/ada/libgnat/a-ztmoio.adb2
-rw-r--r--gcc/ada/libgnat/a-ztmoio__128.adb2
-rw-r--r--gcc/ada/libgnat/a-zttest.adb2
-rw-r--r--gcc/ada/libgnat/a-zzboio.adb2
-rw-r--r--gcc/ada/libgnat/g-allein.ads2
-rw-r--r--gcc/ada/libgnat/g-alleve.adb2
-rw-r--r--gcc/ada/libgnat/g-alleve.ads2
-rw-r--r--gcc/ada/libgnat/g-alleve__hard.adb2
-rw-r--r--gcc/ada/libgnat/g-alleve__hard.ads2
-rw-r--r--gcc/ada/libgnat/g-altcon.adb2
-rw-r--r--gcc/ada/libgnat/g-altcon.ads2
-rw-r--r--gcc/ada/libgnat/g-altive.ads2
-rw-r--r--gcc/ada/libgnat/g-alveop.adb2
-rw-r--r--gcc/ada/libgnat/g-alveop.ads2
-rw-r--r--gcc/ada/libgnat/g-alvety.ads2
-rw-r--r--gcc/ada/libgnat/g-alvevi.ads2
-rw-r--r--gcc/ada/libgnat/g-arrspl.adb2
-rw-r--r--gcc/ada/libgnat/g-arrspl.ads2
-rw-r--r--gcc/ada/libgnat/g-awk.adb2
-rw-r--r--gcc/ada/libgnat/g-awk.ads2
-rw-r--r--gcc/ada/libgnat/g-binenv.adb2
-rw-r--r--gcc/ada/libgnat/g-binenv.ads2
-rw-r--r--gcc/ada/libgnat/g-binsea.adb2
-rw-r--r--gcc/ada/libgnat/g-binsea.ads2
-rw-r--r--gcc/ada/libgnat/g-brapre.ads2
-rw-r--r--gcc/ada/libgnat/g-bubsor.adb2
-rw-r--r--gcc/ada/libgnat/g-bubsor.ads2
-rw-r--r--gcc/ada/libgnat/g-busora.adb2
-rw-r--r--gcc/ada/libgnat/g-busora.ads2
-rw-r--r--gcc/ada/libgnat/g-busorg.adb2
-rw-r--r--gcc/ada/libgnat/g-busorg.ads2
-rw-r--r--gcc/ada/libgnat/g-byorma.adb2
-rw-r--r--gcc/ada/libgnat/g-byorma.ads2
-rw-r--r--gcc/ada/libgnat/g-bytswa.adb2
-rw-r--r--gcc/ada/libgnat/g-bytswa.ads2
-rw-r--r--gcc/ada/libgnat/g-calend.adb2
-rw-r--r--gcc/ada/libgnat/g-calend.ads2
-rw-r--r--gcc/ada/libgnat/g-casuti.adb2
-rw-r--r--gcc/ada/libgnat/g-casuti.ads2
-rw-r--r--gcc/ada/libgnat/g-catiio.adb2
-rw-r--r--gcc/ada/libgnat/g-catiio.ads2
-rw-r--r--gcc/ada/libgnat/g-cgi.adb2
-rw-r--r--gcc/ada/libgnat/g-cgi.ads2
-rw-r--r--gcc/ada/libgnat/g-cgicoo.adb2
-rw-r--r--gcc/ada/libgnat/g-cgicoo.ads2
-rw-r--r--gcc/ada/libgnat/g-cgideb.adb2
-rw-r--r--gcc/ada/libgnat/g-cgideb.ads2
-rw-r--r--gcc/ada/libgnat/g-comlin.adb2
-rw-r--r--gcc/ada/libgnat/g-comlin.ads2
-rw-r--r--gcc/ada/libgnat/g-comver.adb2
-rw-r--r--gcc/ada/libgnat/g-comver.ads2
-rw-r--r--gcc/ada/libgnat/g-cppexc.adb2
-rw-r--r--gcc/ada/libgnat/g-cppexc.ads2
-rw-r--r--gcc/ada/libgnat/g-crc32.adb2
-rw-r--r--gcc/ada/libgnat/g-crc32.ads2
-rw-r--r--gcc/ada/libgnat/g-ctrl_c.adb2
-rw-r--r--gcc/ada/libgnat/g-ctrl_c.ads2
-rw-r--r--gcc/ada/libgnat/g-curexc.ads2
-rw-r--r--gcc/ada/libgnat/g-debpoo.adb2
-rw-r--r--gcc/ada/libgnat/g-debpoo.ads2
-rw-r--r--gcc/ada/libgnat/g-debuti.adb2
-rw-r--r--gcc/ada/libgnat/g-debuti.ads2
-rw-r--r--gcc/ada/libgnat/g-decstr.adb2
-rw-r--r--gcc/ada/libgnat/g-decstr.ads2
-rw-r--r--gcc/ada/libgnat/g-deutst.ads2
-rw-r--r--gcc/ada/libgnat/g-diopit.adb2
-rw-r--r--gcc/ada/libgnat/g-diopit.ads2
-rw-r--r--gcc/ada/libgnat/g-dirope.adb2
-rw-r--r--gcc/ada/libgnat/g-dirope.ads2
-rw-r--r--gcc/ada/libgnat/g-dynhta.adb2
-rw-r--r--gcc/ada/libgnat/g-dynhta.ads2
-rw-r--r--gcc/ada/libgnat/g-dyntab.adb2
-rw-r--r--gcc/ada/libgnat/g-dyntab.ads2
-rw-r--r--gcc/ada/libgnat/g-eacodu.adb2
-rw-r--r--gcc/ada/libgnat/g-encstr.adb2
-rw-r--r--gcc/ada/libgnat/g-encstr.ads2
-rw-r--r--gcc/ada/libgnat/g-enutst.ads2
-rw-r--r--gcc/ada/libgnat/g-excact.adb2
-rw-r--r--gcc/ada/libgnat/g-excact.ads2
-rw-r--r--gcc/ada/libgnat/g-except.ads2
-rw-r--r--gcc/ada/libgnat/g-exctra.adb2
-rw-r--r--gcc/ada/libgnat/g-exctra.ads2
-rw-r--r--gcc/ada/libgnat/g-expect.adb2
-rw-r--r--gcc/ada/libgnat/g-expect.ads2
-rw-r--r--gcc/ada/libgnat/g-exptty.adb2
-rw-r--r--gcc/ada/libgnat/g-exptty.ads2
-rw-r--r--gcc/ada/libgnat/g-flocon.ads2
-rw-r--r--gcc/ada/libgnat/g-forstr.adb2
-rw-r--r--gcc/ada/libgnat/g-forstr.ads2
-rw-r--r--gcc/ada/libgnat/g-gfmafu.ads2
-rw-r--r--gcc/ada/libgnat/g-graphs.adb2
-rw-r--r--gcc/ada/libgnat/g-graphs.ads2
-rw-r--r--gcc/ada/libgnat/g-heasor.adb2
-rw-r--r--gcc/ada/libgnat/g-heasor.ads2
-rw-r--r--gcc/ada/libgnat/g-hesora.adb2
-rw-r--r--gcc/ada/libgnat/g-hesora.ads2
-rw-r--r--gcc/ada/libgnat/g-hesorg.adb2
-rw-r--r--gcc/ada/libgnat/g-hesorg.ads2
-rw-r--r--gcc/ada/libgnat/g-htable.adb2
-rw-r--r--gcc/ada/libgnat/g-htable.ads2
-rw-r--r--gcc/ada/libgnat/g-io.adb2
-rw-r--r--gcc/ada/libgnat/g-io.ads2
-rw-r--r--gcc/ada/libgnat/g-io_aux.adb2
-rw-r--r--gcc/ada/libgnat/g-io_aux.ads2
-rw-r--r--gcc/ada/libgnat/g-lists.adb2
-rw-r--r--gcc/ada/libgnat/g-lists.ads2
-rw-r--r--gcc/ada/libgnat/g-locfil.adb2
-rw-r--r--gcc/ada/libgnat/g-locfil.ads2
-rw-r--r--gcc/ada/libgnat/g-mbdira.adb2
-rw-r--r--gcc/ada/libgnat/g-mbdira.ads2
-rw-r--r--gcc/ada/libgnat/g-mbflra.adb2
-rw-r--r--gcc/ada/libgnat/g-mbflra.ads2
-rw-r--r--gcc/ada/libgnat/g-md5.adb2
-rw-r--r--gcc/ada/libgnat/g-md5.ads2
-rw-r--r--gcc/ada/libgnat/g-memdum.adb2
-rw-r--r--gcc/ada/libgnat/g-memdum.ads2
-rw-r--r--gcc/ada/libgnat/g-moreex.adb2
-rw-r--r--gcc/ada/libgnat/g-moreex.ads2
-rw-r--r--gcc/ada/libgnat/g-os_lib.adb2
-rw-r--r--gcc/ada/libgnat/g-os_lib.ads2
-rw-r--r--gcc/ada/libgnat/g-pehage.adb2
-rw-r--r--gcc/ada/libgnat/g-pehage.ads2
-rw-r--r--gcc/ada/libgnat/g-rannum.adb2
-rw-r--r--gcc/ada/libgnat/g-rannum.ads2
-rw-r--r--gcc/ada/libgnat/g-regexp.adb2
-rw-r--r--gcc/ada/libgnat/g-regexp.ads2
-rw-r--r--gcc/ada/libgnat/g-regist.adb2
-rw-r--r--gcc/ada/libgnat/g-regist.ads2
-rw-r--r--gcc/ada/libgnat/g-regpat.adb2
-rw-r--r--gcc/ada/libgnat/g-regpat.ads2
-rw-r--r--gcc/ada/libgnat/g-rewdat.adb2
-rw-r--r--gcc/ada/libgnat/g-rewdat.ads2
-rw-r--r--gcc/ada/libgnat/g-sechas.adb2
-rw-r--r--gcc/ada/libgnat/g-sechas.ads2
-rw-r--r--gcc/ada/libgnat/g-sehamd.adb2
-rw-r--r--gcc/ada/libgnat/g-sehamd.ads2
-rw-r--r--gcc/ada/libgnat/g-sehash.adb2
-rw-r--r--gcc/ada/libgnat/g-sehash.ads2
-rw-r--r--gcc/ada/libgnat/g-sercom.adb2
-rw-r--r--gcc/ada/libgnat/g-sercom.ads2
-rw-r--r--gcc/ada/libgnat/g-sercom__linux.adb2
-rw-r--r--gcc/ada/libgnat/g-sercom__mingw.adb2
-rw-r--r--gcc/ada/libgnat/g-sestin.ads2
-rw-r--r--gcc/ada/libgnat/g-sets.adb2
-rw-r--r--gcc/ada/libgnat/g-sets.ads2
-rw-r--r--gcc/ada/libgnat/g-sha1.adb2
-rw-r--r--gcc/ada/libgnat/g-sha1.ads2
-rw-r--r--gcc/ada/libgnat/g-sha224.ads2
-rw-r--r--gcc/ada/libgnat/g-sha256.ads2
-rw-r--r--gcc/ada/libgnat/g-sha384.ads2
-rw-r--r--gcc/ada/libgnat/g-sha512.ads2
-rw-r--r--gcc/ada/libgnat/g-shsh32.adb2
-rw-r--r--gcc/ada/libgnat/g-shsh32.ads2
-rw-r--r--gcc/ada/libgnat/g-shsh64.adb2
-rw-r--r--gcc/ada/libgnat/g-shsh64.ads2
-rw-r--r--gcc/ada/libgnat/g-shshco.adb2
-rw-r--r--gcc/ada/libgnat/g-shshco.ads2
-rw-r--r--gcc/ada/libgnat/g-soccon.ads2
-rw-r--r--gcc/ada/libgnat/g-socket.adb2
-rw-r--r--gcc/ada/libgnat/g-socket.ads2
-rw-r--r--gcc/ada/libgnat/g-socket__dummy.adb2
-rw-r--r--gcc/ada/libgnat/g-socket__dummy.ads2
-rw-r--r--gcc/ada/libgnat/g-socpol.adb2
-rw-r--r--gcc/ada/libgnat/g-socpol.ads2
-rw-r--r--gcc/ada/libgnat/g-socpol__dummy.adb2
-rw-r--r--gcc/ada/libgnat/g-socpol__dummy.ads2
-rw-r--r--gcc/ada/libgnat/g-socthi.adb2
-rw-r--r--gcc/ada/libgnat/g-socthi.ads2
-rw-r--r--gcc/ada/libgnat/g-socthi__dummy.adb2
-rw-r--r--gcc/ada/libgnat/g-socthi__dummy.ads2
-rw-r--r--gcc/ada/libgnat/g-socthi__mingw.adb2
-rw-r--r--gcc/ada/libgnat/g-socthi__mingw.ads2
-rw-r--r--gcc/ada/libgnat/g-socthi__vxworks.adb2
-rw-r--r--gcc/ada/libgnat/g-socthi__vxworks.ads2
-rw-r--r--gcc/ada/libgnat/g-soliop.ads2
-rw-r--r--gcc/ada/libgnat/g-soliop__lynxos.ads2
-rw-r--r--gcc/ada/libgnat/g-soliop__mingw.ads2
-rw-r--r--gcc/ada/libgnat/g-soliop__qnx.ads2
-rw-r--r--gcc/ada/libgnat/g-soliop__solaris.ads2
-rw-r--r--gcc/ada/libgnat/g-sopowa.adb2
-rw-r--r--gcc/ada/libgnat/g-sopowa__mingw.adb2
-rw-r--r--gcc/ada/libgnat/g-sopowa__posix.adb2
-rw-r--r--gcc/ada/libgnat/g-sothco.adb2
-rw-r--r--gcc/ada/libgnat/g-sothco.ads2
-rw-r--r--gcc/ada/libgnat/g-sothco__dummy.adb2
-rw-r--r--gcc/ada/libgnat/g-sothco__dummy.ads2
-rw-r--r--gcc/ada/libgnat/g-souinf.ads2
-rw-r--r--gcc/ada/libgnat/g-spchge.adb2
-rw-r--r--gcc/ada/libgnat/g-spchge.ads2
-rw-r--r--gcc/ada/libgnat/g-speche.adb2
-rw-r--r--gcc/ada/libgnat/g-speche.ads2
-rw-r--r--gcc/ada/libgnat/g-spipat.adb2
-rw-r--r--gcc/ada/libgnat/g-spipat.ads2
-rw-r--r--gcc/ada/libgnat/g-spitbo.adb2
-rw-r--r--gcc/ada/libgnat/g-spitbo.ads2
-rw-r--r--gcc/ada/libgnat/g-spogwa.adb2
-rw-r--r--gcc/ada/libgnat/g-spogwa.ads2
-rw-r--r--gcc/ada/libgnat/g-sptabo.ads2
-rw-r--r--gcc/ada/libgnat/g-sptain.ads2
-rw-r--r--gcc/ada/libgnat/g-sptavs.ads2
-rw-r--r--gcc/ada/libgnat/g-sse.ads2
-rw-r--r--gcc/ada/libgnat/g-ssvety.ads2
-rw-r--r--gcc/ada/libgnat/g-sthcso.adb2
-rw-r--r--gcc/ada/libgnat/g-stheme.adb2
-rw-r--r--gcc/ada/libgnat/g-strhas.ads2
-rw-r--r--gcc/ada/libgnat/g-string.adb2
-rw-r--r--gcc/ada/libgnat/g-string.ads2
-rw-r--r--gcc/ada/libgnat/g-strspl.ads2
-rw-r--r--gcc/ada/libgnat/g-stseme.adb2
-rw-r--r--gcc/ada/libgnat/g-stsifd__sockets.adb2
-rw-r--r--gcc/ada/libgnat/g-table.adb2
-rw-r--r--gcc/ada/libgnat/g-table.ads2
-rw-r--r--gcc/ada/libgnat/g-tasloc.adb2
-rw-r--r--gcc/ada/libgnat/g-tasloc.ads2
-rw-r--r--gcc/ada/libgnat/g-timsta.adb2
-rw-r--r--gcc/ada/libgnat/g-timsta.ads2
-rw-r--r--gcc/ada/libgnat/g-traceb.adb2
-rw-r--r--gcc/ada/libgnat/g-traceb.ads2
-rw-r--r--gcc/ada/libgnat/g-trasym.adb2
-rw-r--r--gcc/ada/libgnat/g-trasym.ads2
-rw-r--r--gcc/ada/libgnat/g-tty.adb2
-rw-r--r--gcc/ada/libgnat/g-tty.ads2
-rw-r--r--gcc/ada/libgnat/g-u3spch.adb2
-rw-r--r--gcc/ada/libgnat/g-u3spch.ads2
-rw-r--r--gcc/ada/libgnat/g-utf_32.adb2
-rw-r--r--gcc/ada/libgnat/g-utf_32.ads2
-rw-r--r--gcc/ada/libgnat/g-wispch.adb2
-rw-r--r--gcc/ada/libgnat/g-wispch.ads2
-rw-r--r--gcc/ada/libgnat/g-wistsp.ads2
-rw-r--r--gcc/ada/libgnat/g-zspche.adb2
-rw-r--r--gcc/ada/libgnat/g-zspche.ads2
-rw-r--r--gcc/ada/libgnat/g-zstspl.ads2
-rw-r--r--gcc/ada/libgnat/gnat.ads2
-rw-r--r--gcc/ada/libgnat/i-c.adb2
-rw-r--r--gcc/ada/libgnat/i-cexten.ads2
-rw-r--r--gcc/ada/libgnat/i-cexten__128.ads2
-rw-r--r--gcc/ada/libgnat/i-cheri.adb2
-rw-r--r--gcc/ada/libgnat/i-cheri.ads2
-rw-r--r--gcc/ada/libgnat/i-cobol.adb2
-rw-r--r--gcc/ada/libgnat/i-cobol.ads2
-rw-r--r--gcc/ada/libgnat/i-cpoint.adb2
-rw-r--r--gcc/ada/libgnat/i-cpoint.ads2
-rw-r--r--gcc/ada/libgnat/i-cstrea.adb2
-rw-r--r--gcc/ada/libgnat/i-cstrea.ads2
-rw-r--r--gcc/ada/libgnat/i-cstrin.adb2
-rw-r--r--gcc/ada/libgnat/i-cstrin.ads2
-rw-r--r--gcc/ada/libgnat/i-fortra.adb2
-rw-r--r--gcc/ada/libgnat/i-pacdec.adb2
-rw-r--r--gcc/ada/libgnat/i-pacdec.ads2
-rw-r--r--gcc/ada/libgnat/i-vxwoio.adb2
-rw-r--r--gcc/ada/libgnat/i-vxwoio.ads2
-rw-r--r--gcc/ada/libgnat/i-vxwork.ads2
-rw-r--r--gcc/ada/libgnat/i-vxwork__x86.ads2
-rw-r--r--gcc/ada/libgnat/interfac.ads2
-rw-r--r--gcc/ada/libgnat/interfac__2020.ads2
-rw-r--r--gcc/ada/libgnat/memtrack.adb2
-rw-r--r--gcc/ada/libgnat/s-addima.adb2
-rw-r--r--gcc/ada/libgnat/s-addima.ads2
-rw-r--r--gcc/ada/libgnat/s-addope.adb2
-rw-r--r--gcc/ada/libgnat/s-addope.ads2
-rw-r--r--gcc/ada/libgnat/s-aoinar.adb2
-rw-r--r--gcc/ada/libgnat/s-aoinar.ads2
-rw-r--r--gcc/ada/libgnat/s-aomoar.adb2
-rw-r--r--gcc/ada/libgnat/s-aomoar.ads2
-rw-r--r--gcc/ada/libgnat/s-aotase.adb2
-rw-r--r--gcc/ada/libgnat/s-aotase.ads2
-rw-r--r--gcc/ada/libgnat/s-aridou.adb2
-rw-r--r--gcc/ada/libgnat/s-aridou.ads2
-rw-r--r--gcc/ada/libgnat/s-arit128.adb2
-rw-r--r--gcc/ada/libgnat/s-arit128.ads2
-rw-r--r--gcc/ada/libgnat/s-arit32.adb2
-rw-r--r--gcc/ada/libgnat/s-arit32.ads2
-rw-r--r--gcc/ada/libgnat/s-arit64.adb2
-rw-r--r--gcc/ada/libgnat/s-arit64.ads2
-rw-r--r--gcc/ada/libgnat/s-assert.adb2
-rw-r--r--gcc/ada/libgnat/s-assert.ads2
-rw-r--r--gcc/ada/libgnat/s-atacco.adb2
-rw-r--r--gcc/ada/libgnat/s-atacco.ads2
-rw-r--r--gcc/ada/libgnat/s-atocou.adb2
-rw-r--r--gcc/ada/libgnat/s-atocou.ads2
-rw-r--r--gcc/ada/libgnat/s-atocou__builtin.adb2
-rw-r--r--gcc/ada/libgnat/s-atoope.ads2
-rw-r--r--gcc/ada/libgnat/s-atopex.adb2
-rw-r--r--gcc/ada/libgnat/s-atopex.ads2
-rw-r--r--gcc/ada/libgnat/s-atopri.adb2
-rw-r--r--gcc/ada/libgnat/s-atopri.ads2
-rw-r--r--gcc/ada/libgnat/s-atopri__32.ads2
-rw-r--r--gcc/ada/libgnat/s-auxdec.adb2
-rw-r--r--gcc/ada/libgnat/s-auxdec.ads2
-rw-r--r--gcc/ada/libgnat/s-bignum.adb2
-rw-r--r--gcc/ada/libgnat/s-bignum.ads2
-rw-r--r--gcc/ada/libgnat/s-bitfie.ads2
-rw-r--r--gcc/ada/libgnat/s-bitops.adb2
-rw-r--r--gcc/ada/libgnat/s-bitops.ads2
-rw-r--r--gcc/ada/libgnat/s-bituti.adb2
-rw-r--r--gcc/ada/libgnat/s-bituti.ads2
-rw-r--r--gcc/ada/libgnat/s-boarop.ads2
-rw-r--r--gcc/ada/libgnat/s-boustr.adb2
-rw-r--r--gcc/ada/libgnat/s-boustr.ads2
-rw-r--r--gcc/ada/libgnat/s-bytswa.ads2
-rw-r--r--gcc/ada/libgnat/s-carsi8.adb2
-rw-r--r--gcc/ada/libgnat/s-carsi8.ads2
-rw-r--r--gcc/ada/libgnat/s-carun8.adb2
-rw-r--r--gcc/ada/libgnat/s-carun8.ads2
-rw-r--r--gcc/ada/libgnat/s-casi128.adb2
-rw-r--r--gcc/ada/libgnat/s-casi128.ads2
-rw-r--r--gcc/ada/libgnat/s-casi16.adb2
-rw-r--r--gcc/ada/libgnat/s-casi16.ads2
-rw-r--r--gcc/ada/libgnat/s-casi32.adb2
-rw-r--r--gcc/ada/libgnat/s-casi32.ads2
-rw-r--r--gcc/ada/libgnat/s-casi64.adb2
-rw-r--r--gcc/ada/libgnat/s-casi64.ads2
-rw-r--r--gcc/ada/libgnat/s-casuti.adb2
-rw-r--r--gcc/ada/libgnat/s-casuti.ads2
-rw-r--r--gcc/ada/libgnat/s-caun128.adb2
-rw-r--r--gcc/ada/libgnat/s-caun128.ads2
-rw-r--r--gcc/ada/libgnat/s-caun16.adb2
-rw-r--r--gcc/ada/libgnat/s-caun16.ads2
-rw-r--r--gcc/ada/libgnat/s-caun32.adb2
-rw-r--r--gcc/ada/libgnat/s-caun32.ads2
-rw-r--r--gcc/ada/libgnat/s-caun64.adb2
-rw-r--r--gcc/ada/libgnat/s-caun64.ads2
-rw-r--r--gcc/ada/libgnat/s-chepoo.ads2
-rw-r--r--gcc/ada/libgnat/s-commun.adb2
-rw-r--r--gcc/ada/libgnat/s-commun.ads2
-rw-r--r--gcc/ada/libgnat/s-conca2.adb2
-rw-r--r--gcc/ada/libgnat/s-conca2.ads2
-rw-r--r--gcc/ada/libgnat/s-conca3.adb2
-rw-r--r--gcc/ada/libgnat/s-conca3.ads2
-rw-r--r--gcc/ada/libgnat/s-conca4.adb2
-rw-r--r--gcc/ada/libgnat/s-conca4.ads2
-rw-r--r--gcc/ada/libgnat/s-conca5.adb2
-rw-r--r--gcc/ada/libgnat/s-conca5.ads2
-rw-r--r--gcc/ada/libgnat/s-conca6.adb2
-rw-r--r--gcc/ada/libgnat/s-conca6.ads2
-rw-r--r--gcc/ada/libgnat/s-conca7.adb2
-rw-r--r--gcc/ada/libgnat/s-conca7.ads2
-rw-r--r--gcc/ada/libgnat/s-conca8.adb2
-rw-r--r--gcc/ada/libgnat/s-conca8.ads2
-rw-r--r--gcc/ada/libgnat/s-conca9.adb2
-rw-r--r--gcc/ada/libgnat/s-conca9.ads2
-rw-r--r--gcc/ada/libgnat/s-crc32.adb2
-rw-r--r--gcc/ada/libgnat/s-crc32.ads2
-rw-r--r--gcc/ada/libgnat/s-crtl.ads2
-rw-r--r--gcc/ada/libgnat/s-dfmkio.ads2
-rw-r--r--gcc/ada/libgnat/s-dfmopr.ads2
-rw-r--r--gcc/ada/libgnat/s-dgmgop.ads2
-rw-r--r--gcc/ada/libgnat/s-diflio.adb2
-rw-r--r--gcc/ada/libgnat/s-diflio.ads2
-rw-r--r--gcc/ada/libgnat/s-diflmk.ads2
-rw-r--r--gcc/ada/libgnat/s-digemk.ads2
-rw-r--r--gcc/ada/libgnat/s-diinio.adb2
-rw-r--r--gcc/ada/libgnat/s-diinio.ads2
-rw-r--r--gcc/ada/libgnat/s-dilomk.ads2
-rw-r--r--gcc/ada/libgnat/s-dim.ads2
-rw-r--r--gcc/ada/libgnat/s-dimkio.ads2
-rw-r--r--gcc/ada/libgnat/s-dimmks.ads2
-rw-r--r--gcc/ada/libgnat/s-direio.adb2
-rw-r--r--gcc/ada/libgnat/s-direio.ads2
-rw-r--r--gcc/ada/libgnat/s-dlmkio.ads2
-rw-r--r--gcc/ada/libgnat/s-dlmopr.ads2
-rw-r--r--gcc/ada/libgnat/s-dmotpr.ads2
-rw-r--r--gcc/ada/libgnat/s-dorepr.adb2
-rw-r--r--gcc/ada/libgnat/s-dorepr__fma.adb2
-rw-r--r--gcc/ada/libgnat/s-dourea.adb2
-rw-r--r--gcc/ada/libgnat/s-dourea.ads2
-rw-r--r--gcc/ada/libgnat/s-dsaser.ads2
-rw-r--r--gcc/ada/libgnat/s-dwalin.adb2
-rw-r--r--gcc/ada/libgnat/s-dwalin.ads2
-rw-r--r--gcc/ada/libgnat/s-elaall.adb2
-rw-r--r--gcc/ada/libgnat/s-elaall.ads2
-rw-r--r--gcc/ada/libgnat/s-excdeb.adb2
-rw-r--r--gcc/ada/libgnat/s-excdeb.ads2
-rw-r--r--gcc/ada/libgnat/s-except.adb2
-rw-r--r--gcc/ada/libgnat/s-except.ads2
-rw-r--r--gcc/ada/libgnat/s-excmac__arm.adb2
-rw-r--r--gcc/ada/libgnat/s-excmac__arm.ads2
-rw-r--r--gcc/ada/libgnat/s-excmac__gcc.adb2
-rw-r--r--gcc/ada/libgnat/s-excmac__gcc.ads2
-rw-r--r--gcc/ada/libgnat/s-exctab.adb2
-rw-r--r--gcc/ada/libgnat/s-exctab.ads2
-rw-r--r--gcc/ada/libgnat/s-exctra.adb2
-rw-r--r--gcc/ada/libgnat/s-exctra.ads2
-rw-r--r--gcc/ada/libgnat/s-exnflt.ads2
-rw-r--r--gcc/ada/libgnat/s-exnint.adb2
-rw-r--r--gcc/ada/libgnat/s-exnint.ads2
-rw-r--r--gcc/ada/libgnat/s-exnlfl.ads2
-rw-r--r--gcc/ada/libgnat/s-exnllf.adb2
-rw-r--r--gcc/ada/libgnat/s-exnllf.ads2
-rw-r--r--gcc/ada/libgnat/s-exnlli.adb2
-rw-r--r--gcc/ada/libgnat/s-exnlli.ads2
-rw-r--r--gcc/ada/libgnat/s-exnllli.ads2
-rw-r--r--gcc/ada/libgnat/s-expint.adb2
-rw-r--r--gcc/ada/libgnat/s-expint.ads2
-rw-r--r--gcc/ada/libgnat/s-explli.adb2
-rw-r--r--gcc/ada/libgnat/s-explli.ads2
-rw-r--r--gcc/ada/libgnat/s-expllli.ads2
-rw-r--r--gcc/ada/libgnat/s-explllu.ads2
-rw-r--r--gcc/ada/libgnat/s-expllu.adb2
-rw-r--r--gcc/ada/libgnat/s-expllu.ads2
-rw-r--r--gcc/ada/libgnat/s-expmod.adb2
-rw-r--r--gcc/ada/libgnat/s-expmod.ads2
-rw-r--r--gcc/ada/libgnat/s-exponn.adb2
-rw-r--r--gcc/ada/libgnat/s-exponn.ads2
-rw-r--r--gcc/ada/libgnat/s-exponr.adb2
-rw-r--r--gcc/ada/libgnat/s-exponr.ads2
-rw-r--r--gcc/ada/libgnat/s-expont.adb2
-rw-r--r--gcc/ada/libgnat/s-expont.ads2
-rw-r--r--gcc/ada/libgnat/s-exponu.adb2
-rw-r--r--gcc/ada/libgnat/s-exponu.ads2
-rw-r--r--gcc/ada/libgnat/s-expuns.adb2
-rw-r--r--gcc/ada/libgnat/s-expuns.ads2
-rw-r--r--gcc/ada/libgnat/s-fatflt.ads2
-rw-r--r--gcc/ada/libgnat/s-fatgen.adb2
-rw-r--r--gcc/ada/libgnat/s-fatgen.ads2
-rw-r--r--gcc/ada/libgnat/s-fatlfl.ads2
-rw-r--r--gcc/ada/libgnat/s-fatllf.ads2
-rw-r--r--gcc/ada/libgnat/s-ficobl.ads2
-rw-r--r--gcc/ada/libgnat/s-filatt.ads2
-rw-r--r--gcc/ada/libgnat/s-fileio.adb2
-rw-r--r--gcc/ada/libgnat/s-fileio.ads2
-rw-r--r--gcc/ada/libgnat/s-finmas.adb2
-rw-r--r--gcc/ada/libgnat/s-finmas.ads2
-rw-r--r--gcc/ada/libgnat/s-finroo.adb2
-rw-r--r--gcc/ada/libgnat/s-finroo.ads2
-rw-r--r--gcc/ada/libgnat/s-flocon.adb2
-rw-r--r--gcc/ada/libgnat/s-flocon.ads2
-rw-r--r--gcc/ada/libgnat/s-flocon__none.adb2
-rw-r--r--gcc/ada/libgnat/s-fode128.ads2
-rw-r--r--gcc/ada/libgnat/s-fode32.ads2
-rw-r--r--gcc/ada/libgnat/s-fode64.ads2
-rw-r--r--gcc/ada/libgnat/s-fofi128.ads2
-rw-r--r--gcc/ada/libgnat/s-fofi32.ads2
-rw-r--r--gcc/ada/libgnat/s-fofi64.ads2
-rw-r--r--gcc/ada/libgnat/s-fore_d.adb2
-rw-r--r--gcc/ada/libgnat/s-fore_d.ads2
-rw-r--r--gcc/ada/libgnat/s-fore_f.adb2
-rw-r--r--gcc/ada/libgnat/s-fore_f.ads2
-rw-r--r--gcc/ada/libgnat/s-forrea.adb2
-rw-r--r--gcc/ada/libgnat/s-forrea.ads2
-rw-r--r--gcc/ada/libgnat/s-gearop.adb2
-rw-r--r--gcc/ada/libgnat/s-gearop.ads2
-rw-r--r--gcc/ada/libgnat/s-genbig.adb2
-rw-r--r--gcc/ada/libgnat/s-genbig.ads2
-rw-r--r--gcc/ada/libgnat/s-geveop.adb2
-rw-r--r--gcc/ada/libgnat/s-geveop.ads2
-rw-r--r--gcc/ada/libgnat/s-gloloc.adb2
-rw-r--r--gcc/ada/libgnat/s-gloloc.ads2
-rw-r--r--gcc/ada/libgnat/s-gloloc__mingw.adb2
-rw-r--r--gcc/ada/libgnat/s-htable.adb2
-rw-r--r--gcc/ada/libgnat/s-htable.ads2
-rw-r--r--gcc/ada/libgnat/s-imageb.adb2
-rw-r--r--gcc/ada/libgnat/s-imageb.ads2
-rw-r--r--gcc/ada/libgnat/s-imaged.adb2
-rw-r--r--gcc/ada/libgnat/s-imaged.ads2
-rw-r--r--gcc/ada/libgnat/s-imagef.adb2
-rw-r--r--gcc/ada/libgnat/s-imagef.ads2
-rw-r--r--gcc/ada/libgnat/s-imagei.adb2
-rw-r--r--gcc/ada/libgnat/s-imagei.ads2
-rw-r--r--gcc/ada/libgnat/s-imagen.adb2
-rw-r--r--gcc/ada/libgnat/s-imagen.ads2
-rw-r--r--gcc/ada/libgnat/s-imager.adb2
-rw-r--r--gcc/ada/libgnat/s-imager.ads2
-rw-r--r--gcc/ada/libgnat/s-imageu.adb2
-rw-r--r--gcc/ada/libgnat/s-imageu.ads2
-rw-r--r--gcc/ada/libgnat/s-imagew.adb2
-rw-r--r--gcc/ada/libgnat/s-imagew.ads2
-rw-r--r--gcc/ada/libgnat/s-imde128.ads2
-rw-r--r--gcc/ada/libgnat/s-imde32.ads2
-rw-r--r--gcc/ada/libgnat/s-imde64.ads2
-rw-r--r--gcc/ada/libgnat/s-imen16.ads2
-rw-r--r--gcc/ada/libgnat/s-imen32.ads2
-rw-r--r--gcc/ada/libgnat/s-imenu8.ads2
-rw-r--r--gcc/ada/libgnat/s-imfi128.ads2
-rw-r--r--gcc/ada/libgnat/s-imfi32.ads2
-rw-r--r--gcc/ada/libgnat/s-imfi64.ads2
-rw-r--r--gcc/ada/libgnat/s-imgbiu.adb2
-rw-r--r--gcc/ada/libgnat/s-imgbiu.ads2
-rw-r--r--gcc/ada/libgnat/s-imgboo.adb2
-rw-r--r--gcc/ada/libgnat/s-imgboo.ads2
-rw-r--r--gcc/ada/libgnat/s-imgcha.adb2
-rw-r--r--gcc/ada/libgnat/s-imgcha.ads2
-rw-r--r--gcc/ada/libgnat/s-imgflt.ads2
-rw-r--r--gcc/ada/libgnat/s-imgint.adb2
-rw-r--r--gcc/ada/libgnat/s-imgint.ads2
-rw-r--r--gcc/ada/libgnat/s-imglfl.ads2
-rw-r--r--gcc/ada/libgnat/s-imgllb.adb2
-rw-r--r--gcc/ada/libgnat/s-imgllb.ads2
-rw-r--r--gcc/ada/libgnat/s-imgllf.ads2
-rw-r--r--gcc/ada/libgnat/s-imglli.adb2
-rw-r--r--gcc/ada/libgnat/s-imglli.ads2
-rw-r--r--gcc/ada/libgnat/s-imglllb.ads2
-rw-r--r--gcc/ada/libgnat/s-imgllli.ads2
-rw-r--r--gcc/ada/libgnat/s-imglllu.ads2
-rw-r--r--gcc/ada/libgnat/s-imglllw.ads2
-rw-r--r--gcc/ada/libgnat/s-imgllu.adb2
-rw-r--r--gcc/ada/libgnat/s-imgllu.ads2
-rw-r--r--gcc/ada/libgnat/s-imgllw.adb2
-rw-r--r--gcc/ada/libgnat/s-imgllw.ads2
-rw-r--r--gcc/ada/libgnat/s-imgrea.adb2
-rw-r--r--gcc/ada/libgnat/s-imgrea.ads2
-rw-r--r--gcc/ada/libgnat/s-imguns.adb2
-rw-r--r--gcc/ada/libgnat/s-imguns.ads2
-rw-r--r--gcc/ada/libgnat/s-imguti.adb2
-rw-r--r--gcc/ada/libgnat/s-imguti.ads2
-rw-r--r--gcc/ada/libgnat/s-imgwch.adb2
-rw-r--r--gcc/ada/libgnat/s-imgwch.ads2
-rw-r--r--gcc/ada/libgnat/s-imgwiu.adb2
-rw-r--r--gcc/ada/libgnat/s-imgwiu.ads2
-rw-r--r--gcc/ada/libgnat/s-io.adb2
-rw-r--r--gcc/ada/libgnat/s-io.ads2
-rw-r--r--gcc/ada/libgnat/s-llflex.ads2
-rw-r--r--gcc/ada/libgnat/s-maccod.ads2
-rw-r--r--gcc/ada/libgnat/s-mantis.adb2
-rw-r--r--gcc/ada/libgnat/s-mantis.ads2
-rw-r--r--gcc/ada/libgnat/s-mastop.adb2
-rw-r--r--gcc/ada/libgnat/s-mastop.ads2
-rw-r--r--gcc/ada/libgnat/s-memcop.ads2
-rw-r--r--gcc/ada/libgnat/s-memory.adb2
-rw-r--r--gcc/ada/libgnat/s-memory.ads2
-rw-r--r--gcc/ada/libgnat/s-mmap.adb2
-rw-r--r--gcc/ada/libgnat/s-mmap.ads2
-rw-r--r--gcc/ada/libgnat/s-mmauni__long.ads2
-rw-r--r--gcc/ada/libgnat/s-mmosin__mingw.adb2
-rw-r--r--gcc/ada/libgnat/s-mmosin__mingw.ads2
-rw-r--r--gcc/ada/libgnat/s-mmosin__unix.adb2
-rw-r--r--gcc/ada/libgnat/s-mmosin__unix.ads2
-rw-r--r--gcc/ada/libgnat/s-multip.adb2
-rw-r--r--gcc/ada/libgnat/s-objrea.adb2
-rw-r--r--gcc/ada/libgnat/s-objrea.ads2
-rw-r--r--gcc/ada/libgnat/s-optide.adb2
-rw-r--r--gcc/ada/libgnat/s-os_lib.adb2
-rw-r--r--gcc/ada/libgnat/s-os_lib.ads2
-rw-r--r--gcc/ada/libgnat/s-osprim.ads2
-rw-r--r--gcc/ada/libgnat/s-osprim__darwin.adb2
-rw-r--r--gcc/ada/libgnat/s-osprim__lynxos.ads2
-rw-r--r--gcc/ada/libgnat/s-osprim__mingw.adb2
-rw-r--r--gcc/ada/libgnat/s-osprim__posix.adb2
-rw-r--r--gcc/ada/libgnat/s-osprim__posix2008.adb2
-rw-r--r--gcc/ada/libgnat/s-osprim__rtems.adb2
-rw-r--r--gcc/ada/libgnat/s-osprim__solaris.adb2
-rw-r--r--gcc/ada/libgnat/s-osprim__unix.adb2
-rw-r--r--gcc/ada/libgnat/s-osprim__x32.adb2
-rw-r--r--gcc/ada/libgnat/s-pack03.adb2
-rw-r--r--gcc/ada/libgnat/s-pack03.ads2
-rw-r--r--gcc/ada/libgnat/s-pack05.adb2
-rw-r--r--gcc/ada/libgnat/s-pack05.ads2
-rw-r--r--gcc/ada/libgnat/s-pack06.adb2
-rw-r--r--gcc/ada/libgnat/s-pack06.ads2
-rw-r--r--gcc/ada/libgnat/s-pack07.adb2
-rw-r--r--gcc/ada/libgnat/s-pack07.ads2
-rw-r--r--gcc/ada/libgnat/s-pack09.adb2
-rw-r--r--gcc/ada/libgnat/s-pack09.ads2
-rw-r--r--gcc/ada/libgnat/s-pack10.adb2
-rw-r--r--gcc/ada/libgnat/s-pack10.ads2
-rw-r--r--gcc/ada/libgnat/s-pack100.adb2
-rw-r--r--gcc/ada/libgnat/s-pack100.ads2
-rw-r--r--gcc/ada/libgnat/s-pack101.adb2
-rw-r--r--gcc/ada/libgnat/s-pack101.ads2
-rw-r--r--gcc/ada/libgnat/s-pack102.adb2
-rw-r--r--gcc/ada/libgnat/s-pack102.ads2
-rw-r--r--gcc/ada/libgnat/s-pack103.adb2
-rw-r--r--gcc/ada/libgnat/s-pack103.ads2
-rw-r--r--gcc/ada/libgnat/s-pack104.adb2
-rw-r--r--gcc/ada/libgnat/s-pack104.ads2
-rw-r--r--gcc/ada/libgnat/s-pack105.adb2
-rw-r--r--gcc/ada/libgnat/s-pack105.ads2
-rw-r--r--gcc/ada/libgnat/s-pack106.adb2
-rw-r--r--gcc/ada/libgnat/s-pack106.ads2
-rw-r--r--gcc/ada/libgnat/s-pack107.adb2
-rw-r--r--gcc/ada/libgnat/s-pack107.ads2
-rw-r--r--gcc/ada/libgnat/s-pack108.adb2
-rw-r--r--gcc/ada/libgnat/s-pack108.ads2
-rw-r--r--gcc/ada/libgnat/s-pack109.adb2
-rw-r--r--gcc/ada/libgnat/s-pack109.ads2
-rw-r--r--gcc/ada/libgnat/s-pack11.adb2
-rw-r--r--gcc/ada/libgnat/s-pack11.ads2
-rw-r--r--gcc/ada/libgnat/s-pack110.adb2
-rw-r--r--gcc/ada/libgnat/s-pack110.ads2
-rw-r--r--gcc/ada/libgnat/s-pack111.adb2
-rw-r--r--gcc/ada/libgnat/s-pack111.ads2
-rw-r--r--gcc/ada/libgnat/s-pack112.adb2
-rw-r--r--gcc/ada/libgnat/s-pack112.ads2
-rw-r--r--gcc/ada/libgnat/s-pack113.adb2
-rw-r--r--gcc/ada/libgnat/s-pack113.ads2
-rw-r--r--gcc/ada/libgnat/s-pack114.adb2
-rw-r--r--gcc/ada/libgnat/s-pack114.ads2
-rw-r--r--gcc/ada/libgnat/s-pack115.adb2
-rw-r--r--gcc/ada/libgnat/s-pack115.ads2
-rw-r--r--gcc/ada/libgnat/s-pack116.adb2
-rw-r--r--gcc/ada/libgnat/s-pack116.ads2
-rw-r--r--gcc/ada/libgnat/s-pack117.adb2
-rw-r--r--gcc/ada/libgnat/s-pack117.ads2
-rw-r--r--gcc/ada/libgnat/s-pack118.adb2
-rw-r--r--gcc/ada/libgnat/s-pack118.ads2
-rw-r--r--gcc/ada/libgnat/s-pack119.adb2
-rw-r--r--gcc/ada/libgnat/s-pack119.ads2
-rw-r--r--gcc/ada/libgnat/s-pack12.adb2
-rw-r--r--gcc/ada/libgnat/s-pack12.ads2
-rw-r--r--gcc/ada/libgnat/s-pack120.adb2
-rw-r--r--gcc/ada/libgnat/s-pack120.ads2
-rw-r--r--gcc/ada/libgnat/s-pack121.adb2
-rw-r--r--gcc/ada/libgnat/s-pack121.ads2
-rw-r--r--gcc/ada/libgnat/s-pack122.adb2
-rw-r--r--gcc/ada/libgnat/s-pack122.ads2
-rw-r--r--gcc/ada/libgnat/s-pack123.adb2
-rw-r--r--gcc/ada/libgnat/s-pack123.ads2
-rw-r--r--gcc/ada/libgnat/s-pack124.adb2
-rw-r--r--gcc/ada/libgnat/s-pack124.ads2
-rw-r--r--gcc/ada/libgnat/s-pack125.adb2
-rw-r--r--gcc/ada/libgnat/s-pack125.ads2
-rw-r--r--gcc/ada/libgnat/s-pack126.adb2
-rw-r--r--gcc/ada/libgnat/s-pack126.ads2
-rw-r--r--gcc/ada/libgnat/s-pack127.adb2
-rw-r--r--gcc/ada/libgnat/s-pack127.ads2
-rw-r--r--gcc/ada/libgnat/s-pack13.adb2
-rw-r--r--gcc/ada/libgnat/s-pack13.ads2
-rw-r--r--gcc/ada/libgnat/s-pack14.adb2
-rw-r--r--gcc/ada/libgnat/s-pack14.ads2
-rw-r--r--gcc/ada/libgnat/s-pack15.adb2
-rw-r--r--gcc/ada/libgnat/s-pack15.ads2
-rw-r--r--gcc/ada/libgnat/s-pack17.adb2
-rw-r--r--gcc/ada/libgnat/s-pack17.ads2
-rw-r--r--gcc/ada/libgnat/s-pack18.adb2
-rw-r--r--gcc/ada/libgnat/s-pack18.ads2
-rw-r--r--gcc/ada/libgnat/s-pack19.adb2
-rw-r--r--gcc/ada/libgnat/s-pack19.ads2
-rw-r--r--gcc/ada/libgnat/s-pack20.adb2
-rw-r--r--gcc/ada/libgnat/s-pack20.ads2
-rw-r--r--gcc/ada/libgnat/s-pack21.adb2
-rw-r--r--gcc/ada/libgnat/s-pack21.ads2
-rw-r--r--gcc/ada/libgnat/s-pack22.adb2
-rw-r--r--gcc/ada/libgnat/s-pack22.ads2
-rw-r--r--gcc/ada/libgnat/s-pack23.adb2
-rw-r--r--gcc/ada/libgnat/s-pack23.ads2
-rw-r--r--gcc/ada/libgnat/s-pack24.adb2
-rw-r--r--gcc/ada/libgnat/s-pack24.ads2
-rw-r--r--gcc/ada/libgnat/s-pack25.adb2
-rw-r--r--gcc/ada/libgnat/s-pack25.ads2
-rw-r--r--gcc/ada/libgnat/s-pack26.adb2
-rw-r--r--gcc/ada/libgnat/s-pack26.ads2
-rw-r--r--gcc/ada/libgnat/s-pack27.adb2
-rw-r--r--gcc/ada/libgnat/s-pack27.ads2
-rw-r--r--gcc/ada/libgnat/s-pack28.adb2
-rw-r--r--gcc/ada/libgnat/s-pack28.ads2
-rw-r--r--gcc/ada/libgnat/s-pack29.adb2
-rw-r--r--gcc/ada/libgnat/s-pack29.ads2
-rw-r--r--gcc/ada/libgnat/s-pack30.adb2
-rw-r--r--gcc/ada/libgnat/s-pack30.ads2
-rw-r--r--gcc/ada/libgnat/s-pack31.adb2
-rw-r--r--gcc/ada/libgnat/s-pack31.ads2
-rw-r--r--gcc/ada/libgnat/s-pack33.adb2
-rw-r--r--gcc/ada/libgnat/s-pack33.ads2
-rw-r--r--gcc/ada/libgnat/s-pack34.adb2
-rw-r--r--gcc/ada/libgnat/s-pack34.ads2
-rw-r--r--gcc/ada/libgnat/s-pack35.adb2
-rw-r--r--gcc/ada/libgnat/s-pack35.ads2
-rw-r--r--gcc/ada/libgnat/s-pack36.adb2
-rw-r--r--gcc/ada/libgnat/s-pack36.ads2
-rw-r--r--gcc/ada/libgnat/s-pack37.adb2
-rw-r--r--gcc/ada/libgnat/s-pack37.ads2
-rw-r--r--gcc/ada/libgnat/s-pack38.adb2
-rw-r--r--gcc/ada/libgnat/s-pack38.ads2
-rw-r--r--gcc/ada/libgnat/s-pack39.adb2
-rw-r--r--gcc/ada/libgnat/s-pack39.ads2
-rw-r--r--gcc/ada/libgnat/s-pack40.adb2
-rw-r--r--gcc/ada/libgnat/s-pack40.ads2
-rw-r--r--gcc/ada/libgnat/s-pack41.adb2
-rw-r--r--gcc/ada/libgnat/s-pack41.ads2
-rw-r--r--gcc/ada/libgnat/s-pack42.adb2
-rw-r--r--gcc/ada/libgnat/s-pack42.ads2
-rw-r--r--gcc/ada/libgnat/s-pack43.adb2
-rw-r--r--gcc/ada/libgnat/s-pack43.ads2
-rw-r--r--gcc/ada/libgnat/s-pack44.adb2
-rw-r--r--gcc/ada/libgnat/s-pack44.ads2
-rw-r--r--gcc/ada/libgnat/s-pack45.adb2
-rw-r--r--gcc/ada/libgnat/s-pack45.ads2
-rw-r--r--gcc/ada/libgnat/s-pack46.adb2
-rw-r--r--gcc/ada/libgnat/s-pack46.ads2
-rw-r--r--gcc/ada/libgnat/s-pack47.adb2
-rw-r--r--gcc/ada/libgnat/s-pack47.ads2
-rw-r--r--gcc/ada/libgnat/s-pack48.adb2
-rw-r--r--gcc/ada/libgnat/s-pack48.ads2
-rw-r--r--gcc/ada/libgnat/s-pack49.adb2
-rw-r--r--gcc/ada/libgnat/s-pack49.ads2
-rw-r--r--gcc/ada/libgnat/s-pack50.adb2
-rw-r--r--gcc/ada/libgnat/s-pack50.ads2
-rw-r--r--gcc/ada/libgnat/s-pack51.adb2
-rw-r--r--gcc/ada/libgnat/s-pack51.ads2
-rw-r--r--gcc/ada/libgnat/s-pack52.adb2
-rw-r--r--gcc/ada/libgnat/s-pack52.ads2
-rw-r--r--gcc/ada/libgnat/s-pack53.adb2
-rw-r--r--gcc/ada/libgnat/s-pack53.ads2
-rw-r--r--gcc/ada/libgnat/s-pack54.adb2
-rw-r--r--gcc/ada/libgnat/s-pack54.ads2
-rw-r--r--gcc/ada/libgnat/s-pack55.adb2
-rw-r--r--gcc/ada/libgnat/s-pack55.ads2
-rw-r--r--gcc/ada/libgnat/s-pack56.adb2
-rw-r--r--gcc/ada/libgnat/s-pack56.ads2
-rw-r--r--gcc/ada/libgnat/s-pack57.adb2
-rw-r--r--gcc/ada/libgnat/s-pack57.ads2
-rw-r--r--gcc/ada/libgnat/s-pack58.adb2
-rw-r--r--gcc/ada/libgnat/s-pack58.ads2
-rw-r--r--gcc/ada/libgnat/s-pack59.adb2
-rw-r--r--gcc/ada/libgnat/s-pack59.ads2
-rw-r--r--gcc/ada/libgnat/s-pack60.adb2
-rw-r--r--gcc/ada/libgnat/s-pack60.ads2
-rw-r--r--gcc/ada/libgnat/s-pack61.adb2
-rw-r--r--gcc/ada/libgnat/s-pack61.ads2
-rw-r--r--gcc/ada/libgnat/s-pack62.adb2
-rw-r--r--gcc/ada/libgnat/s-pack62.ads2
-rw-r--r--gcc/ada/libgnat/s-pack63.adb2
-rw-r--r--gcc/ada/libgnat/s-pack63.ads2
-rw-r--r--gcc/ada/libgnat/s-pack65.adb2
-rw-r--r--gcc/ada/libgnat/s-pack65.ads2
-rw-r--r--gcc/ada/libgnat/s-pack66.adb2
-rw-r--r--gcc/ada/libgnat/s-pack66.ads2
-rw-r--r--gcc/ada/libgnat/s-pack67.adb2
-rw-r--r--gcc/ada/libgnat/s-pack67.ads2
-rw-r--r--gcc/ada/libgnat/s-pack68.adb2
-rw-r--r--gcc/ada/libgnat/s-pack68.ads2
-rw-r--r--gcc/ada/libgnat/s-pack69.adb2
-rw-r--r--gcc/ada/libgnat/s-pack69.ads2
-rw-r--r--gcc/ada/libgnat/s-pack70.adb2
-rw-r--r--gcc/ada/libgnat/s-pack70.ads2
-rw-r--r--gcc/ada/libgnat/s-pack71.adb2
-rw-r--r--gcc/ada/libgnat/s-pack71.ads2
-rw-r--r--gcc/ada/libgnat/s-pack72.adb2
-rw-r--r--gcc/ada/libgnat/s-pack72.ads2
-rw-r--r--gcc/ada/libgnat/s-pack73.adb2
-rw-r--r--gcc/ada/libgnat/s-pack73.ads2
-rw-r--r--gcc/ada/libgnat/s-pack74.adb2
-rw-r--r--gcc/ada/libgnat/s-pack74.ads2
-rw-r--r--gcc/ada/libgnat/s-pack75.adb2
-rw-r--r--gcc/ada/libgnat/s-pack75.ads2
-rw-r--r--gcc/ada/libgnat/s-pack76.adb2
-rw-r--r--gcc/ada/libgnat/s-pack76.ads2
-rw-r--r--gcc/ada/libgnat/s-pack77.adb2
-rw-r--r--gcc/ada/libgnat/s-pack77.ads2
-rw-r--r--gcc/ada/libgnat/s-pack78.adb2
-rw-r--r--gcc/ada/libgnat/s-pack78.ads2
-rw-r--r--gcc/ada/libgnat/s-pack79.adb2
-rw-r--r--gcc/ada/libgnat/s-pack79.ads2
-rw-r--r--gcc/ada/libgnat/s-pack80.adb2
-rw-r--r--gcc/ada/libgnat/s-pack80.ads2
-rw-r--r--gcc/ada/libgnat/s-pack81.adb2
-rw-r--r--gcc/ada/libgnat/s-pack81.ads2
-rw-r--r--gcc/ada/libgnat/s-pack82.adb2
-rw-r--r--gcc/ada/libgnat/s-pack82.ads2
-rw-r--r--gcc/ada/libgnat/s-pack83.adb2
-rw-r--r--gcc/ada/libgnat/s-pack83.ads2
-rw-r--r--gcc/ada/libgnat/s-pack84.adb2
-rw-r--r--gcc/ada/libgnat/s-pack84.ads2
-rw-r--r--gcc/ada/libgnat/s-pack85.adb2
-rw-r--r--gcc/ada/libgnat/s-pack85.ads2
-rw-r--r--gcc/ada/libgnat/s-pack86.adb2
-rw-r--r--gcc/ada/libgnat/s-pack86.ads2
-rw-r--r--gcc/ada/libgnat/s-pack87.adb2
-rw-r--r--gcc/ada/libgnat/s-pack87.ads2
-rw-r--r--gcc/ada/libgnat/s-pack88.adb2
-rw-r--r--gcc/ada/libgnat/s-pack88.ads2
-rw-r--r--gcc/ada/libgnat/s-pack89.adb2
-rw-r--r--gcc/ada/libgnat/s-pack89.ads2
-rw-r--r--gcc/ada/libgnat/s-pack90.adb2
-rw-r--r--gcc/ada/libgnat/s-pack90.ads2
-rw-r--r--gcc/ada/libgnat/s-pack91.adb2
-rw-r--r--gcc/ada/libgnat/s-pack91.ads2
-rw-r--r--gcc/ada/libgnat/s-pack92.adb2
-rw-r--r--gcc/ada/libgnat/s-pack92.ads2
-rw-r--r--gcc/ada/libgnat/s-pack93.adb2
-rw-r--r--gcc/ada/libgnat/s-pack93.ads2
-rw-r--r--gcc/ada/libgnat/s-pack94.adb2
-rw-r--r--gcc/ada/libgnat/s-pack94.ads2
-rw-r--r--gcc/ada/libgnat/s-pack95.adb2
-rw-r--r--gcc/ada/libgnat/s-pack95.ads2
-rw-r--r--gcc/ada/libgnat/s-pack96.adb2
-rw-r--r--gcc/ada/libgnat/s-pack96.ads2
-rw-r--r--gcc/ada/libgnat/s-pack97.adb2
-rw-r--r--gcc/ada/libgnat/s-pack97.ads2
-rw-r--r--gcc/ada/libgnat/s-pack98.adb2
-rw-r--r--gcc/ada/libgnat/s-pack98.ads2
-rw-r--r--gcc/ada/libgnat/s-pack99.adb2
-rw-r--r--gcc/ada/libgnat/s-pack99.ads2
-rw-r--r--gcc/ada/libgnat/s-parame.adb2
-rw-r--r--gcc/ada/libgnat/s-parame.ads2
-rw-r--r--gcc/ada/libgnat/s-parame__hpux.ads2
-rw-r--r--gcc/ada/libgnat/s-parame__posix2008.ads2
-rw-r--r--gcc/ada/libgnat/s-parame__qnx.adb2
-rw-r--r--gcc/ada/libgnat/s-parame__rtems.adb2
-rw-r--r--gcc/ada/libgnat/s-parame__vxworks.adb2
-rw-r--r--gcc/ada/libgnat/s-parame__vxworks.ads2
-rw-r--r--gcc/ada/libgnat/s-parint.adb2
-rw-r--r--gcc/ada/libgnat/s-parint.ads2
-rw-r--r--gcc/ada/libgnat/s-pehage.adb2
-rw-r--r--gcc/ada/libgnat/s-pehage.ads2
-rw-r--r--gcc/ada/libgnat/s-pooglo.adb2
-rw-r--r--gcc/ada/libgnat/s-pooglo.ads2
-rw-r--r--gcc/ada/libgnat/s-pooloc.adb2
-rw-r--r--gcc/ada/libgnat/s-pooloc.ads2
-rw-r--r--gcc/ada/libgnat/s-poosiz.adb2
-rw-r--r--gcc/ada/libgnat/s-poosiz.ads2
-rw-r--r--gcc/ada/libgnat/s-powflt.ads2
-rw-r--r--gcc/ada/libgnat/s-powlfl.ads2
-rw-r--r--gcc/ada/libgnat/s-powllf.ads2
-rw-r--r--gcc/ada/libgnat/s-purexc.ads2
-rw-r--r--gcc/ada/libgnat/s-putima.adb2
-rw-r--r--gcc/ada/libgnat/s-putima.ads2
-rw-r--r--gcc/ada/libgnat/s-rannum.adb2
-rw-r--r--gcc/ada/libgnat/s-rannum.ads2
-rw-r--r--gcc/ada/libgnat/s-ransee.adb2
-rw-r--r--gcc/ada/libgnat/s-ransee.ads2
-rw-r--r--gcc/ada/libgnat/s-regexp.adb2
-rw-r--r--gcc/ada/libgnat/s-regexp.ads2
-rw-r--r--gcc/ada/libgnat/s-regpat.adb2
-rw-r--r--gcc/ada/libgnat/s-regpat.ads2
-rw-r--r--gcc/ada/libgnat/s-resfil.adb2
-rw-r--r--gcc/ada/libgnat/s-resfil.ads2
-rw-r--r--gcc/ada/libgnat/s-restri.adb2
-rw-r--r--gcc/ada/libgnat/s-restri.ads2
-rw-r--r--gcc/ada/libgnat/s-retsta.ads2
-rw-r--r--gcc/ada/libgnat/s-rident.ads2
-rw-r--r--gcc/ada/libgnat/s-rpc.adb2
-rw-r--r--gcc/ada/libgnat/s-rpc.ads2
-rw-r--r--gcc/ada/libgnat/s-scaval.adb2
-rw-r--r--gcc/ada/libgnat/s-scaval.ads2
-rw-r--r--gcc/ada/libgnat/s-scaval__128.adb2
-rw-r--r--gcc/ada/libgnat/s-scaval__128.ads2
-rw-r--r--gcc/ada/libgnat/s-secsta.adb2
-rw-r--r--gcc/ada/libgnat/s-secsta.ads2
-rw-r--r--gcc/ada/libgnat/s-sequio.adb2
-rw-r--r--gcc/ada/libgnat/s-sequio.ads2
-rw-r--r--gcc/ada/libgnat/s-shabig.ads2
-rw-r--r--gcc/ada/libgnat/s-shasto.adb2
-rw-r--r--gcc/ada/libgnat/s-shasto.ads2
-rw-r--r--gcc/ada/libgnat/s-soflin.adb2
-rw-r--r--gcc/ada/libgnat/s-soflin.ads2
-rw-r--r--gcc/ada/libgnat/s-soliin.adb2
-rw-r--r--gcc/ada/libgnat/s-soliin.ads2
-rw-r--r--gcc/ada/libgnat/s-spark.ads2
-rw-r--r--gcc/ada/libgnat/s-spcuop.adb2
-rw-r--r--gcc/ada/libgnat/s-spcuop.ads2
-rw-r--r--gcc/ada/libgnat/s-spsufi.adb2
-rw-r--r--gcc/ada/libgnat/s-spsufi.ads2
-rw-r--r--gcc/ada/libgnat/s-stache.adb2
-rw-r--r--gcc/ada/libgnat/s-stache.ads2
-rw-r--r--gcc/ada/libgnat/s-stalib.adb2
-rw-r--r--gcc/ada/libgnat/s-stalib.ads2
-rw-r--r--gcc/ada/libgnat/s-statxd.adb2
-rw-r--r--gcc/ada/libgnat/s-statxd.ads2
-rw-r--r--gcc/ada/libgnat/s-stausa.adb2
-rw-r--r--gcc/ada/libgnat/s-stausa.ads2
-rw-r--r--gcc/ada/libgnat/s-stchop.adb2
-rw-r--r--gcc/ada/libgnat/s-stchop.ads2
-rw-r--r--gcc/ada/libgnat/s-stchop__limit.ads2
-rw-r--r--gcc/ada/libgnat/s-stchop__vxworks.adb2
-rw-r--r--gcc/ada/libgnat/s-stoele.adb2
-rw-r--r--gcc/ada/libgnat/s-stoele.ads2
-rw-r--r--gcc/ada/libgnat/s-stopoo.adb2
-rw-r--r--gcc/ada/libgnat/s-stopoo.ads2
-rw-r--r--gcc/ada/libgnat/s-stposu.adb2
-rw-r--r--gcc/ada/libgnat/s-stposu.ads2
-rw-r--r--gcc/ada/libgnat/s-stratt.adb2
-rw-r--r--gcc/ada/libgnat/s-stratt.ads2
-rw-r--r--gcc/ada/libgnat/s-stratt__cheri.adb2
-rw-r--r--gcc/ada/libgnat/s-strcom.adb2
-rw-r--r--gcc/ada/libgnat/s-strcom.ads2
-rw-r--r--gcc/ada/libgnat/s-strhas.adb2
-rw-r--r--gcc/ada/libgnat/s-strhas.ads2
-rw-r--r--gcc/ada/libgnat/s-string.adb2
-rw-r--r--gcc/ada/libgnat/s-string.ads2
-rw-r--r--gcc/ada/libgnat/s-ststop.adb2
-rw-r--r--gcc/ada/libgnat/s-ststop.ads2
-rw-r--r--gcc/ada/libgnat/s-tasloc.adb2
-rw-r--r--gcc/ada/libgnat/s-tasloc.ads2
-rw-r--r--gcc/ada/libgnat/s-traceb.adb2
-rw-r--r--gcc/ada/libgnat/s-traceb.ads2
-rw-r--r--gcc/ada/libgnat/s-traceb__hpux.adb2
-rw-r--r--gcc/ada/libgnat/s-traceb__mastop.adb2
-rw-r--r--gcc/ada/libgnat/s-traent.adb2
-rw-r--r--gcc/ada/libgnat/s-traent.ads2
-rw-r--r--gcc/ada/libgnat/s-trasym.adb2
-rw-r--r--gcc/ada/libgnat/s-trasym.ads2
-rw-r--r--gcc/ada/libgnat/s-trasym__dwarf.adb2
-rw-r--r--gcc/ada/libgnat/s-tsmona.adb2
-rw-r--r--gcc/ada/libgnat/s-tsmona__linux.adb2
-rw-r--r--gcc/ada/libgnat/s-tsmona__mingw.adb2
-rw-r--r--gcc/ada/libgnat/s-unstyp.ads2
-rw-r--r--gcc/ada/libgnat/s-utf_32.adb2
-rw-r--r--gcc/ada/libgnat/s-utf_32.ads2
-rw-r--r--gcc/ada/libgnat/s-vade128.ads2
-rw-r--r--gcc/ada/libgnat/s-vade32.ads2
-rw-r--r--gcc/ada/libgnat/s-vade64.ads2
-rw-r--r--gcc/ada/libgnat/s-vaen16.ads2
-rw-r--r--gcc/ada/libgnat/s-vaen32.ads2
-rw-r--r--gcc/ada/libgnat/s-vaenu8.ads2
-rw-r--r--gcc/ada/libgnat/s-vafi128.ads2
-rw-r--r--gcc/ada/libgnat/s-vafi32.ads2
-rw-r--r--gcc/ada/libgnat/s-vafi64.ads2
-rw-r--r--gcc/ada/libgnat/s-vaispe.adb2
-rw-r--r--gcc/ada/libgnat/s-vaispe.ads2
-rw-r--r--gcc/ada/libgnat/s-valboo.adb2
-rw-r--r--gcc/ada/libgnat/s-valboo.ads2
-rw-r--r--gcc/ada/libgnat/s-valcha.adb2
-rw-r--r--gcc/ada/libgnat/s-valcha.ads2
-rw-r--r--gcc/ada/libgnat/s-valflt.ads2
-rw-r--r--gcc/ada/libgnat/s-valint.adb2
-rw-r--r--gcc/ada/libgnat/s-valint.ads2
-rw-r--r--gcc/ada/libgnat/s-vallfl.ads2
-rw-r--r--gcc/ada/libgnat/s-valllf.ads2
-rw-r--r--gcc/ada/libgnat/s-vallli.adb2
-rw-r--r--gcc/ada/libgnat/s-vallli.ads2
-rw-r--r--gcc/ada/libgnat/s-valllli.ads2
-rw-r--r--gcc/ada/libgnat/s-vallllu.ads2
-rw-r--r--gcc/ada/libgnat/s-valllu.adb2
-rw-r--r--gcc/ada/libgnat/s-valllu.ads2
-rw-r--r--gcc/ada/libgnat/s-valrea.adb2
-rw-r--r--gcc/ada/libgnat/s-valrea.ads2
-rw-r--r--gcc/ada/libgnat/s-valspe.adb2
-rw-r--r--gcc/ada/libgnat/s-valspe.ads2
-rw-r--r--gcc/ada/libgnat/s-valued.adb2
-rw-r--r--gcc/ada/libgnat/s-valued.ads2
-rw-r--r--gcc/ada/libgnat/s-valuef.adb2
-rw-r--r--gcc/ada/libgnat/s-valuef.ads2
-rw-r--r--gcc/ada/libgnat/s-valuei.adb2
-rw-r--r--gcc/ada/libgnat/s-valuei.ads2
-rw-r--r--gcc/ada/libgnat/s-valuen.adb2
-rw-r--r--gcc/ada/libgnat/s-valuen.ads2
-rw-r--r--gcc/ada/libgnat/s-valuer.adb2
-rw-r--r--gcc/ada/libgnat/s-valuer.ads2
-rw-r--r--gcc/ada/libgnat/s-valueu.adb2
-rw-r--r--gcc/ada/libgnat/s-valueu.ads2
-rw-r--r--gcc/ada/libgnat/s-valuns.adb2
-rw-r--r--gcc/ada/libgnat/s-valuns.ads2
-rw-r--r--gcc/ada/libgnat/s-valuti.adb2
-rw-r--r--gcc/ada/libgnat/s-valuti.ads2
-rw-r--r--gcc/ada/libgnat/s-valwch.adb2
-rw-r--r--gcc/ada/libgnat/s-valwch.ads2
-rw-r--r--gcc/ada/libgnat/s-vauspe.adb2
-rw-r--r--gcc/ada/libgnat/s-vauspe.ads2
-rw-r--r--gcc/ada/libgnat/s-veboop.adb2
-rw-r--r--gcc/ada/libgnat/s-veboop.ads2
-rw-r--r--gcc/ada/libgnat/s-vector.ads2
-rw-r--r--gcc/ada/libgnat/s-vercon.adb2
-rw-r--r--gcc/ada/libgnat/s-vercon.ads2
-rw-r--r--gcc/ada/libgnat/s-vs_int.ads2
-rw-r--r--gcc/ada/libgnat/s-vs_lli.ads2
-rw-r--r--gcc/ada/libgnat/s-vs_llu.ads2
-rw-r--r--gcc/ada/libgnat/s-vs_uns.ads2
-rw-r--r--gcc/ada/libgnat/s-vsllli.ads2
-rw-r--r--gcc/ada/libgnat/s-vslllu.ads2
-rw-r--r--gcc/ada/libgnat/s-wchcnv.adb2
-rw-r--r--gcc/ada/libgnat/s-wchcnv.ads2
-rw-r--r--gcc/ada/libgnat/s-wchcon.adb2
-rw-r--r--gcc/ada/libgnat/s-wchcon.ads2
-rw-r--r--gcc/ada/libgnat/s-wchjis.adb2
-rw-r--r--gcc/ada/libgnat/s-wchjis.ads2
-rw-r--r--gcc/ada/libgnat/s-wchstw.adb2
-rw-r--r--gcc/ada/libgnat/s-wchstw.ads2
-rw-r--r--gcc/ada/libgnat/s-wchwts.adb2
-rw-r--r--gcc/ada/libgnat/s-wchwts.ads2
-rw-r--r--gcc/ada/libgnat/s-widboo.adb2
-rw-r--r--gcc/ada/libgnat/s-widboo.ads2
-rw-r--r--gcc/ada/libgnat/s-widcha.adb2
-rw-r--r--gcc/ada/libgnat/s-widcha.ads2
-rw-r--r--gcc/ada/libgnat/s-widenu.adb2
-rw-r--r--gcc/ada/libgnat/s-widenu.ads2
-rw-r--r--gcc/ada/libgnat/s-widint.ads2
-rw-r--r--gcc/ada/libgnat/s-widlli.adb2
-rw-r--r--gcc/ada/libgnat/s-widlli.ads2
-rw-r--r--gcc/ada/libgnat/s-widllli.ads2
-rw-r--r--gcc/ada/libgnat/s-widlllu.ads2
-rw-r--r--gcc/ada/libgnat/s-widllu.adb2
-rw-r--r--gcc/ada/libgnat/s-widllu.ads2
-rw-r--r--gcc/ada/libgnat/s-widthi.adb2
-rw-r--r--gcc/ada/libgnat/s-widthi.ads2
-rw-r--r--gcc/ada/libgnat/s-widthu.adb2
-rw-r--r--gcc/ada/libgnat/s-widthu.ads2
-rw-r--r--gcc/ada/libgnat/s-widuns.ads2
-rw-r--r--gcc/ada/libgnat/s-widwch.adb2
-rw-r--r--gcc/ada/libgnat/s-widwch.ads2
-rw-r--r--gcc/ada/libgnat/s-win32.ads2
-rw-r--r--gcc/ada/libgnat/s-winext.ads2
-rw-r--r--gcc/ada/libgnat/s-wwdcha.adb2
-rw-r--r--gcc/ada/libgnat/s-wwdcha.ads2
-rw-r--r--gcc/ada/libgnat/s-wwdenu.adb2
-rw-r--r--gcc/ada/libgnat/s-wwdenu.ads2
-rw-r--r--gcc/ada/libgnat/s-wwdwch.adb2
-rw-r--r--gcc/ada/libgnat/s-wwdwch.ads2
-rw-r--r--gcc/ada/libgnat/system-aix.ads2
-rw-r--r--gcc/ada/libgnat/system-darwin-arm.ads2
-rw-r--r--gcc/ada/libgnat/system-darwin-ppc.ads2
-rw-r--r--gcc/ada/libgnat/system-darwin-x86.ads2
-rw-r--r--gcc/ada/libgnat/system-djgpp.ads2
-rw-r--r--gcc/ada/libgnat/system-dragonfly-x86_64.ads2
-rw-r--r--gcc/ada/libgnat/system-freebsd.ads2
-rw-r--r--gcc/ada/libgnat/system-hpux-ia64.ads2
-rw-r--r--gcc/ada/libgnat/system-hpux.ads2
-rw-r--r--gcc/ada/libgnat/system-linux-alpha.ads2
-rw-r--r--gcc/ada/libgnat/system-linux-arm.ads2
-rw-r--r--gcc/ada/libgnat/system-linux-hppa.ads2
-rw-r--r--gcc/ada/libgnat/system-linux-ia64.ads2
-rw-r--r--gcc/ada/libgnat/system-linux-loongarch.ads2
-rw-r--r--gcc/ada/libgnat/system-linux-m68k.ads2
-rw-r--r--gcc/ada/libgnat/system-linux-mips.ads2
-rw-r--r--gcc/ada/libgnat/system-linux-ppc.ads2
-rw-r--r--gcc/ada/libgnat/system-linux-riscv.ads2
-rw-r--r--gcc/ada/libgnat/system-linux-s390.ads2
-rw-r--r--gcc/ada/libgnat/system-linux-sh4.ads2
-rw-r--r--gcc/ada/libgnat/system-linux-sparc.ads2
-rw-r--r--gcc/ada/libgnat/system-linux-x86.ads2
-rw-r--r--gcc/ada/libgnat/system-lynxos178-ppc.ads2
-rw-r--r--gcc/ada/libgnat/system-lynxos178-x86.ads2
-rw-r--r--gcc/ada/libgnat/system-mingw.ads2
-rw-r--r--gcc/ada/libgnat/system-qnx-arm.ads2
-rw-r--r--gcc/ada/libgnat/system-rtems.ads2
-rw-r--r--gcc/ada/libgnat/system-solaris-sparc.ads2
-rw-r--r--gcc/ada/libgnat/system-solaris-x86.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks-ppc-kernel.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks-ppc-rtp-smp.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks-ppc-rtp.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks7-aarch64-rtp-smp.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks7-aarch64.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks7-arm-rtp-smp.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks7-arm.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks7-ppc-kernel.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks7-ppc-rtp-smp.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks7-ppc64-kernel.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks7-ppc64-rtp-smp.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks7-x86-kernel.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks7-x86-rtp-smp.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks7-x86_64-kernel.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks7-x86_64-rtp-smp.ads2
-rw-r--r--gcc/ada/link.c2
-rw-r--r--gcc/ada/live.adb2
-rw-r--r--gcc/ada/live.ads2
-rw-r--r--gcc/ada/local_restrict.adb2
-rw-r--r--gcc/ada/local_restrict.ads2
-rw-r--r--gcc/ada/locales.c2
-rw-r--r--gcc/ada/make.adb2
-rw-r--r--gcc/ada/make.ads2
-rw-r--r--gcc/ada/make_util.adb2
-rw-r--r--gcc/ada/make_util.ads2
-rw-r--r--gcc/ada/makeusg.adb2
-rw-r--r--gcc/ada/makeusg.ads2
-rw-r--r--gcc/ada/mdll-fil.adb2
-rw-r--r--gcc/ada/mdll-fil.ads2
-rw-r--r--gcc/ada/mdll-utl.adb2
-rw-r--r--gcc/ada/mdll-utl.ads2
-rw-r--r--gcc/ada/mdll.adb2
-rw-r--r--gcc/ada/mdll.ads2
-rw-r--r--gcc/ada/mingw32.h2
-rw-r--r--gcc/ada/mkdir.c2
-rw-r--r--gcc/ada/namet-sp.adb2
-rw-r--r--gcc/ada/namet-sp.ads2
-rw-r--r--gcc/ada/namet.adb2
-rw-r--r--gcc/ada/namet.ads2
-rw-r--r--gcc/ada/namet.h2
-rw-r--r--gcc/ada/nlists.adb2
-rw-r--r--gcc/ada/nlists.ads2
-rw-r--r--gcc/ada/nlists.h2
-rw-r--r--gcc/ada/opt.adb2
-rw-r--r--gcc/ada/opt.ads2
-rw-r--r--gcc/ada/osint-b.adb2
-rw-r--r--gcc/ada/osint-b.ads2
-rw-r--r--gcc/ada/osint-c.adb2
-rw-r--r--gcc/ada/osint-c.ads2
-rw-r--r--gcc/ada/osint-l.adb2
-rw-r--r--gcc/ada/osint-l.ads2
-rw-r--r--gcc/ada/osint-m.adb2
-rw-r--r--gcc/ada/osint-m.ads2
-rw-r--r--gcc/ada/osint.adb2
-rw-r--r--gcc/ada/osint.ads2
-rw-r--r--gcc/ada/output.adb2
-rw-r--r--gcc/ada/output.ads2
-rw-r--r--gcc/ada/par-ch10.adb2
-rw-r--r--gcc/ada/par-ch11.adb2
-rw-r--r--gcc/ada/par-ch12.adb2
-rw-r--r--gcc/ada/par-ch13.adb2
-rw-r--r--gcc/ada/par-ch2.adb2
-rw-r--r--gcc/ada/par-ch3.adb2
-rw-r--r--gcc/ada/par-ch4.adb2
-rw-r--r--gcc/ada/par-ch5.adb2
-rw-r--r--gcc/ada/par-ch6.adb2
-rw-r--r--gcc/ada/par-ch7.adb2
-rw-r--r--gcc/ada/par-ch8.adb2
-rw-r--r--gcc/ada/par-ch9.adb2
-rw-r--r--gcc/ada/par-endh.adb2
-rw-r--r--gcc/ada/par-labl.adb2
-rw-r--r--gcc/ada/par-load.adb2
-rw-r--r--gcc/ada/par-prag.adb2
-rw-r--r--gcc/ada/par-sync.adb2
-rw-r--r--gcc/ada/par-tchk.adb2
-rw-r--r--gcc/ada/par-util.adb2
-rw-r--r--gcc/ada/par.adb2
-rw-r--r--gcc/ada/par.ads2
-rw-r--r--gcc/ada/par_sco.adb2
-rw-r--r--gcc/ada/par_sco.ads2
-rw-r--r--gcc/ada/pprint.adb2
-rw-r--r--gcc/ada/pprint.ads2
-rw-r--r--gcc/ada/prep.adb2
-rw-r--r--gcc/ada/prep.ads2
-rw-r--r--gcc/ada/prepcomp.adb2
-rw-r--r--gcc/ada/prepcomp.ads2
-rw-r--r--gcc/ada/put_scos.adb2
-rw-r--r--gcc/ada/put_scos.ads2
-rw-r--r--gcc/ada/raise-gcc.c2
-rw-r--r--gcc/ada/raise.c2
-rw-r--r--gcc/ada/raise.h2
-rw-r--r--gcc/ada/repinfo-input.adb2
-rw-r--r--gcc/ada/repinfo-input.ads2
-rw-r--r--gcc/ada/repinfo.adb2
-rw-r--r--gcc/ada/repinfo.ads2
-rw-r--r--gcc/ada/repinfo.h2
-rw-r--r--gcc/ada/restrict.adb2
-rw-r--r--gcc/ada/restrict.ads2
-rw-r--r--gcc/ada/rident.ads2
-rw-r--r--gcc/ada/rtfinal.c2
-rw-r--r--gcc/ada/rtinit.c2
-rw-r--r--gcc/ada/rtsfind.adb2
-rw-r--r--gcc/ada/rtsfind.ads2
-rw-r--r--gcc/ada/runtime.h2
-rw-r--r--gcc/ada/s-oscons-tmplt.c2
-rw-r--r--gcc/ada/scans.adb2
-rw-r--r--gcc/ada/scans.ads2
-rw-r--r--gcc/ada/scil_ll.adb2
-rw-r--r--gcc/ada/scil_ll.ads2
-rw-r--r--gcc/ada/scn.adb2
-rw-r--r--gcc/ada/scn.ads2
-rw-r--r--gcc/ada/scng.adb2
-rw-r--r--gcc/ada/scng.ads2
-rw-r--r--gcc/ada/scos.adb2
-rw-r--r--gcc/ada/scos.ads2
-rw-r--r--gcc/ada/scos.h2
-rw-r--r--gcc/ada/sdefault.ads2
-rw-r--r--gcc/ada/seh_init.c2
-rw-r--r--gcc/ada/sem.adb2
-rw-r--r--gcc/ada/sem.ads2
-rw-r--r--gcc/ada/sem_aggr.adb2
-rw-r--r--gcc/ada/sem_aggr.ads2
-rw-r--r--gcc/ada/sem_attr.adb2
-rw-r--r--gcc/ada/sem_attr.ads2
-rw-r--r--gcc/ada/sem_aux.adb2
-rw-r--r--gcc/ada/sem_aux.ads2
-rw-r--r--gcc/ada/sem_case.adb2
-rw-r--r--gcc/ada/sem_case.ads2
-rw-r--r--gcc/ada/sem_cat.adb2
-rw-r--r--gcc/ada/sem_cat.ads2
-rw-r--r--gcc/ada/sem_ch10.adb2
-rw-r--r--gcc/ada/sem_ch10.ads2
-rw-r--r--gcc/ada/sem_ch11.adb2
-rw-r--r--gcc/ada/sem_ch11.ads2
-rw-r--r--gcc/ada/sem_ch12.adb2
-rw-r--r--gcc/ada/sem_ch12.ads2
-rw-r--r--gcc/ada/sem_ch13.adb2
-rw-r--r--gcc/ada/sem_ch13.ads2
-rw-r--r--gcc/ada/sem_ch2.adb2
-rw-r--r--gcc/ada/sem_ch2.ads2
-rw-r--r--gcc/ada/sem_ch3.adb2
-rw-r--r--gcc/ada/sem_ch3.ads2
-rw-r--r--gcc/ada/sem_ch4.adb2
-rw-r--r--gcc/ada/sem_ch4.ads2
-rw-r--r--gcc/ada/sem_ch5.adb2
-rw-r--r--gcc/ada/sem_ch5.ads2
-rw-r--r--gcc/ada/sem_ch6.adb2
-rw-r--r--gcc/ada/sem_ch6.ads2
-rw-r--r--gcc/ada/sem_ch7.adb2
-rw-r--r--gcc/ada/sem_ch7.ads2
-rw-r--r--gcc/ada/sem_ch8.adb2
-rw-r--r--gcc/ada/sem_ch8.ads2
-rw-r--r--gcc/ada/sem_ch9.adb2
-rw-r--r--gcc/ada/sem_ch9.ads2
-rw-r--r--gcc/ada/sem_dim.adb2
-rw-r--r--gcc/ada/sem_dim.ads2
-rw-r--r--gcc/ada/sem_disp.adb2
-rw-r--r--gcc/ada/sem_disp.ads2
-rw-r--r--gcc/ada/sem_dist.adb2
-rw-r--r--gcc/ada/sem_dist.ads2
-rw-r--r--gcc/ada/sem_elab.adb2
-rw-r--r--gcc/ada/sem_elab.ads2
-rw-r--r--gcc/ada/sem_elim.adb2
-rw-r--r--gcc/ada/sem_elim.ads2
-rw-r--r--gcc/ada/sem_eval.adb2
-rw-r--r--gcc/ada/sem_eval.ads2
-rw-r--r--gcc/ada/sem_intr.adb2
-rw-r--r--gcc/ada/sem_intr.ads2
-rw-r--r--gcc/ada/sem_mech.adb2
-rw-r--r--gcc/ada/sem_mech.ads2
-rw-r--r--gcc/ada/sem_prag.adb2
-rw-r--r--gcc/ada/sem_prag.ads2
-rw-r--r--gcc/ada/sem_res.adb2
-rw-r--r--gcc/ada/sem_res.ads2
-rw-r--r--gcc/ada/sem_scil.adb2
-rw-r--r--gcc/ada/sem_scil.ads2
-rw-r--r--gcc/ada/sem_smem.adb2
-rw-r--r--gcc/ada/sem_smem.ads2
-rw-r--r--gcc/ada/sem_type.adb2
-rw-r--r--gcc/ada/sem_type.ads2
-rw-r--r--gcc/ada/sem_util.adb2
-rw-r--r--gcc/ada/sem_util.ads2
-rw-r--r--gcc/ada/sem_warn.adb2
-rw-r--r--gcc/ada/sem_warn.ads2
-rw-r--r--gcc/ada/set_targ.adb2
-rw-r--r--gcc/ada/set_targ.ads2
-rw-r--r--gcc/ada/sfn_scan.adb2
-rw-r--r--gcc/ada/sfn_scan.ads2
-rw-r--r--gcc/ada/sigtramp-arm-qnx.c2
-rw-r--r--gcc/ada/sigtramp-armdroid.c2
-rw-r--r--gcc/ada/sigtramp-ios.c2
-rw-r--r--gcc/ada/sigtramp-qnx.c2
-rw-r--r--gcc/ada/sigtramp-vxworks-target.h2
-rw-r--r--gcc/ada/sigtramp-vxworks.c2
-rw-r--r--gcc/ada/sigtramp.h2
-rw-r--r--gcc/ada/sinfo-cn.adb2
-rw-r--r--gcc/ada/sinfo-cn.ads2
-rw-r--r--gcc/ada/sinfo-utils.adb2
-rw-r--r--gcc/ada/sinfo-utils.ads2
-rw-r--r--gcc/ada/sinfo.adb2
-rw-r--r--gcc/ada/sinfo.ads2
-rw-r--r--gcc/ada/sinput-c.adb2
-rw-r--r--gcc/ada/sinput-c.ads2
-rw-r--r--gcc/ada/sinput-d.adb2
-rw-r--r--gcc/ada/sinput-d.ads2
-rw-r--r--gcc/ada/sinput-l.adb2
-rw-r--r--gcc/ada/sinput-l.ads2
-rw-r--r--gcc/ada/sinput.adb2
-rw-r--r--gcc/ada/sinput.ads2
-rw-r--r--gcc/ada/snames.adb-tmpl2
-rw-r--r--gcc/ada/snames.ads-tmpl2
-rw-r--r--gcc/ada/socket.c2
-rw-r--r--gcc/ada/spark_xrefs.adb2
-rw-r--r--gcc/ada/spark_xrefs.ads2
-rw-r--r--gcc/ada/sprint.adb2
-rw-r--r--gcc/ada/sprint.ads2
-rw-r--r--gcc/ada/stand.ads2
-rw-r--r--gcc/ada/stringt.adb2
-rw-r--r--gcc/ada/stringt.ads2
-rw-r--r--gcc/ada/stringt.h2
-rw-r--r--gcc/ada/strub.adb2
-rw-r--r--gcc/ada/strub.ads2
-rw-r--r--gcc/ada/style.adb2
-rw-r--r--gcc/ada/style.ads2
-rw-r--r--gcc/ada/styleg.adb2
-rw-r--r--gcc/ada/styleg.ads2
-rw-r--r--gcc/ada/stylesw.adb2
-rw-r--r--gcc/ada/stylesw.ads2
-rw-r--r--gcc/ada/switch-b.adb2
-rw-r--r--gcc/ada/switch-b.ads2
-rw-r--r--gcc/ada/switch-c.adb2
-rw-r--r--gcc/ada/switch-c.ads2
-rw-r--r--gcc/ada/switch-m.adb2
-rw-r--r--gcc/ada/switch-m.ads2
-rw-r--r--gcc/ada/switch.adb2
-rw-r--r--gcc/ada/switch.ads2
-rw-r--r--gcc/ada/sysdep.c2
-rw-r--r--gcc/ada/table.adb2
-rw-r--r--gcc/ada/table.ads2
-rw-r--r--gcc/ada/targext.c2
-rw-r--r--gcc/ada/targparm.adb2
-rw-r--r--gcc/ada/targparm.ads2
-rw-r--r--gcc/ada/tbuild.adb2
-rw-r--r--gcc/ada/tbuild.ads2
-rw-r--r--gcc/ada/tempdir.adb2
-rw-r--r--gcc/ada/tempdir.ads2
-rw-r--r--gcc/ada/terminals.c2
-rw-r--r--gcc/ada/tracebak.c2
-rw-r--r--gcc/ada/treepr.adb2
-rw-r--r--gcc/ada/treepr.ads2
-rw-r--r--gcc/ada/ttypes.ads2
-rw-r--r--gcc/ada/types.adb2
-rw-r--r--gcc/ada/types.ads2
-rw-r--r--gcc/ada/types.h2
-rw-r--r--gcc/ada/uintp.adb2
-rw-r--r--gcc/ada/uintp.ads2
-rw-r--r--gcc/ada/uintp.h2
-rw-r--r--gcc/ada/uname.adb2
-rw-r--r--gcc/ada/uname.ads2
-rw-r--r--gcc/ada/urealp.adb2
-rw-r--r--gcc/ada/urealp.ads2
-rw-r--r--gcc/ada/urealp.h2
-rw-r--r--gcc/ada/usage.adb2
-rw-r--r--gcc/ada/usage.ads2
-rw-r--r--gcc/ada/validsw.adb2
-rw-r--r--gcc/ada/validsw.ads2
-rw-r--r--gcc/ada/vast.adb2
-rw-r--r--gcc/ada/vast.ads2
-rw-r--r--gcc/ada/vx_stack_info.c2
-rw-r--r--gcc/ada/warnsw.adb2
-rw-r--r--gcc/ada/warnsw.ads2
-rw-r--r--gcc/ada/widechar.adb2
-rw-r--r--gcc/ada/widechar.ads2
-rw-r--r--gcc/ada/xoscons.adb2
-rw-r--r--gcc/ada/xsnamest.adb2
-rw-r--r--gcc/ada/xutil.adb2
-rw-r--r--gcc/ada/xutil.ads2
-rw-r--r--gcc/alias.cc90
-rw-r--r--gcc/analyzer/ChangeLog53
-rw-r--r--gcc/analyzer/engine.cc2
-rw-r--r--gcc/analyzer/program-state.cc65
-rw-r--r--gcc/analyzer/program-state.h1
-rw-r--r--gcc/analyzer/region-model.cc438
-rw-r--r--gcc/analyzer/region-model.h4
-rw-r--r--gcc/analyzer/sm-taint.cc9
-rw-r--r--gcc/analyzer/sm.h6
-rw-r--r--gcc/analyzer/store.cc11
-rw-r--r--gcc/builtins.cc4
-rw-r--r--gcc/builtins.def4
-rw-r--r--gcc/c-family/ChangeLog17
-rw-r--r--gcc/c-family/c-common.cc6
-rw-r--r--gcc/c-family/c-pch.cc5
-rw-r--r--gcc/c-family/c.opt488
-rw-r--r--gcc/c/ChangeLog7
-rw-r--r--gcc/c/c-decl.cc2
-rw-r--r--gcc/calls.cc4
-rw-r--r--gcc/ccmp.cc12
-rw-r--r--gcc/cfgexpand.cc39
-rw-r--r--gcc/cgraph.cc10
-rw-r--r--gcc/cgraph.h9
-rw-r--r--gcc/cgraphunit.cc3
-rw-r--r--gcc/common.opt10
-rw-r--r--gcc/common/config/riscv/riscv-common.cc321
-rw-r--r--gcc/config.gcc4
-rw-r--r--gcc/config.in6
-rw-r--r--gcc/config/aarch64/aarch64-early-ra.cc28
-rw-r--r--gcc/config/aarch64/aarch64-ldp-fusion.cc639
-rw-r--r--gcc/config/aarch64/aarch64-ldpstp.md22
-rw-r--r--gcc/config/aarch64/aarch64-protos.h2
-rw-r--r--gcc/config/aarch64/aarch64-simd.md76
-rw-r--r--gcc/config/aarch64/aarch64-sve-builtins-shapes.cc8
-rw-r--r--gcc/config/aarch64/aarch64-sve-builtins.cc2
-rw-r--r--gcc/config/aarch64/aarch64-sve.md80
-rw-r--r--gcc/config/aarch64/aarch64-sve2.md26
-rw-r--r--gcc/config/aarch64/aarch64.cc104
-rw-r--r--gcc/config/aarch64/aarch64.opt4
-rw-r--r--gcc/config/aarch64/constraints.md2
-rw-r--r--gcc/config/aarch64/iterators.md19
-rw-r--r--gcc/config/arm/arm.md31
-rw-r--r--gcc/config/arm/parsecpu.awk4
-rw-r--r--gcc/config/avr/avr-c.cc306
-rw-r--r--gcc/config/avr/avr-devices.cc4
-rw-r--r--gcc/config/avr/avr-log.cc322
-rw-r--r--gcc/config/avr/avr-mcus.def4
-rw-r--r--gcc/config/avr/driver-avr.cc82
-rw-r--r--gcc/config/avr/gen-avr-mmcu-specs.cc73
-rw-r--r--gcc/config/avr/gen-avr-mmcu-texi.cc8
-rw-r--r--gcc/config/bpf/bpf.cc5
-rw-r--r--gcc/config/darwin.cc109
-rw-r--r--gcc/config/darwin.h48
-rw-r--r--gcc/config/gcn/gcn-hsa.h19
-rw-r--r--gcc/config/gcn/gcn-opts.h2
-rw-r--r--gcc/config/gcn/gcn-valu.md44
-rw-r--r--gcc/config/gcn/gcn.cc34
-rw-r--r--gcc/config/gcn/gcn.md4
-rw-r--r--gcc/config/gcn/mkoffload.cc82
-rw-r--r--gcc/config/i386/darwin.h2
-rw-r--r--gcc/config/i386/darwin32-biarch.h3
-rw-r--r--gcc/config/i386/darwin64-biarch.h3
-rw-r--r--gcc/config/i386/i386-expand.cc52
-rw-r--r--gcc/config/i386/i386-options.cc74
-rw-r--r--gcc/config/i386/i386.cc120
-rw-r--r--gcc/config/i386/i386.h16
-rw-r--r--gcc/config/ia64/ia64.cc3
-rw-r--r--gcc/config/loongarch/lasx.md30
-rw-r--r--gcc/config/loongarch/loongarch.cc64
-rw-r--r--gcc/config/loongarch/loongarch.h1
-rw-r--r--gcc/config/loongarch/loongarch.md6
-rw-r--r--gcc/config/m68k/m68k.cc52
-rw-r--r--gcc/config/mips/mips-opts.h7
-rw-r--r--gcc/config/mips/mips.cc5
-rw-r--r--gcc/config/mips/mips.h8
-rw-r--r--gcc/config/mips/mips.opt25
-rw-r--r--gcc/config/nvptx/nvptx.opt6
-rw-r--r--gcc/config/pa/pa.cc4
-rw-r--r--gcc/config/riscv/autovec.md6
-rw-r--r--gcc/config/riscv/constraints.md30
-rw-r--r--gcc/config/riscv/corev.def156
-rw-r--r--gcc/config/riscv/corev.md1908
-rw-r--r--gcc/config/riscv/predicates.md24
-rw-r--r--gcc/config/riscv/riscv-builtins.cc1
-rw-r--r--gcc/config/riscv/riscv-c.cc11
-rw-r--r--gcc/config/riscv/riscv-ftypes.def8
-rw-r--r--gcc/config/riscv/riscv-opts.h8
-rw-r--r--gcc/config/riscv/riscv-protos.h8
-rw-r--r--gcc/config/riscv/riscv-string.cc3
-rw-r--r--gcc/config/riscv/riscv-subset.h10
-rw-r--r--gcc/config/riscv/riscv-v.cc14
-rw-r--r--gcc/config/riscv/riscv-vector-builtins-bases.cc187
-rw-r--r--gcc/config/riscv/riscv-vector-builtins-bases.h31
-rw-r--r--gcc/config/riscv/riscv-vector-builtins-shapes.cc183
-rw-r--r--gcc/config/riscv/riscv-vector-builtins-shapes.h3
-rw-r--r--gcc/config/riscv/riscv-vector-builtins.cc163
-rw-r--r--gcc/config/riscv/riscv-vector-builtins.h3
-rw-r--r--gcc/config/riscv/riscv-vector-switch.def150
-rw-r--r--gcc/config/riscv/riscv-vsetvl.cc444
-rw-r--r--gcc/config/riscv/riscv.cc56
-rw-r--r--gcc/config/riscv/riscv.h4
-rw-r--r--gcc/config/riscv/riscv.md36
-rw-r--r--gcc/config/riscv/riscv.opt26
-rw-r--r--gcc/config/riscv/riscv_th_vector.h49
-rw-r--r--gcc/config/riscv/sfb.md32
-rw-r--r--gcc/config/riscv/t-riscv1
-rw-r--r--gcc/config/riscv/thead-vector-builtins-functions.def39
-rw-r--r--gcc/config/riscv/thead-vector.md352
-rw-r--r--gcc/config/riscv/thead.cc241
-rwxr-xr-xgcc/config/riscv/vector-crypto.md10
-rw-r--r--gcc/config/riscv/vector.md368
-rw-r--r--gcc/config/rs6000/darwin.h3
-rw-r--r--gcc/config/rs6000/rs6000-string.cc12
-rwxr-xr-xgcc/configure51
-rw-r--r--gcc/configure.ac21
-rw-r--r--gcc/convert.cc3
-rw-r--r--gcc/cp/ChangeLog114
-rw-r--r--gcc/cp/call.cc30
-rw-r--r--gcc/cp/coroutines.cc118
-rw-r--r--gcc/cp/cp-tree.h7
-rw-r--r--gcc/cp/decl.cc1
-rw-r--r--gcc/cp/decl2.cc4
-rw-r--r--gcc/cp/error.cc4
-rw-r--r--gcc/cp/init.cc4
-rw-r--r--gcc/cp/module.cc100
-rw-r--r--gcc/cp/name-lookup.cc1
-rw-r--r--gcc/cp/pt.cc94
-rw-r--r--gcc/cp/typeck2.cc2
-rw-r--r--gcc/doc/extend.texi953
-rw-r--r--gcc/doc/generic.texi2
-rw-r--r--gcc/doc/install.texi19
-rw-r--r--gcc/doc/invoke.texi715
-rw-r--r--gcc/doc/rtl.texi2
-rw-r--r--gcc/doc/sourcebuild.texi23
-rw-r--r--gcc/dwarf2out.cc27
-rw-r--r--gcc/except.cc3
-rw-r--r--gcc/expr.cc135
-rw-r--r--gcc/expr.h3
-rw-r--r--gcc/fold-const.cc53
-rw-r--r--gcc/fortran/ChangeLog39
-rw-r--r--gcc/fortran/parse.cc1
-rw-r--r--gcc/fortran/trans-array.cc7
-rw-r--r--gcc/fortran/trans-expr.cc205
-rw-r--r--gcc/fwprop.cc14
-rw-r--r--gcc/genopinit.cc43
-rw-r--r--gcc/gimple-isel.cc3
-rw-r--r--gcc/gimple-lower-bitint.cc62
-rw-r--r--gcc/gimple-range-phi.cc6
-rw-r--r--gcc/gimple-range-phi.h1
-rw-r--r--gcc/gimple-ssa-warn-restrict.cc3
-rw-r--r--gcc/go/gofrontend/MERGE2
-rw-r--r--gcc/go/gofrontend/expressions.cc34
-rw-r--r--gcc/go/gofrontend/expressions.h35
-rw-r--r--gcc/go/gofrontend/gogo.cc6
-rw-r--r--gcc/haifa-sched.cc8
-rw-r--r--gcc/ipa-cp.cc2
-rw-r--r--gcc/ipa-param-manipulation.cc112
-rw-r--r--gcc/ipa-param-manipulation.h5
-rw-r--r--gcc/iterator-utils.h73
-rw-r--r--gcc/jit/ChangeLog13
-rw-r--r--gcc/jit/jit-builtins.cc3
-rw-r--r--gcc/jit/jit-recording.h14
-rw-r--r--gcc/jit/libgccjit.cc4
-rw-r--r--gcc/lra-constraints.cc4
-rw-r--r--gcc/lto-section-names.h10
-rw-r--r--gcc/lto-streamer-in.cc5
-rw-r--r--gcc/m2/ChangeLog139
-rw-r--r--gcc/m2/Make-lang.in6
-rwxr-xr-xgcc/m2/configure18
-rw-r--r--gcc/m2/configure.ac6
-rw-r--r--gcc/m2/gm2-compiler/M2BasicBlock.mod5
-rw-r--r--gcc/m2/gm2-compiler/M2Check.mod108
-rw-r--r--gcc/m2/gm2-compiler/M2Code.mod24
-rw-r--r--gcc/m2/gm2-compiler/M2GCCDeclare.mod9
-rw-r--r--gcc/m2/gm2-compiler/M2GenGCC.def2
-rw-r--r--gcc/m2/gm2-compiler/M2GenGCC.mod125
-rw-r--r--gcc/m2/gm2-compiler/M2Optimize.mod12
-rw-r--r--gcc/m2/gm2-compiler/M2Options.def32
-rw-r--r--gcc/m2/gm2-compiler/M2Options.mod79
-rw-r--r--gcc/m2/gm2-compiler/M2Quads.mod29
-rw-r--r--gcc/m2/gm2-compiler/M2SSA.mod2
-rw-r--r--gcc/m2/gm2-compiler/M2Scope.def21
-rw-r--r--gcc/m2/gm2-compiler/M2Scope.mod40
-rw-r--r--gcc/m2/gm2-compiler/SymbolTable.mod1
-rw-r--r--gcc/m2/gm2-gcc/m2configure.cc55
-rw-r--r--gcc/m2/gm2-gcc/m2configure.def37
-rw-r--r--gcc/m2/gm2-gcc/m2configure.h13
-rw-r--r--gcc/m2/gm2-gcc/m2options.h4
-rw-r--r--gcc/m2/gm2-gcc/m2type.cc20
-rw-r--r--gcc/m2/gm2-lang.cc10
-rw-r--r--gcc/m2/gm2-libs/FIO.mod6
-rw-r--r--gcc/m2/gm2-libs/libc.def2
-rw-r--r--gcc/m2/gm2config.aci.in6
-rw-r--r--gcc/m2/gm2spec.cc24
-rw-r--r--gcc/m2/mc/mc.flex4
-rw-r--r--gcc/objc/ChangeLog21
-rw-r--r--gcc/objc/objc-act.cc7
-rw-r--r--gcc/objc/objc-next-runtime-abi-02.cc18
-rw-r--r--gcc/objc/objc-runtime-shared-support.cc4
-rw-r--r--gcc/rtl-ssa.h1
-rw-r--r--gcc/rtl-ssa/accesses.cc10
-rw-r--r--gcc/rtl-ssa/accesses.h13
-rw-r--r--gcc/rtl-ssa/changes.cc74
-rw-r--r--gcc/rtl-ssa/functions.h13
-rw-r--r--gcc/rtl-ssa/member-fns.inl29
-rw-r--r--gcc/rust/ChangeLog7
-rw-r--r--gcc/sched-deps.cc6
-rw-r--r--gcc/sched-int.h2
-rw-r--r--gcc/testsuite/ChangeLog1238
-rw-r--r--gcc/testsuite/c-c++-common/analyzer/compound-assignment-5.c3
-rw-r--r--gcc/testsuite/c-c++-common/analyzer/compound-assignment-pr112969.c35
-rw-r--r--gcc/testsuite/c-c++-common/analyzer/strlen-pr111361.c18
-rw-r--r--gcc/testsuite/c-c++-common/analyzer/strlen-pr112811.c18
-rw-r--r--gcc/testsuite/c-c++-common/analyzer/strncpy-1.c3
-rw-r--r--gcc/testsuite/c-c++-common/analyzer/strncpy-pr111361.c8
-rw-r--r--gcc/testsuite/c-c++-common/dfp/pr36800.c2
-rw-r--r--gcc/testsuite/c-c++-common/dfp/pr39034.c1
-rw-r--r--gcc/testsuite/c-c++-common/dfp/pr39035.c1
-rw-r--r--gcc/testsuite/c-c++-common/hwasan/alloca-outside-caught.c2
-rw-r--r--gcc/testsuite/c-c++-common/hwasan/hwasan-poison-optimisation.c2
-rw-r--r--gcc/testsuite/c-c++-common/hwasan/vararray-outside-caught.c2
-rw-r--r--gcc/testsuite/c-c++-common/pr107058.c7
-rw-r--r--gcc/testsuite/c-c++-common/strub-unsupported-2.c1
-rw-r--r--gcc/testsuite/c-c++-common/strub-unsupported-3.c1
-rw-r--r--gcc/testsuite/c-c++-common/strub-unsupported.c1
-rw-r--r--gcc/testsuite/g++.dg/Wattributes-3.C4
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/pass-1_main.C1
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/pass-2_main.C1
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/pass-3_main.C1
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/pass-4_main.C1
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/pass-5_main.C1
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/pass-6_main.C1
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/return-1_main.C1
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/return-2_main.C1
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/return-3_main.C1
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/return-4_main.C1
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/return-5_main.C1
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/return-6_main.C1
-rw-r--r--gcc/testsuite/g++.dg/coroutines/co-await-initlist2.C29
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/alias-decl-nontype1.C9
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/initlist-pmf2.C12
-rw-r--r--gcc/testsuite/g++.dg/cpp1y/lambda-generic-nested3.C11
-rw-r--r--gcc/testsuite/g++.dg/cpp23/explicit-obj-diagnostics10.C8
-rw-r--r--gcc/testsuite/g++.dg/cpp2a/concepts-narrowing1.C16
-rw-r--r--gcc/testsuite/g++.dg/cpp2a/concepts-using4.C24
-rw-r--r--gcc/testsuite/g++.dg/cpp2a/nontype-class63.C24
-rw-r--r--gcc/testsuite/g++.dg/cpp2a/nontype-class63a.C24
-rw-r--r--gcc/testsuite/g++.dg/cpp2a/spaceship-sfinae3.C22
-rw-r--r--gcc/testsuite/g++.dg/eh/dfp-1.C1
-rw-r--r--gcc/testsuite/g++.dg/eh/dfp-2.C1
-rw-r--r--gcc/testsuite/g++.dg/eh/dfp-saves-aarch64.C1
-rw-r--r--gcc/testsuite/g++.dg/eh/return3.C17
-rw-r--r--gcc/testsuite/g++.dg/expr/ptrmem11.C17
-rw-r--r--gcc/testsuite/g++.dg/modules/concept-10_a.H25
-rw-r--r--gcc/testsuite/g++.dg/modules/concept-10_b.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/concept-9.h18
-rw-r--r--gcc/testsuite/g++.dg/modules/concept-9_a.C13
-rw-r--r--gcc/testsuite/g++.dg/modules/concept-9_b.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/debug-2_a.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/debug-2_b.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/debug-2_c.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/debug-3_a.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/debug-3_b.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/indirect-1_b.C20
-rw-r--r--gcc/testsuite/g++.dg/modules/indirect-1_c.C30
-rw-r--r--gcc/testsuite/g++.dg/modules/indirect-2_b.C20
-rw-r--r--gcc/testsuite/g++.dg/modules/indirect-2_c.C10
-rw-r--r--gcc/testsuite/g++.dg/modules/indirect-3_b.C16
-rw-r--r--gcc/testsuite/g++.dg/modules/indirect-3_c.C10
-rw-r--r--gcc/testsuite/g++.dg/modules/indirect-4_b.C14
-rw-r--r--gcc/testsuite/g++.dg/modules/indirect-4_c.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/init-4_a.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/init-4_b.C11
-rw-r--r--gcc/testsuite/g++.dg/modules/init-6_a.H20
-rw-r--r--gcc/testsuite/g++.dg/modules/init-6_b.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/namespace-5_a.C6
-rw-r--r--gcc/testsuite/g++.dg/modules/namespace-5_b.C7
-rw-r--r--gcc/testsuite/g++.dg/modules/namespace-5_c.C5
-rw-r--r--gcc/testsuite/g++.dg/modules/pr113292_c.C2
-rw-r--r--gcc/testsuite/g++.dg/modules/pr113580_a.C10
-rw-r--r--gcc/testsuite/g++.dg/modules/pr113580_b.C10
-rw-r--r--gcc/testsuite/g++.dg/pch/line-map-1.C4
-rw-r--r--gcc/testsuite/g++.dg/pch/line-map-1.Hs1
-rw-r--r--gcc/testsuite/g++.dg/pch/line-map-2.C6
-rw-r--r--gcc/testsuite/g++.dg/pch/line-map-2.Hs1
-rw-r--r--gcc/testsuite/g++.dg/pch/line-map-3.C23
-rw-r--r--gcc/testsuite/g++.dg/pch/line-map-3.Hs1
-rw-r--r--gcc/testsuite/g++.dg/warn/Wdangling-reference14.C22
-rw-r--r--gcc/testsuite/g++.dg/warn/Wdangling-reference15.C31
-rw-r--r--gcc/testsuite/g++.dg/warn/Wdangling-reference16.C13
-rw-r--r--gcc/testsuite/g++.dg/warn/Wdangling-reference17.C27
-rw-r--r--gcc/testsuite/g++.target/loongarch/got-load.C2
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr110603.c16
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr110705-1.c27
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr113089.c26
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr113114.c9
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr113603.c40
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr113616.c19
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr113623.c137
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/pr80692.c1
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/pr94688.c1
-rw-r--r--gcc/testsuite/gcc.dg/bitint-73.c18
-rw-r--r--gcc/testsuite/gcc.dg/bitint-74.c16
-rw-r--r--gcc/testsuite/gcc.dg/bitint-75.c11
-rw-r--r--gcc/testsuite/gcc.dg/bitint-76.c16
-rw-r--r--gcc/testsuite/gcc.dg/bitint-77.c25
-rw-r--r--gcc/testsuite/gcc.dg/bitint-78.c21
-rw-r--r--gcc/testsuite/gcc.dg/debug/btf/btf-bitfields-3.c2
-rw-r--r--gcc/testsuite/gcc.dg/debug/btf/btf-enum-1.c2
-rw-r--r--gcc/testsuite/gcc.dg/debug/btf/btf-enum-small.c2
-rw-r--r--gcc/testsuite/gcc.dg/debug/btf/btf-enum64-1.c2
-rw-r--r--gcc/testsuite/gcc.dg/debug/pr112718.c12
-rw-r--r--gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-1.c2
-rw-r--r--gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-2.c2
-rw-r--r--gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-3.c2
-rw-r--r--gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-4.c2
-rw-r--r--gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d32-1.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d32-2.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d64-1.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d64-2.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/builtin-snan-1.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/builtin-tgmath-dfp.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/c23-float-dfp-4.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/c23-float-dfp-5.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/c23-float-dfp-6.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/c23-float-dfp-7.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/pr108068.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/pr97439.c1
-rw-r--r--gcc/testsuite/gcc.dg/fail_always_inline.c2
-rw-r--r--gcc/testsuite/gcc.dg/ipa/iinline-4.c2
-rw-r--r--gcc/testsuite/gcc.dg/ipa/inline-5.c2
-rw-r--r--gcc/testsuite/gcc.dg/ipa/ipcp-cstagg-7.c2
-rw-r--r--gcc/testsuite/gcc.dg/ipa/pr108007.c32
-rw-r--r--gcc/testsuite/gcc.dg/ipa/pr112616.c28
-rw-r--r--gcc/testsuite/gcc.dg/ipa/pr113490.c31
-rw-r--r--gcc/testsuite/gcc.dg/pic-2.c1
-rw-r--r--gcc/testsuite/gcc.dg/plugin/analyzer_kernel_plugin.c18
-rw-r--r--gcc/testsuite/gcc.dg/plugin/infoleak-pr112969.c52
-rw-r--r--gcc/testsuite/gcc.dg/plugin/plugin.exp5
-rw-r--r--gcc/testsuite/gcc.dg/plugin/taint-pr112927.c49
-rw-r--r--gcc/testsuite/gcc.dg/plugin/taint-pr112977.c44
-rw-r--r--gcc/testsuite/gcc.dg/pr101195.c8
-rw-r--r--gcc/testsuite/gcc.dg/pr105522.c17
-rw-r--r--gcc/testsuite/gcc.dg/pr113445.c61
-rw-r--r--gcc/testsuite/gcc.dg/pr113492.c43
-rw-r--r--gcc/testsuite/gcc.dg/pr113602.c10
-rw-r--r--gcc/testsuite/gcc.dg/pr113659.c14
-rw-r--r--gcc/testsuite/gcc.dg/pr84877.c2
-rw-r--r--gcc/testsuite/gcc.dg/pthread-init-2.c3
-rw-r--r--gcc/testsuite/gcc.dg/signbit-2.c1
-rw-r--r--gcc/testsuite/gcc.dg/torture/bitint-51.c88
-rw-r--r--gcc/testsuite/gcc.dg/torture/bitint-52.c23
-rw-r--r--gcc/testsuite/gcc.dg/torture/bitint-54.c29
-rw-r--r--gcc/testsuite/gcc.dg/torture/no-callee-saved-run-1a.c23
-rw-r--r--gcc/testsuite/gcc.dg/torture/no-callee-saved-run-1b.c59
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr110422.c10
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr113255.c27
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr47917.c2
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr95906.c2
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/slsr-13.c4
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/vector-4.c3
-rw-r--r--gcc/testsuite/gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul1-7.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/no-scevccp-outer-7.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr113281-1.c17
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr113281-2.c50
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr113281-3.c39
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr113281-4.c55
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr113281-5.c66
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr113576.c157
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr25413a.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-reduc-10a.c20
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-reduc-10b.c20
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-reduc-10c.c6
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-reduc-10d.c6
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-reduc-10e.c6
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-cond-arith-2.c8
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-early-break_104-pr113373.c19
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-early-break_107-pr113364.c22
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-ifcvt-19.c8
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-outer-4c-big-array.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s16a.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8a.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8b.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u16b.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u8a.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u8b.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-1a.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-1b-big-array.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-1c-big-array.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-2a.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-2b-big-array.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-simd-clone-16c.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-simd-clone-16d.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-simd-clone-17c.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-simd-clone-17d.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-simd-clone-18c.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-simd-clone-18d.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-dot-s8b.c4
-rw-r--r--gcc/testsuite/gcc.target/aarch64/builtin_apply-1.c12
-rw-r--r--gcc/testsuite/gcc.target/aarch64/ccmp_3.c20
-rw-r--r--gcc/testsuite/gcc.target/aarch64/ccmp_4.c35
-rw-r--r--gcc/testsuite/gcc.target/aarch64/ccmp_5.c20
-rw-r--r--gcc/testsuite/gcc.target/aarch64/pr113114.c7
-rw-r--r--gcc/testsuite/gcc.target/aarch64/pr113356.C8
-rw-r--r--gcc/testsuite/gcc.target/aarch64/pr113485.c25
-rw-r--r--gcc/testsuite/gcc.target/aarch64/pr113550.c48
-rw-r--r--gcc/testsuite/gcc.target/aarch64/pr113552.c17
-rw-r--r--gcc/testsuite/gcc.target/aarch64/pr113573.c40
-rw-r--r--gcc/testsuite/gcc.target/aarch64/simd_pcs_attribute-3.c4
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/acle/general/dupq_5.c2
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/pr109636_1.c13
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/pr109636_2.c13
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/pr113572.c12
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve2/pr109636_1.c13
-rw-r--r--gcc/testsuite/gcc.target/arm/rev16_1.c (renamed from gcc/testsuite/gcc.target/arm/rev16.c)0
-rw-r--r--gcc/testsuite/gcc.target/arm/rev16_2.c20
-rw-r--r--gcc/testsuite/gcc.target/bpf/helper-skb-ancestor-cgroup-id.c5
-rw-r--r--gcc/testsuite/gcc.target/bpf/naked-1.c1
-rw-r--r--gcc/testsuite/gcc.target/bpf/naked-2.c10
-rw-r--r--gcc/testsuite/gcc.target/i386/adx-check.h3
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512fp16-vscalefph-1b.c3
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512fp16vl-vaddph-1b.c1
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512fp16vl-vcmpph-1b.c1
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512fp16vl-vdivph-1b.c1
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512fp16vl-vfpclassph-1b.c1
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512fp16vl-vgetexpph-1b.c1
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512fp16vl-vgetmantph-1b.c1
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512fp16vl-vmaxph-1b.c1
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512fp16vl-vminph-1b.c1
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512fp16vl-vmulph-1b.c1
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512fp16vl-vrcpph-1b.c1
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512fp16vl-vreduceph-1b.c1
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512fp16vl-vrndscaleph-1b.c1
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512fp16vl-vrsqrtph-1b.c1
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512fp16vl-vscalefph-1b.c1
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512fp16vl-vsqrtph-1b.c1
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512fp16vl-vsubph-1b.c1
-rw-r--r--gcc/testsuite/gcc.target/i386/libcall-1.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/no-callee-saved-1.c30
-rw-r--r--gcc/testsuite/gcc.target/i386/no-callee-saved-10.c46
-rw-r--r--gcc/testsuite/gcc.target/i386/no-callee-saved-11.c11
-rw-r--r--gcc/testsuite/gcc.target/i386/no-callee-saved-12.c10
-rw-r--r--gcc/testsuite/gcc.target/i386/no-callee-saved-13.c16
-rw-r--r--gcc/testsuite/gcc.target/i386/no-callee-saved-14.c16
-rw-r--r--gcc/testsuite/gcc.target/i386/no-callee-saved-15.c17
-rw-r--r--gcc/testsuite/gcc.target/i386/no-callee-saved-16.c16
-rw-r--r--gcc/testsuite/gcc.target/i386/no-callee-saved-17.c16
-rw-r--r--gcc/testsuite/gcc.target/i386/no-callee-saved-18.c51
-rw-r--r--gcc/testsuite/gcc.target/i386/no-callee-saved-2.c30
-rw-r--r--gcc/testsuite/gcc.target/i386/no-callee-saved-3.c8
-rw-r--r--gcc/testsuite/gcc.target/i386/no-callee-saved-4.c8
-rw-r--r--gcc/testsuite/gcc.target/i386/no-callee-saved-5.c11
-rw-r--r--gcc/testsuite/gcc.target/i386/no-callee-saved-6.c12
-rw-r--r--gcc/testsuite/gcc.target/i386/no-callee-saved-7.c49
-rw-r--r--gcc/testsuite/gcc.target/i386/no-callee-saved-8.c50
-rw-r--r--gcc/testsuite/gcc.target/i386/no-callee-saved-9.c49
-rw-r--r--gcc/testsuite/gcc.target/i386/part-vect-copysignhf.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/pr107057.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/pr111267.c14
-rw-r--r--gcc/testsuite/gcc.target/i386/pr113122-1.c10
-rw-r--r--gcc/testsuite/gcc.target/i386/pr113122-2.c11
-rw-r--r--gcc/testsuite/gcc.target/i386/pr113122-3.c9
-rw-r--r--gcc/testsuite/gcc.target/i386/pr113122-4.c10
-rw-r--r--gcc/testsuite/gcc.target/i386/pr113622-1.c12
-rw-r--r--gcc/testsuite/gcc.target/i386/pr113622-2.c12
-rw-r--r--gcc/testsuite/gcc.target/i386/pr113622-3.c12
-rw-r--r--gcc/testsuite/gcc.target/i386/pr38534-1.c26
-rw-r--r--gcc/testsuite/gcc.target/i386/pr38534-2.c18
-rw-r--r--gcc/testsuite/gcc.target/i386/pr38534-3.c19
-rw-r--r--gcc/testsuite/gcc.target/i386/pr38534-4.c18
-rw-r--r--gcc/testsuite/gcc.target/i386/pr38534-5.c26
-rw-r--r--gcc/testsuite/gcc.target/i386/pr38534-6.c26
-rw-r--r--gcc/testsuite/gcc.target/i386/pr80833-1.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/readeflags-1.c3
-rw-r--r--gcc/testsuite/gcc.target/i386/rtm-check.h3
-rw-r--r--gcc/testsuite/gcc.target/i386/sha-check.h3
-rw-r--r--gcc/testsuite/gcc.target/i386/stack-check-17.c19
-rw-r--r--gcc/testsuite/gcc.target/i386/writeeflags-1.c3
-rw-r--r--gcc/testsuite/gcc.target/loongarch/explicit-relocs-auto-tls-ld-gd.c3
-rw-r--r--gcc/testsuite/gcc.target/loongarch/invariant-recip.c33
-rw-r--r--gcc/testsuite/gcc.target/loongarch/short-circuit.c19
-rw-r--r--gcc/testsuite/gcc.target/loongarch/vect-extract.c20
-rw-r--r--gcc/testsuite/gcc.target/m68k/pr108640.c7
-rw-r--r--gcc/testsuite/gcc.target/m68k/pr110934.c9
-rw-r--r--gcc/testsuite/gcc.target/m68k/pr82420.c9
-rw-r--r--gcc/testsuite/gcc.target/powerpc/block-cmp-1.c1
-rw-r--r--gcc/testsuite/gcc.target/powerpc/block-cmp-4.c3
-rw-r--r--gcc/testsuite/gcc.target/powerpc/block-cmp-8.c8
-rw-r--r--gcc/testsuite/gcc.target/riscv/arch-23.c1
-rw-r--r--gcc/testsuite/gcc.target/riscv/arch-27.c2
-rw-r--r--gcc/testsuite/gcc.target/riscv/arch-28.c2
-rw-r--r--gcc/testsuite/gcc.target/riscv/arch-33.c5
-rw-r--r--gcc/testsuite/gcc.target/riscv/arch-34.c5
-rw-r--r--gcc/testsuite/gcc.target/riscv/attribute-10.c4
-rw-r--r--gcc/testsuite/gcc.target/riscv/cset-sext-rtl.c87
-rw-r--r--gcc/testsuite/gcc.target/riscv/cset-sext-rtl32.c84
-rw-r--r--gcc/testsuite/gcc.target/riscv/cset-sext-sfb-rtl.c88
-rw-r--r--gcc/testsuite/gcc.target/riscv/cset-sext-sfb-rtl32.c85
-rw-r--r--gcc/testsuite/gcc.target/riscv/cset-sext-thead-rtl.c86
-rw-r--r--gcc/testsuite/gcc.target/riscv/cset-sext-ventana-rtl.c86
-rw-r--r--gcc/testsuite/gcc.target/riscv/cset-sext-zicond-rtl.c86
-rw-r--r--gcc/testsuite/gcc.target/riscv/cset-sext-zicond-rtl32.c83
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-alu-fail-compile.c40
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-abs-b-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-abs-h-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-add-b-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-add-div2-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-add-div4-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-add-div8-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-add-h-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-add-sc-b-compile-1.c30
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-add-sc-h-compile-1.c30
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-and-b-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-and-h-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-and-sc-b-compile-1.c30
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-and-sc-h-compile-1.c30
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-avg-b-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-avg-h-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-avg-sc-b-compile-1.c30
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-avg-sc-h-compile-1.c30
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-avgu-b-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-avgu-h-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-avgu-sc-b-compile-1.c24
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-avgu-sc-h-compile-1.c24
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-cmpeq-b-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-cmpeq-h-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-cmpeq-sc-b-compile-1.c30
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-cmpeq-sc-h-compile-1.c30
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-cmpge-b-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-cmpge-h-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-cmpge-sc-b-compile-1.c30
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-cmpge-sc-h-compile-1.c30
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-cmpgeu-b-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-cmpgeu-h-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-cmpgeu-sc-b-compile-1.c24
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-cmpgeu-sc-h-compile-1.c24
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-cmpgt-b-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-cmpgt-h-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-cmpgt-sc-b-compile-1.c30
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-cmpgt-sc-h-compile-1.c30
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-cmpgtu-b-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-cmpgtu-h-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-cmpgtu-sc-b-compile-1.c24
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-cmpgtu-sc-h-compile-1.c24
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-cmple-b-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-cmple-h-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-cmple-sc-b-compile-1.c30
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-cmple-sc-h-compile-1.c30
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-cmpleu-b-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-cmpleu-h-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-cmpleu-sc-b-compile-1.c24
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-cmpleu-sc-h-compile-1.c24
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-cmplt-b-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-cmplt-h-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-cmplt-sc-b-compile-1.c30
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-cmplt-sc-h-compile-1.c30
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-cmpltu-b-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-cmpltu-h-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-cmpltu-sc-b-compile-1.c24
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-cmpltu-sc-h-compile-1.c24
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-cmpne-b-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-cmpne-h-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-cmpne-sc-b-compile-1.c30
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-cmpne-sc-h-compile-1.c30
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-cplxconj-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-cplxmul-i-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-cplxmul-i-div2-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-cplxmul-i-div4-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-cplxmul-i-div8-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-cplxmul-r-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-cplxmul-r-div2-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-cplxmul-r-div4-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-cplxmul-r-div8-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-dotsp-b-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-dotsp-h-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-dotsp-sc-b-compile-1.c30
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-dotsp-sc-h-compile-1.c30
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-dotup-b-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-dotup-h-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-dotup-sc-b-compile-1.c24
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-dotup-sc-h-compile-1.c24
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-dotusp-b-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-dotusp-h-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-dotusp-sc-b-compile-1.c30
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-dotusp-sc-h-compile-1.c30
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-extract-b-compile-1.c23
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-extract-h-compile-1.c23
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-extractu-b-compile-1.c23
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-extractu-h-compile-1.c23
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-insert-b-compile-1.c23
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-insert-h-compile-1.c23
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-march-compile-1.c1765
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-max-b-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-max-h-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-max-sc-b-compile-1.c30
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-max-sc-h-compile-1.c30
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-maxu-b-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-maxu-h-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-maxu-sc-b-compile-1.c24
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-maxu-sc-h-compile-1.c24
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-min-b-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-min-h-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-min-sc-b-compile-1.c30
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-min-sc-h-compile-1.c30
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-minu-b-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-minu-h-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-minu-sc-b-compile-1.c24
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-minu-sc-h-compile-1.c24
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-neg-b-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-neg-h-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-or-b-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-or-h-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-or-sc-b-compile-1.c30
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-or-sc-h-compile-1.c30
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-pack-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-pack-h-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-packhi-b-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-packlo-b-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-sdotsp-b-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-sdotsp-h-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-sdotsp-sc-b-compile-1.c30
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-sdotsp-sc-h-compile-1.c30
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-sdotup-b-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-sdotup-h-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-sdotup-sc-b-compile-1.c24
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-sdotup-sc-h-compile-1.c24
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-sdotusp-b-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-sdotusp-h-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-sdotusp-sc-b-compile-1.c30
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-sdotusp-sc-h-compile-1.c30
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-shuffle-sci-h-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-shuffle2-b-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-shuffle2-h-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-shufflei0-sci-b-compile-1.c19
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-shufflei1-sci-b-compile-1.c19
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-shufflei2-sci-b-compile-1.c19
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-shufflei3-sci-b-compile-1.c19
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-sll-b-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-sll-h-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-sll-sc-b-compile-1.c24
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-sll-sc-h-compile-1.c24
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-sra-b-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-sra-h-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-sra-sc-b-compile-1.c24
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-sra-sc-h-compile-1.c24
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-srl-b-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-srl-h-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-srl-sc-b-compile-1.c24
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-srl-sc-h-compile-1.c24
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-sub-b-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-sub-div2-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-sub-div4-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-sub-div8-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-sub-h-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-sub-sc-b-compile-1.c30
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-sub-sc-h-compile-1.c30
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-subrotmj-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-subrotmj-div2-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-subrotmj-div4-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-subrotmj-div8-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-xor-b-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-xor-h-compile-1.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-xor-sc-b-compile-1.c30
-rw-r--r--gcc/testsuite/gcc.target/riscv/cv-simd-xor-sc-h-compile-1.c30
-rw-r--r--gcc/testsuite/gcc.target/riscv/pr105314-rtl.c78
-rw-r--r--gcc/testsuite/gcc.target/riscv/pr105314-rtl32.c78
-rw-r--r--gcc/testsuite/gcc.target/riscv/pr105314.c7
-rw-r--r--gcc/testsuite/gcc.target/riscv/pr113095.c21
-rw-r--r--gcc/testsuite/gcc.target/riscv/predef-__riscv_th_v_intrinsic.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/shift-rv32gcv.c2
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/shift-rv64gcv.c2
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/cmp/cmp_vi-1.c16
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/cmp/cmp_vi-2.c16
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/cmp/cmp_vi-3.c28
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/cmp/cmp_vi-4.c28
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/cmp/cmp_vi-5.c16
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/cmp/cmp_vi-6.c16
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/cmp/cmp_vi-7.c28
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/cmp/cmp_vi-8.c28
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/cmp/cmp_vi-9.c18
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/cmp/macro.h11
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/pr112971.c18
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/pr113469.c54
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/mod-1.c2
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/shift-1.c2
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/shift-2.c2
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/abi-1.c2
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-args-1-run.c2
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-args-1.c2
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-args-2-run.c2
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-args-2.c2
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-args-3-run.c2
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-args-3.c2
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-args-4-run.c2
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-args-4.c2
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-error-1.c2
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-return-run.c2
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-return.c2
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-variant_cc.c2
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/abi-callee-saved-1-fixed-1.c2
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/abi-callee-saved-1-fixed-2.c2
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/abi-callee-saved-1-save-restore.c2
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/abi-callee-saved-1-zcmp.c2
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/abi-callee-saved-1.c2
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/abi-callee-saved-2-save-restore.c2
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/abi-callee-saved-2-zcmp.c2
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/abi-callee-saved-2.c2
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/big_endian-2.c2
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-69.c6
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-70.c6
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-71.c6
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/misc_vreinterpret_vbool_vint.c4
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv32_vadd.c2
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv32_vfadd.c2
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv32_vget_vset.c3
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv32_vloxseg2ei16.c1
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv32_vreinterpret.c6
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv64_vadd.c2
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv64_vfadd.c2
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv64_vget_vset.c3
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv64_vloxseg2ei16.c2
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv64_vreinterpret.c6
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/pr109092.c4
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/pr113420-1.c30
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/pr113420-2.c31
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/pragma-1.c2
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/spill-10.c11
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/spill-11.c17
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/spill-9.c12
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/tuple_vundefined.c4
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/vcreate.c7
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/vlmul_ext-1.c3
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/zvfh-over-zvfhmin.c12
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/zvfhmin-intrinsic.c13
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/zvl-unimplemented-1.c2
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/zvl-unimplemented-2.c2
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/vsetvl/attribute-1.c47
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/vsetvl/attribute-2.c37
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/vsetvl/attribute-3.c36
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-107.c2
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr113429.c72
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/xtheadvector.c13
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/prefix.c12
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/vlb-vsb.c68
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/vlbu-vsb.c68
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/vlh-vsh.c68
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/vlhu-vsh.c68
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/vlw-vsw.c68
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/vlwu-vsw.c68
-rw-r--r--gcc/testsuite/gcc.target/riscv/sfb.c24
-rw-r--r--gcc/testsuite/gcc.target/sh/pr59533-1.c8
-rw-r--r--gcc/testsuite/gfortran.dg/bounds_check_24.f9028
-rw-r--r--gcc/testsuite/gfortran.dg/graphite/vect-pr40979.f901
-rw-r--r--gcc/testsuite/gfortran.dg/optional_absent_10.f90219
-rw-r--r--gcc/testsuite/gfortran.dg/optional_absent_11.f9099
-rw-r--r--gcc/testsuite/gfortran.dg/optional_absent_9.f90340
-rw-r--r--gcc/testsuite/gfortran.dg/pr104908.f9032
-rw-r--r--gcc/testsuite/gfortran.dg/vect/fast-math-mgrid-resid.f1
-rw-r--r--gcc/testsuite/gm2/pim/fail/badpointer.mod22
-rw-r--r--gcc/testsuite/gm2/pim/fail/badpointer2.mod24
-rw-r--r--gcc/testsuite/gm2/pim/fail/badpointer3.mod24
-rw-r--r--gcc/testsuite/gm2/pim/fail/badpointer4.mod20
-rw-r--r--gcc/testsuite/gm2/pim/fail/strconst.def6
-rw-r--r--gcc/testsuite/gm2/projects/pim/run/pass/pegfive/pegfive.mod767
-rw-r--r--gcc/testsuite/gm2/projects/pim/run/pass/pegfive/projects-pim-run-pass-pegfive.exp39
-rw-r--r--gcc/testsuite/go.dg/pr113636.go40
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue20185.go2
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue33386.go2
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue4085a.go4
-rw-r--r--gcc/testsuite/go.test/test/shift1.go8
-rw-r--r--gcc/testsuite/jit.dg/all-non-failing-tests.h10
-rw-r--r--gcc/testsuite/jit.dg/jit.exp49
-rw-r--r--gcc/testsuite/jit.dg/test-alias-attribute.c1
-rw-r--r--gcc/testsuite/jit.dg/test-always_inline-attribute.c10
-rw-r--r--gcc/testsuite/jit.dg/test-ggc-bugfix.c5
-rw-r--r--gcc/testsuite/jit.dg/test-link-section-assembler.c2
-rw-r--r--gcc/testsuite/jit.dg/test-noinline-attribute.c10
-rw-r--r--gcc/testsuite/jit.dg/test-popcount.c84
-rw-r--r--gcc/testsuite/jit.dg/test-reflection.c1
-rw-r--r--gcc/testsuite/jit.dg/test-setting-alignment.c3
-rw-r--r--gcc/testsuite/jit.dg/test-used-attribute.c10
-rw-r--r--gcc/testsuite/jit.dg/test-variable-attribute.c10
-rw-r--r--gcc/testsuite/jit.dg/test-weak-attribute.c3
-rw-r--r--gcc/testsuite/lib/gdc.exp40
-rw-r--r--gcc/testsuite/lib/hwasan-dg.exp27
-rw-r--r--gcc/testsuite/lib/target-supports.exp50
-rw-r--r--gcc/testsuite/obj-c++.dg/encode-10.mm1
-rw-r--r--gcc/testsuite/obj-c++.dg/encode-9.mm1
-rw-r--r--gcc/toplev.cc5
-rw-r--r--gcc/tree-data-ref.cc7
-rw-r--r--gcc/tree-inline.cc31
-rw-r--r--gcc/tree-nested.cc4
-rw-r--r--gcc/tree-sra.cc29
-rw-r--r--gcc/tree-ssa-sccvn.cc20
-rw-r--r--gcc/tree-ssa-strlen.cc22
-rw-r--r--gcc/tree-switch-conversion.cc24
-rw-r--r--gcc/tree-vect-loop-manip.cc181
-rw-r--r--gcc/tree-vect-loop.cc114
-rw-r--r--gcc/tree-vect-patterns.cc144
-rw-r--r--gcc/tree-vect-stmts.cc6
-rw-r--r--gcc/tree.cc31
-rw-r--r--gcc/varasm.cc5
-rw-r--r--libatomic/ChangeLog50
-rw-r--r--libatomic/Makefile.am3
-rw-r--r--libatomic/Makefile.in1
-rw-r--r--libatomic/acinclude.m419
-rw-r--r--libatomic/auto-config.h.in3
-rw-r--r--libatomic/config/linux/aarch64/atomic_16.S243
-rw-r--r--libatomic/config/linux/aarch64/host-config.h60
-rwxr-xr-xlibatomic/configure61
-rw-r--r--libatomic/configure.ac3
-rw-r--r--libatomic/configure.tgt2
-rw-r--r--libgcc/ChangeLog28
-rw-r--r--libgcc/config.host7
-rw-r--r--libgcc/config/aarch64/__arm_sme_state.S2
-rw-r--r--libgcc/config/aarch64/__arm_tpidr2_save.S4
-rw-r--r--libgcc/config/aarch64/__arm_za_disable.S6
-rw-r--r--libgcc/config/aarch64/aarch64-asm.h14
-rw-r--r--libgcc/config/aarch64/crti.S12
-rw-r--r--libgcc/config/aarch64/heap-trampoline.c16
-rw-r--r--libgcc/config/aarch64/lse.S9
-rw-r--r--libgcc/config/aarch64/t-heap-trampoline3
-rw-r--r--libgcc/config/gcn/amdgcn_veclib.h2
-rw-r--r--libgcc/config/i386/heap-trampoline.c16
-rw-r--r--libgcc/config/i386/t-heap-trampoline3
-rw-r--r--libgcc/config/t-darwin13
-rw-r--r--libgcc/libgcc-std.ver.in5
-rw-r--r--libgcc/libgcc2.h4
-rw-r--r--libgm2/ChangeLog16
-rw-r--r--libgm2/Makefile.am3
-rw-r--r--libgm2/Makefile.in2
-rw-r--r--libgm2/libm2cor/Makefile.am9
-rw-r--r--libgm2/libm2cor/Makefile.in7
-rw-r--r--libgm2/libm2iso/Makefile.am9
-rw-r--r--libgm2/libm2iso/Makefile.in7
-rw-r--r--libgm2/libm2log/Makefile.am5
-rw-r--r--libgm2/libm2log/Makefile.in4
-rw-r--r--libgm2/libm2min/Makefile.am7
-rw-r--r--libgm2/libm2min/Makefile.in6
-rw-r--r--libgm2/libm2pim/Makefile.am9
-rw-r--r--libgm2/libm2pim/Makefile.in7
-rw-r--r--libgomp/ChangeLog53
-rw-r--r--libgomp/config/gcn/time.c10
-rw-r--r--libgomp/libgomp.texi332
-rw-r--r--libgomp/plugin/plugin-gcn.c25
-rw-r--r--libgomp/testsuite/libgomp.c/declare-variant-4-fiji.c2
-rw-r--r--libgomp/testsuite/libgomp.c/declare-variant-4-gfx1030.c8
-rw-r--r--libgomp/testsuite/libgomp.c/declare-variant-4-gfx1100.c8
-rw-r--r--libgomp/testsuite/libgomp.c/declare-variant-4-gfx803.c2
-rw-r--r--libgomp/testsuite/libgomp.c/declare-variant-4.h16
-rw-r--r--libgomp/testsuite/libgomp.c/simd-math-1.c2
-rw-r--r--libgomp/testsuite/libgomp.fortran/alloc-comp-3.f901
-rw-r--r--libsanitizer/ChangeLog5
-rw-r--r--libsanitizer/sanitizer_common/Makefile.am2
-rw-r--r--libsanitizer/sanitizer_common/Makefile.in2
-rw-r--r--libstdc++-v3/ChangeLog115
-rw-r--r--libstdc++-v3/doc/xml/manual/debug_mode.xml4
-rw-r--r--libstdc++-v3/include/bits/chrono.h14
-rw-r--r--libstdc++-v3/include/bits/chrono_io.h71
-rw-r--r--libstdc++-v3/include/bits/hashtable.h13
-rw-r--r--libstdc++-v3/include/bits/stl_pair.h10
-rw-r--r--libstdc++-v3/include/bits/unicode.h2
-rw-r--r--libstdc++-v3/include/debug/safe_base.h1
-rw-r--r--libstdc++-v3/include/debug/safe_iterator.h48
-rw-r--r--libstdc++-v3/include/precompiled/stdc++.h5
-rw-r--r--libstdc++-v3/include/std/format53
-rw-r--r--libstdc++-v3/include/std/ranges3
-rw-r--r--libstdc++-v3/include/std/tuple20
-rw-r--r--libstdc++-v3/testsuite/20_util/tuple/dangling_ref.cc156
-rw-r--r--libstdc++-v3/testsuite/23_containers/vector/bool/element_access/constexpr.cc18
-rw-r--r--libstdc++-v3/testsuite/23_containers/vector/element_access/constexpr.cc18
-rw-r--r--libstdc++-v3/testsuite/std/format/functions/format.cc8
-rw-r--r--libstdc++-v3/testsuite/std/ranges/adaptors/all.cc4
-rw-r--r--libstdc++-v3/testsuite/std/time/clock/file/io.cc18
-rw-r--r--libstdc++-v3/testsuite/std/time/clock/file/members.cc9
-rw-r--r--libstdc++-v3/testsuite/std/time/clock/gps/io.cc27
-rw-r--r--libstdc++-v3/testsuite/std/time/clock/utc/io.cc4
-rw-r--r--libstdc++-v3/testsuite/std/time/hh_mm_ss/io.cc28
3120 files changed, 28693 insertions, 6312 deletions
diff --git a/ChangeLog b/ChangeLog
index 9845720..593ba5d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,23 @@
+2024-01-29 Kwok Cheung Yeung <kcy@codesourcery.com>
+
+ * MAINTAINERS: Update my work email address.
+
+2024-01-25 Chung-Lin Tang <cltang@baylibre.com>
+
+ * MAINTAINERS: Update my work email address.
+
+2024-01-24 Thomas Schwinge <tschwinge@baylibre.com>
+
+ * MAINTAINERS: Update my work email address.
+
+2024-01-23 Tobias Burnus <tburnus@baylibre.com>
+
+ * MAINTAINERS: Update my email address.
+
+2024-01-23 Andrew Stubbs <ams@baylibre.com>
+
+ * MAINTAINERS: Update
+
2024-01-16 Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
* Makefile.def: Add a dependency to libgrust for all-gcc.
diff --git a/MAINTAINERS b/MAINTAINERS
index cb5a425..9d92be1 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -55,7 +55,7 @@ aarch64 port Marcus Shawcroft <marcus.shawcroft@arm.com>
aarch64 port Kyrylo Tkachov <kyrylo.tkachov@arm.com>
alpha port Richard Henderson <rth@gcc.gnu.org>
amdgcn port Julian Brown <julian@codesourcery.com>
-amdgcn port Andrew Stubbs <ams@codesourcery.com>
+amdgcn port Andrew Stubbs <ams@baylibre.com>
arc port Joern Rennecke <gnu@amylaar.uk>
arc port Claudiu Zissulescu <claziss@synopsys.com>
arm port Nick Clifton <nickc@redhat.com>
@@ -99,10 +99,10 @@ moxie port Anthony Green <green@moxielogic.com>
msp430 port Nick Clifton <nickc@redhat.com>
nds32 port Chung-Ju Wu <jasonwucj@gmail.com>
nds32 port Shiva Chen <shiva0217@gmail.com>
-nios2 port Chung-Lin Tang <cltang@codesourcery.com>
+nios2 port Chung-Lin Tang <cltang@baylibre.com>
nios2 port Sandra Loosemore <sandra@codesourcery.com>
nvptx port Tom de Vries <tdevries@suse.de>
-nvptx port Thomas Schwinge <thomas@codesourcery.com>
+nvptx port Thomas Schwinge <tschwinge@baylibre.com>
or1k port Stafford Horne <shorne@gmail.com>
pdp11 port Paul Koning <ni1d@arrl.net>
powerpcspe port Andrew Jenner <andrew@codesourcery.com>
@@ -180,14 +180,14 @@ fp-bit Ian Lance Taylor <ian@airs.com>
libgcc Ian Lance Taylor <ian@airs.com>
libgo Ian Lance Taylor <ian@airs.com>
libgomp Jakub Jelinek <jakub@redhat.com>
-libgomp Tobias Burnus <tobias@codesourcery.com>
-libgomp (OpenACC) Thomas Schwinge <thomas@codesourcery.com>
+libgomp Tobias Burnus <tburnus@baylibre.com>
+libgomp (OpenACC) Thomas Schwinge <tschwinge@baylibre.com>
libgrust All Rust front end maintainers
libiberty Ian Lance Taylor <ian@airs.com>
libitm Torvald Riegel <triegel@redhat.com>
libobjc Nicola Pero <nicola.pero@meta-innovation.com>
libobjc Andrew Pinski <pinskia@gmail.com>
-libquadmath Tobias Burnus <tobias@codesourcery.com>
+libquadmath Tobias Burnus <tburnus@baylibre.com>
libquadmath Jakub Jelinek <jakub@redhat.com>
libvtv Caroline Tice <cmtice@google.com>
libphobos Iain Buclaw <ibuclaw@gdcproject.org>
@@ -253,10 +253,10 @@ auto-vectorizer Zdenek Dvorak <ook@ucw.cz>
loop infrastructure Zdenek Dvorak <ook@ucw.cz>
loop ivopts Bin Cheng <bin.cheng@linux.alibaba.com>
loop optimizer Bin Cheng <bin.cheng@linux.alibaba.com>
-OpenACC Thomas Schwinge <thomas@codesourcery.com>
-OpenACC Tobias Burnus <tobias@codesourcery.com>
+OpenACC Thomas Schwinge <tschwinge@baylibre.com>
+OpenACC Tobias Burnus <tburnus@baylibre.com>
OpenMP Jakub Jelinek <jakub@redhat.com>
-OpenMP Tobias Burnus <tobias@codesourcery.com>
+OpenMP Tobias Burnus <tburnus@baylibre.com>
testsuite Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
testsuite Mike Stump <mikestump@comcast.net>
register allocation Vladimir Makarov <vmakarov@redhat.com>
@@ -281,7 +281,7 @@ dataflow Kenneth Zadeck <zadeck@naturalbridge.com>
driver Joseph Myers <josmyers@redhat.com>
Fortran Harald Anlauf <anlauf@gmx.de>
Fortran Janne Blomqvist <jb@gcc.gnu.org>
-Fortran Tobias Burnus <tobias@codesourcery.com>
+Fortran Tobias Burnus <tburnus@baylibre.com>
Fortran François-Xavier Coudert <fxcoudert@gcc.gnu.org>
Fortran Jerry DeLisle <jvdelisle@gcc.gnu.org>
Fortran Erik Edelmann <erik.edelmann@iki.fi>
@@ -730,7 +730,7 @@ Canqun Yang <canqun@nudt.edu.cn>
Fei Yang <felix.yang@huawei.com>
Jeffrey Yasskin <jyasskin@google.com>
Joey Ye <joey.ye@arm.com>
-Kwok Cheung Yeung <kcy@codesourcery.com>
+Kwok Cheung Yeung <kcyeung@baylibre.com>
Greta Yorsh <greta.yorsh@arm.com>
David Yuste <david.yuste@gmail.com>
Adhemerval Zanella <azanella@linux.vnet.ibm.com>
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 73bfc40..60e2d87 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,1297 @@
+2024-01-29 Manos Anagnostakis <manos.anagnostakis@vrull.eu>
+ Manolis Tsamis <manolis.tsamis@vrull.eu>
+ Philipp Tomsich <philipp.tomsich@vrull.eu>
+
+ * config/aarch64/aarch64-ldpstp.md: Remove unused mode.
+ * config/aarch64/aarch64-protos.h (aarch64_operands_ok_for_ldpstp):
+ Likewise.
+ * config/aarch64/aarch64.cc (aarch64_operands_ok_for_ldpstp):
+ Call on framework moved later.
+
+2024-01-29 Jose E. Marchesi <jose.marchesi@oracle.com>
+
+ * config/bpf/bpf.cc (bpf_expand_epilogue): Do not emit a return
+ instruction in naked function epilogues.
+
+2024-01-29 YunQiang Su <syq@gcc.gnu.org>
+
+ PR target/113655
+ * configure.ac: Fix typo gcc_cv_as_mips_explicit should be
+ gcc_cv_as_mips_explicit_relocs.
+ * configure: Regnerated.
+
+2024-01-29 Matthieu Longo <matthieu.longo@arm.com>
+
+ PR target/108933
+ * config/arm/arm.md (arm_rev16si2): Convert to define_insn.
+ Correct generated RTL.
+ (arm_rev16si2_alt1): Correctly handle conditional execution.
+ (arm_rev16si2_alt2): Likewise.
+
+2024-01-29 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/113622
+ * expr.cc (expand_assignment): Spill hard registers if
+ we index them with a variable offset.
+
+2024-01-29 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/113622
+ * gimple-isel.cc (gimple_expand_vec_set_extract_expr):
+ Also allow DECL_HARD_REGISTER variables.
+
+2024-01-29 Alex Coplan <alex.coplan@arm.com>
+
+ PR target/113616
+ * config/aarch64/aarch64-ldp-fusion.cc (fixup_debug_uses_trailing_add):
+ Use iterate_safely when iterating over debug uses.
+ (fixup_debug_uses): Likewise.
+ (ldp_bb_info::cleanup_tombstones): Use iterate_safely to iterate
+ over nondebug insns instead of manually maintaining the next insn.
+ * iterator-utils.h (class safe_iterator): New.
+ (iterate_safely): New.
+
+2024-01-29 H.J. Lu <hjl.tools@gmail.com>
+
+ PR target/38534
+ * config/i386/i386-options.cc (ix86_set_func_type): Save
+ callee-saved registers in noreturn functions for -O0/-Og.
+
+2024-01-29 Tobias Burnus <tburnus@baylibre.com>
+
+ PR target/113615
+ * config/gcn/gcn-valu.md (fold_left_plus_<mode>): Only
+ define for !TARGET_RDNA2_PLUS.
+
+2024-01-29 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR target/113281
+ * tree-vect-patterns.cc (vect_recog_over_widening_pattern): Remove
+ workaround for right shifts.
+ (vect_truncatable_operation_p): Handle NEGATE_EXPR and BIT_NOT_EXPR.
+ (vect_determine_precisions_from_range): Be more selective about
+ which codes can be narrowed based on their input and output ranges.
+ For shifts, require at least one more bit of precision than the
+ maximum shift amount.
+
+2024-01-29 Tobias Burnus <tburnus@baylibre.com>
+
+ * config/nvptx/nvptx.opt (march-map=): Add sm_89 and sm_90a.
+
+2024-01-29 Tobias Burnus <tburnus@baylibre.com>
+
+ * doc/install.texi (amdgcn): Recommend LLVM 15+ and newlib 4.4+,
+ but keep requiring only newlib 4.3+ and, if gfx1100 is disabled,
+ LLVM 13.0.1+.
+
+2024-01-29 Tobias Burnus <tburnus@baylibre.com>
+
+ PR other/111966
+ * config/gcn/mkoffload.cc (SET_XNACK_UNSET, TEST_SRAM_ECC_UNSET): New.
+ (SET_SRAM_ECC_UNSUPPORTED): Renamed to ...
+ (SET_SRAM_ECC_UNSET): ... this.
+ (copy_early_debug_info): Remove gfx900 special case, now handled as
+ part of the generic handling.
+ (main): Update SRAM_ECC and XNACK for the -march as done in gcn-hsa.h.
+
+2024-01-29 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/110603
+ * tree-ssa-strlen.cc (get_range_strlen_dynamic): Remove incorrect
+ setting of pdata->maxlen to vr.upper_bound (which is unconditionally
+ overwritten anyway). Avoid creating invalid range with minlen
+ larger than maxlen. Formatting fix.
+
+2024-01-29 Richard Biener <rguenther@suse.de>
+
+ PR debug/103047
+ * tree-inline.cc (initialize_inlined_parameters): Reverse
+ the decl chain of inlined parameters.
+
+2024-01-28 Iain Sandoe <iain@sandoe.co.uk>
+
+ * config/darwin.cc (darwin_build_constant_cfstring): Prevent over-
+ alignment of CFString constants by setting DECL_USER_ALIGN.
+
+2024-01-28 Iain Sandoe <iain@sandoe.co.uk>
+ Jakub Jelinek <jakub@redhat.com>
+
+ PR libgcc/113402
+ * builtins.cc (expand_builtin): Handle BUILT_IN_GCC_NESTED_PTR_CREATED
+ and BUILT_IN_GCC_NESTED_PTR_DELETED.
+ * builtins.def (BUILT_IN_GCC_NESTED_PTR_CREATED,
+ BUILT_IN_GCC_NESTED_PTR_DELETED): Make these builtins LIB-EXT and
+ rename the library fallbacks to __gcc_nested_func_ptr_created and
+ __gcc_nested_func_ptr_deleted.
+ * doc/invoke.texi: Rename these to __gcc_nested_func_ptr_created
+ and __gcc_nested_func_ptr_deleted.
+ * tree-nested.cc (finalize_nesting_tree_1): Use builtin_explicit for
+ BUILT_IN_GCC_NESTED_PTR_CREATED and BUILT_IN_GCC_NESTED_PTR_DELETED.
+ * tree.cc (build_common_builtin_nodes): Build the
+ BUILT_IN_GCC_NESTED_PTR_CREATED and BUILT_IN_GCC_NESTED_PTR_DELETED local
+ builtins only for non-explicit.
+
+2024-01-28 YunQiang Su <syq@gcc.gnu.org>
+
+ * doc/invoke.texi: Remove duplicate MIPS explicit-relocs option.
+
+2024-01-27 H.J. Lu <hjl.tools@gmail.com>
+
+ PR target/38534
+ * config/i386/i386-options.cc (ix86_set_func_type): Don't
+ save and restore callee saved registers for a noreturn function
+ with nothrow or compiled with -fno-exceptions.
+
+2024-01-27 H.J. Lu <hjl.tools@gmail.com>
+
+ PR target/103503
+ PR target/113312
+ * config/i386/i386-expand.cc (ix86_expand_call): Replace
+ no_caller_saved_registers check with call_saved_registers check.
+ Clobber all registers that are not used by the callee with
+ no_callee_saved_registers attribute.
+ * config/i386/i386-options.cc (ix86_set_func_type): Set
+ call_saved_registers to TYPE_NO_CALLEE_SAVED_REGISTERS for
+ noreturn function. Disallow no_callee_saved_registers with
+ interrupt or no_caller_saved_registers attributes together.
+ (ix86_set_current_function): Replace no_caller_saved_registers
+ check with call_saved_registers check.
+ (ix86_handle_no_caller_saved_registers_attribute): Renamed to ...
+ (ix86_handle_call_saved_registers_attribute): This.
+ (ix86_gnu_attributes): Add
+ ix86_handle_call_saved_registers_attribute.
+ * config/i386/i386.cc (ix86_conditional_register_usage): Replace
+ no_caller_saved_registers check with call_saved_registers check.
+ (ix86_function_ok_for_sibcall): Don't allow callee with
+ no_callee_saved_registers attribute when the calling function
+ has callee-saved registers.
+ (ix86_comp_type_attributes): Also check
+ no_callee_saved_registers.
+ (ix86_epilogue_uses): Replace no_caller_saved_registers check
+ with call_saved_registers check.
+ (ix86_hard_regno_scratch_ok): Likewise.
+ (ix86_save_reg): Replace no_caller_saved_registers check with
+ call_saved_registers check. Don't save any registers for
+ TYPE_NO_CALLEE_SAVED_REGISTERS. Save all registers with
+ TYPE_DEFAULT_CALL_SAVED_REGISTERS if function with
+ no_callee_saved_registers attribute is called.
+ (find_drap_reg): Replace no_caller_saved_registers check with
+ call_saved_registers check.
+ * config/i386/i386.h (call_saved_registers_type): New enum.
+ (machine_function): Replace no_caller_saved_registers with
+ call_saved_registers.
+ * doc/extend.texi: Document no_callee_saved_registers attribute.
+
+2024-01-27 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/113614
+ * gimple-lower-bitint.cc (gimple_lower_bitint): Don't merge
+ widening casts from signed to unsigned types with TRUNC_DIV_EXPR,
+ TRUNC_MOD_EXPR or FLOAT_EXPR uses.
+
+2024-01-27 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/113568
+ * gimple-lower-bitint.cc (bitint_large_huge::lower_mergeable_stmt):
+ For VIEW_CONVERT_EXPR use first operand of rhs1 instead of rhs1
+ in the widening extension checks.
+
+2024-01-27 Jakub Jelinek <jakub@redhat.com>
+
+ * gimple-lower-bitint.cc (gimple_lower_bitint): For
+ TDF_DETAILS dump mapping of SSA_NAMEs to decls.
+
+2024-01-26 Hans-Peter Nilsson <hp@axis.com>
+
+ * cgraphunit.cc (process_function_and_variable_attributes): Tweak
+ the warning for an attribute-always_inline without inline declaration.
+
+2024-01-26 Robin Dapp <rdapp@ventanamicro.com>
+
+ PR other/113575
+ * genopinit.cc (main): Split init_all_optabs into functions
+ of 1000 patterns each.
+
+2024-01-26 Tobias Burnus <tburnus@baylibre.com>
+
+ * config.gcc (amdgcn-*-*): Add gfx1030 and gfx1100 to
+ TM_MULTILIB_CONFIG.
+ * doc/install.texi (Configuration amdgcn-*-*): Mention gfx1030/gfx1100.
+ * doc/invoke.texi (AMD GCN Options): Add gfx1030 and gfx1100 to
+ -march/-mtune.
+
+2024-01-26 Andrew Stubbs <ams@baylibre.com>
+
+ * config/gcn/gcn-opts.h (TARGET_PACKED_WORK_ITEMS): Add TARGET_RDNA3.
+ * config/gcn/gcn-valu.md (all_convert): New iterator.
+ (<convop><V_INT_1REG_ALT:mode><V_INT_1REG:mode>2<exec>): New
+ define_expand, and rename the old one to ...
+ (*<convop><V_INT_1REG_ALT:mode><V_INT_1REG:mode>_sdwa<exec>): ... this.
+ (extend<V_INT_1REG_ALT:mode><V_INT_1REG:mode>2<exec>): Likewise, to ...
+ (extend<V_INT_1REG_ALT:mode><V_INT_1REG:mode>_sdwa<exec>): .. this.
+ (*<convop><V_INT_1REG_ALT:mode><V_INT_1REG:mode>_shift<exec>): New.
+ * config/gcn/gcn.cc (gcn_global_address_p): Use "offsetbits" correctly.
+ (gcn_hsa_declare_function_name): Update the vgpr counting for gfx1100.
+ * config/gcn/gcn.md (<u>mulhisi3): Disable on RDNA3.
+ (<u>mulqihi3_scalar): Likewise.
+
+2024-01-26 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/113602
+ * tree-data-ref.cc (dr_analyze_innermost): Fail when
+ the base object isn't addressable.
+
+2024-01-26 Tobias Burnus <tburnus@baylibre.com>
+
+ * config/gcn/gcn-hsa.h (ABI_VERSION_SPEC): New; creates the
+ "--amdhsa-code-object-version=" argument.
+ (ASM_SPEC): Use it; replace previous version of it.
+
+2024-01-26 Juzhe-Zhong <juzhe.zhong@rivai.ai>
+
+ * config/riscv/riscv-vsetvl.cc (pre_vsetvl::earliest_fuse_vsetvl_info): Refine some codes.
+ (pre_vsetvl::emit_vsetvl): Ditto.
+
+2024-01-26 Jiahao Xu <xujiahao@loongson.cn>
+
+ * config/loongarch/lasx.md (vec_extract<mode>_0):
+ New define_insn_and_split patten.
+
+2024-01-26 Jiahao Xu <xujiahao@loongson.cn>
+
+ * config/loongarch/loongarch.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Define.
+
+2024-01-26 Li Wei <liwei@loongson.cn>
+
+ * config/loongarch/loongarch.cc (loongarch_emit_swdivsf): Adjust.
+
+2024-01-26 Juzhe-Zhong <juzhe.zhong@rivai.ai>
+
+ PR target/113469
+ * config/riscv/riscv-vsetvl.cc (pre_vsetvl::compute_lcm_local_properties): Fix bug.
+
+2024-01-26 Andrew Pinski <quic_apinski@quicinc.com>
+
+ PR target/100212
+ * config/aarch64/aarch64.cc (aarch64_classify_index): Avoid
+ undefined shift after the call to exact_log2.
+
+2024-01-25 Andrew Pinski <quic_apinski@quicinc.com>
+
+ PR target/100204
+ * config/aarch64/constraints.md (J): Cast to `unsigned HOST_WIDE_INT`
+ before taking the negative of it.
+
+2024-01-25 Vladimir N. Makarov <vmakarov@redhat.com>
+
+ PR target/113526
+ * lra-constraints.cc (curr_insn_transform): Change class even for
+ spilled pseudo successfully matched with with NO_REGS.
+
+2024-01-25 Georg-Johann Lay <avr@gjlay.de>
+
+ PR target/113601
+ * config/avr/avr-mcus.def (atmega3208, atmega3209): Fix data_section_start.
+
+2024-01-25 Szabolcs Nagy <szabolcs.nagy@arm.com>
+
+ PR target/112987
+ * config/aarch64/aarch64.cc (aarch64_gen_compare_zero_and_branch): New.
+ (aarch64_expand_epilogue): Use the new function.
+ (aarch64_split_compare_and_swap): Likewise.
+ (aarch64_split_atomic_op): Likewise.
+
+2024-01-25 Robin Dapp <rdapp.gcc@gmail.com>
+
+ PR middle-end/112971
+ * fold-const.cc (simplify_const_binop): New function for binop
+ simplification of two constant vectors when element-wise
+ handling is not necessary.
+ (const_binop): Call new function.
+
+2024-01-25 Mary Bennett <mary.bennett@embecosm.com>
+
+ * common/config/riscv/riscv-common.cc: Add XCVbitmanip.
+ * config/riscv/constraints.md: Likewise.
+ * config/riscv/corev.def: Likewise.
+ * config/riscv/corev.md: Likewise.
+ * config/riscv/predicates.md: Likewise.
+ * config/riscv/riscv-builtins.cc (AVAIL): Likewise.
+ * config/riscv/riscv-ftypes.def: Likewise.
+ * config/riscv/riscv.opt: Likewise.
+ * config/riscv/riscv.cc (riscv_print_operand): Add new operand 'Y'.
+ * doc/extend.texi: Add XCVbitmanip builtin documentation.
+ * doc/sourcebuild.texi: Likewise.
+
+2024-01-25 Tobias Burnus <tburnus@baylibre.com>
+
+ * config/gcn/gcn-hsa.h (ASM_SPEC): Add space after -mxnack= argument.
+
+2024-01-25 Yanzhang Wang <yanzhang.wang@intel.com>
+
+ PR target/113538
+ * config/riscv/riscv.cc (riscv_get_arg_info): Remove the flag.
+ (riscv_fntype_abi): Ditto.
+ * config/riscv/riscv.opt: Ditto.
+
+2024-01-25 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/113574
+ * convert.cc (convert_to_integer_1) <case LSHIFT_EXPR>: Compare shift
+ count against TYPE_PRECISION rather than TYPE_SIZE.
+
+2024-01-25 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR target/113572
+ * config/aarch64/aarch64-sve-builtins.cc (vector_cst_all_same):
+ Check VECTOR_CST_ELT instead of VECTOR_CST_ENCODED_ELT
+
+2024-01-25 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR target/113550
+ * config/aarch64/aarch64-simd.md: In the movv8di splitter, check
+ whether each split instruction is a load that clobbers the source
+ address. Emit that instruction last if so.
+
+2024-01-25 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR target/113485
+ * config/aarch64/aarch64-simd.md (aarch64_zip1<mode>_low): New
+ pattern.
+ (<optab><Vnarrowq><mode>2): Use it instead of generating a
+ paradoxical subreg for the input.
+
+2024-01-25 Juzhe-Zhong <juzhe.zhong@rivai.ai>
+
+ * config/riscv/riscv-vsetvl.cc (get_all_predecessors): New function.
+ (pre_vsetvl::pre_global_vsetvl_info): Add LCM delete block all
+ predecessors dump information.
+
+2024-01-25 Juzhe-Zhong <juzhe.zhong@rivai.ai>
+
+ * config/riscv/riscv-vsetvl.cc (pre_vsetvl::compute_vsetvl_def_data): Remove
+ redundant full available computation.
+ (pre_vsetvl::pre_global_vsetvl_info): Ditto.
+
+2024-01-25 Jakub Jelinek <jakub@redhat.com>
+
+ * doc/generic.texi (VECTOR_CST): Fix typo - petterns -> patterns.
+ * doc/rtl.texi (CONST_VECTOR): Likewise.
+
+2024-01-25 Juzhe-Zhong <juzhe.zhong@rivai.ai>
+
+ * config/riscv/riscv-opts.h (enum vsetvl_strategy_enum): Add optim-no-fusion option.
+ * config/riscv/riscv-vsetvl.cc (pass_vsetvl::lazy_vsetvl): Ditto.
+ (pass_vsetvl::execute): Ditto.
+ * config/riscv/riscv.opt: Ditto.
+
+2024-01-25 Jiahao Xu <xujiahao@loongson.cn>
+
+ * config/loongarch/lasx.md (@vec_concatz<mode>): Remove this define_insn pattern.
+ * config/loongarch/loongarch.cc (loongarch_expand_vector_group_init): Use vec_concat<mode>.
+
+2024-01-25 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/113576
+ * tree-vect-loop.cc (vec_init_loop_exit_info): Only allow
+ exits with may_be_zero niters when its the last one.
+
+2024-01-25 Lulu Cheng <chenglulu@loongson.cn>
+
+ * config/loongarch/loongarch.cc (loongarch_symbolic_constant_p):
+ For symbols of type tls, non-zero Offset is not generated.
+
+2024-01-25 Haochen Gui <guihaoc@gcc.gnu.org>
+
+ * config/rs6000/rs6000-string.cc (expand_block_compare): Enable
+ P9 with m32 and mpowerpc64.
+
+2024-01-25 liuhongt <hongtao.liu@intel.com>
+
+ * config/i386/i386-options.cc (ix86_option_override_internal):
+ Enable -mlam=u57 by default when compiled with
+ -fsanitize=hwaddress.
+
+2024-01-25 Palmer Dabbelt <palmer@rivosinc.com>
+
+ * common/config/riscv/riscv-common.cc (riscv_implied_info):
+ Remove {"ztso", "a"}.
+
+2024-01-24 Martin Jambor <mjambor@suse.cz>
+
+ PR ipa/108007
+ PR ipa/112616
+ * cgraph.h (cgraph_edge): Add a parameter to
+ redirect_call_stmt_to_callee.
+ * ipa-param-manipulation.h (ipa_param_adjustments): Add a
+ parameter to modify_call.
+ (ipa_release_ssas_in_hash): Declare.
+ * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee): New
+ parameter killed_ssas, pass it to padjs->modify_call.
+ * ipa-param-manipulation.cc (purge_all_uses): New function.
+ (ipa_param_adjustments::modify_call): New parameter killed_ssas.
+ Instead of substituting uses, invoke purge_all_uses. If
+ hash of killed SSAs has not been provided, create a temporary one
+ and release SSAs that have been added to it.
+ (compare_ssa_versions): New function.
+ (ipa_release_ssas_in_hash): Likewise.
+ * tree-inline.cc (redirect_all_calls): Create
+ id->killed_new_ssa_names earlier, pass it to edge redirection,
+ adjust a comment.
+ (copy_body): Release SSAs in id->killed_new_ssa_names.
+
+2024-01-24 Andrew Pinski <quic_apinski@quicinc.com>
+
+ PR target/113486
+ * config/aarch64/aarch64.cc (aarch64_get_reg_raw_mode): For
+ TARGET_GENERAL_REGS_ONLY, return VOIDmode for non-GP_REGNUM_P regno.
+
+2024-01-24 Monk Chiang <monk.chiang@sifive.com>
+
+ PR target/113095
+ * config/riscv/sfb.md: New splitters to rewrite single bit
+ sign extension as the condition to SFB instructions.
+
+2024-01-24 Jan Hubicka <jh@suse.cz>
+
+ PR middle-end/88345
+ * common.opt: (flimit-function-alignment): Reorder alphabeticaly
+ (fmin-function-alignment): New parameter.
+ * doc/invoke.texi: (-fmin-function-alignment): Document.
+ (-falign-functions,-falign-loops,-falign-labels): Mention that
+ aglinments are ignored in cold code.
+ * varasm.cc (assemble_start_function): Handle min-function-alignment.
+
+2024-01-24 Tamar Christina <tamar.christina@arm.com>
+
+ PR target/109636
+ * config/aarch64/aarch64-simd.md (<su_optab>div<mode>3,
+ mulv2di3): Remove.
+ * config/aarch64/iterators.md (VQDIV): Remove.
+ (SVE_FULL_SDI_SIMD, SVE_FULL_HSDI_SIMD_DI,
+ SVE_I_SIMD_DI): New.
+ (VPRED, sve_lane_con): Add V4SI and V2DI.
+ * config/aarch64/aarch64-sve.md (<optab><mode>3,
+ @aarch64_pred_<optab><mode>): Support Advanced SIMD types.
+ (mul<mode>3): New, split from <optab><mode>3.
+ (@aarch64_pred_<optab><mode>, *post_ra_<optab><mode>3): New.
+ * config/aarch64/aarch64-sve2.md (@aarch64_mul_lane_<mode>,
+ *aarch64_mul_unpredicated_<mode>): Change SVE_FULL_HSDI to
+ SVE_FULL_HSDI_SIMD_DI.
+
+2024-01-24 Tamar Christina <tamar.christina@arm.com>
+
+ PR tree-optimization/113552
+ * config/aarch64/aarch64.cc
+ (aarch64_simd_clone_compute_vecsize_and_simdlen): Block simdlen 1.
+
+2024-01-24 Martin Jambor <mjambor@suse.cz>
+
+ PR ipa/113490
+ * ipa-cp.cc (ipcp_lattice<valtype>::add_value): Bail out if value
+ count is equal or greater than the limit. Use the limit from the
+ callee.
+
+2024-01-24 YunQiang Su <syq@gcc.gnu.org>
+
+ * configure.ac: Detect the explicit relocs support for
+ mips, and define C macro MIPS_EXPLICIT_RELOCS.
+ * config.in: Regenerated.
+ * configure: Regenerated.
+ * doc/invoke.texi(MIPS Options): Add -mexplicit-relocs.
+ * config/mips/mips-opts.h: Define enum mips_explicit_relocs.
+ * config/mips/mips.cc(mips_set_compression_mode): Sorry if
+ !TARGET_EXPLICIT_RELOCS instead of just set it.
+ * config/mips/mips.h: Define TARGET_EXPLICIT_RELOCS and
+ TARGET_EXPLICIT_RELOCS_PCREL with mips_opt_explicit_relocs.
+ * config/mips/mips.opt: Introduce -mexplicit-relocs= option
+ and define -m(no-)explicit-relocs as aliases.
+
+2024-01-24 Alex Coplan <alex.coplan@arm.com>
+
+ * config/aarch64/aarch64.opt (-mearly-ldp-fusion): Set default
+ to 1.
+ (-mlate-ldp-fusion): Likewise.
+
+2024-01-24 Tamar Christina <tamar.christina@arm.com>
+
+ * tree-vect-loop.cc (vect_get_vect_def,
+ vect_create_epilog_for_reduction): Rename main_exit_p to
+ last_val_reduc_p.
+
+2024-01-24 Tamar Christina <tamar.christina@arm.com>
+
+ PR tree-optimization/113364
+ * tree-vect-loop.cc (vect_create_epilog_for_reduction): If all exits all
+ early exits then we must reduce from the first offset for all of them.
+
+2024-01-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
+
+ PR target/113495
+ * config/riscv/riscv-vsetvl.cc (get_expr_id): Remove.
+ (get_regno): Ditto.
+ (get_bb_index): Ditto.
+ (pre_vsetvl::compute_avl_def_data): Ditto.
+ (pre_vsetvl::earliest_fuse_vsetvl_info): Fix large memory usage.
+ (pre_vsetvl::pre_global_vsetvl_info): Ditto.
+
+2024-01-23 Andrew Pinski <quic_apinski@quicinc.com>
+ Richard Sandiford <richard.sandiford@arm.com>
+
+ PR target/100942
+ * ccmp.cc (ccmp_candidate_p): Add outer argument.
+ Allow if the outer is true and the lhs is used more
+ than once.
+ (expand_ccmp_expr): Update call to ccmp_candidate_p.
+ * expr.h (expand_expr_real_gassign): Declare.
+ * expr.cc (expand_expr_real_gassign): New function, split out from...
+ (expand_expr_real_1): ...here.
+ * cfgexpand.cc (expand_gimple_stmt_1): Use expand_expr_real_gassign.
+
+2024-01-23 Alex Coplan <alex.coplan@arm.com>
+
+ PR target/113089
+ * config/aarch64/aarch64-ldp-fusion.cc (reset_debug_use): New.
+ (fixup_debug_use): New.
+ (fixup_debug_uses_trailing_add): New.
+ (fixup_debug_uses): New. Use it ...
+ (ldp_bb_info::fuse_pair): ... here.
+ (try_promote_writeback): Call fixup_debug_uses_trailing_add to
+ fix up debug uses of the base register that are affected by
+ folding in the trailing add insn.
+
+2024-01-23 Alex Coplan <alex.coplan@arm.com>
+
+ PR target/113089
+ * config/aarch64/aarch64-ldp-fusion.cc (ldp_bb_info::fuse_pair):
+ Update trailing nondebug uses of the base register in the case
+ of cancelling writeback.
+
+2024-01-23 Alex Coplan <alex.coplan@arm.com>
+
+ PR target/113089
+ * rtl-ssa/accesses.h (use_info::next_debug_insn_use): New.
+ (debug_insn_use_iterator): New.
+ (set_info::first_debug_insn_use): New.
+ (set_info::debug_insn_uses): New.
+ * rtl-ssa/member-fns.inl (use_info::next_debug_insn_use): New.
+ (set_info::first_debug_insn_use): New.
+ (set_info::debug_insn_uses): New.
+
+2024-01-23 Alex Coplan <alex.coplan@arm.com>
+
+ PR target/113356
+ * config/aarch64/aarch64-ldp-fusion.cc (ldp_bb_info::try_fuse_pair):
+ Don't record hazards against the opposite insn in the pair.
+
+2024-01-23 Alex Coplan <alex.coplan@arm.com>
+
+ PR target/113070
+ * config/aarch64/aarch64-ldp-fusion.cc
+ (struct stp_change_builder): New.
+ (decide_stp_strategy): Reanme to ...
+ (try_repurpose_store): ... this.
+ (ldp_bb_info::fuse_pair): Refactor to use stp_change_builder to
+ construct stp changes. Fix up uses when inserting new stp insns.
+
+2024-01-23 Alex Coplan <alex.coplan@arm.com>
+
+ PR target/113070
+ * rtl-ssa.h: Include hash-set.h.
+ * rtl-ssa/changes.cc (function_info::finalize_new_accesses): Add
+ new_sets parameter and use it to keep track of new user-created sets.
+ (function_info::apply_changes_to_insn): Also call add_def on new sets.
+ (function_info::change_insns): Add hash_set to keep track of new
+ user-created defs. Plumb it through.
+ * rtl-ssa/functions.h: Add hash_set parameter to finalize_new_accesses and
+ apply_changes_to_insn.
+
+2024-01-23 Alex Coplan <alex.coplan@arm.com>
+
+ PR target/113070
+ * rtl-ssa/accesses.cc (function_info::create_use): New.
+ * rtl-ssa/changes.cc (function_info::finalize_new_accesses):
+ Ensure new uses end up referring to permanent defs.
+ * rtl-ssa/functions.h (function_info::create_use): Declare.
+
+2024-01-23 Alex Coplan <alex.coplan@arm.com>
+
+ PR target/113070
+ * rtl-ssa/changes.cc (function_info::change_insns): Split out the call
+ to finalize_new_accesses from the backwards placement loop, run it
+ forwards in a separate loop.
+
+2024-01-23 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/113552
+ * tree-vect-stmts.cc (vectorizable_simd_clone_call): Use
+ floor_log2 instead of exact_log2 on the number of calls.
+
+2024-01-23 Jeff Law <jlaw@ventanamicro.com>
+ Jakub Jelinek <jakub@redhat.com>
+
+ * config/ia64/ia64.cc (ia64_start_function): Add ATTRIBUTE_UNUSED to
+ decl.
+
+2024-01-23 Richard Biener <rguenther@suse.de>
+
+ * tree-vect-loop-manip.cc (slpeel_tree_duplicate_loop_to_edge_cfg):
+ Separate single and multi-exit case when creating PHIs between
+ the main and epilogue.
+
+2024-01-23 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR target/112989
+ * config/aarch64/aarch64-sve-builtins-shapes.cc (build_one): Skip
+ MODE_single variants of functions that don't take tuple arguments.
+
+2024-01-23 Alex Coplan <alex.coplan@arm.com>
+
+ PR target/113114
+ * config/aarch64/aarch64-ldp-fusion.cc (try_promote_writeback):
+ Don't assert recog success, just punt if the writeback pair
+ isn't recognized.
+
+2024-01-23 Jakub Jelinek <jakub@redhat.com>
+
+ * config/gcn/gcn.cc (gcn_hsa_declare_function_name): Add
+ ATTRIBUTE_UNUSED to decl.
+
+2024-01-23 Richard Biener <rguenther@suse.de>
+
+ PR debug/107058
+ * dwarf2out.cc (dwarf2out_die_ref_for_decl): Gracefully
+ handle unexpected but bogus DIE contexts when not checking
+ enabled.
+
+2024-01-23 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/113462
+ * fold-const.cc (native_interpret_int): Don't punt if total_bytes
+ is larger than HOST_BITS_PER_DOUBLE_INT / BITS_PER_UNIT.
+ (fold_view_convert_expr): Use XALLOCAVEC buffers for types with
+ sizes between 129 and 8192 bytes.
+
+2024-01-23 Xi Ruoyao <xry111@xry111.site>
+
+ * config/loongarch/loongarch.cc (loongarch_explicit_relocs_p):
+ If la_opt_explicit_relocs is EXPLICIT_RELOCS_AUTO, return false
+ for SYMBOL_TLS_LDM and SYMBOL_TLS_GD.
+ (loongarch_call_tls_get_addr): Do not split symbols of
+ SYMBOL_TLS_LDM or SYMBOL_TLS_GD if la_opt_explicit_relocs is
+ EXPLICIT_RELOCS_AUTO.
+
+2024-01-23 Richard Biener <rguenther@suse.de>
+
+ * alias.cc (known_base_value_p): Remove.
+ (find_base_value): Remove PLUS/MINUS handling
+ when both operands are not CONST_INT_P.
+
+2024-01-23 Richard Biener <rguenther@suse.de>
+
+ PR rtl-optimization/113255
+ * alias.cc (find_base_term): Remove PLUS/MINUS handling
+ when both operands are not CONST_INT_P.
+
+2024-01-23 Richard Biener <rguenther@suse.de>
+
+ PR debug/112718
+ * dwarf2out.cc (dwarf2out_finish): Reset all type units
+ for the fat part of an LTO compile.
+
+2024-01-23 chenxiaolong <chenxiaolong@loongson.cn>
+
+ * doc/sourcebuild.texi: Add attributes for keywords.
+
+2024-01-23 Sandra Loosemore <sandra@codesourcery.com>
+
+ PR c++/90463
+ * doc/invoke.texi (Warning Options): Correct lists of options
+ enabled by -Wall and -Wextra by checking against common.opt
+ and c-family/c.opt.
+
+2024-01-22 Andrew Pinski <quic_apinski@quicinc.com>
+
+ PR target/113030
+ * config/arm/parsecpu.awk (check_cpu): Use cpu_opt_alias
+ instead of cpu_optaliases.
+ (check_arch): Use arch_opt_alias instead of arch_optaliases.
+
+2024-01-22 Juzhe-Zhong <juzhe.zhong@rivai.ai>
+
+ * config/riscv/riscv-protos.h (splat_to_scalar_move_p): New function.
+ * config/riscv/riscv-v.cc (splat_to_scalar_move_p): Ditto.
+ * config/riscv/vector.md: Simplify vmv.v.x. into vmv.s.x.
+
+2024-01-22 Juzhe-Zhong <juzhe.zhong@rivai.ai>
+
+ PR target/109092
+ * config/riscv/riscv.md: Use reg instead of subreg.
+
+2024-01-22 Tobias Burnus <tburnus@baylibre.com>
+
+ PR other/111966
+ * config/gcn/mkoffload.cc (elf_arch): Change default to gfx900
+ to match the compiler default.
+ (simple_object_copy_lto_debug_sections): Never unlink the outfile
+ on error as the caller does so.
+ (maybe_unlink, compile_native): Use %<...%> and %qs in fatal_error.
+ (main): Likewise. Fix 'mkoffload.dbg.o' cleanup.
+
+2024-01-22 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/113373
+ * tree-vect-loop-manip.cc (slpeel_tree_duplicate_loop_to_edge_cfg):
+ Create LC PHIs in the exit blocks where necessary.
+ * tree-vect-loop.cc (vectorizable_live_operation): Do not try
+ to handle missing LC PHIs.
+ (find_connected_edge): Remove.
+ (vect_create_epilog_for_reduction): Cleanup use of auto_vec.
+
+2024-01-22 Juzhe-Zhong <juzhe.zhong@rivai.ai>
+
+ * config/riscv/vector.md: Fix vfirst/vmsbf/vmsof ratio attributes.
+
+2024-01-22 xuli <xuli1@eswincomputing.com>
+
+ PR target/113420
+ * config/riscv/riscv-vector-builtins.cc (has_vxrm_or_frm_p):remove.
+ (registered_function::overloaded_hash):refactor.
+ (resolve_overloaded_builtin):avoid internal ICE.
+
+2024-01-21 Mikael Pettersson <mikpelinux@gmail.com>
+
+ PR target/82420
+ PR target/111279
+ * calls.cc (emit_library_call_value_1): Pass valid TYPE
+ to emit_push_insn.
+ * expr.cc (emit_push_insn): Likewise.
+
+2024-01-21 Jeff Law <jlaw@ventanamicro.com>
+
+ * config/riscv/riscv.cc (riscv_init_cumulative_args): Install
+ correcction version of last change.
+
+2024-01-21 Jeff Law <jlaw@ventanamicro.com>
+
+ * config/riscv/riscv.cc (riscv_init_cumulative_args): Update and
+ fix bugs in signature.
+
+2024-01-21 Roger Sayle <roger@nextmovesoftware.com>
+ Richard Biener <rguenther@suse.de>
+
+ PR rtl-optimization/111267
+ * fwprop.cc (fwprop_propagation::profitabe_p): Rename
+ profitable_p method to likely_profitable_p.
+ (try_fwprop_subst_node): Update call to likely_profitable_p.
+ Only bail-out early when !prop.likely_profitable_p for instructions
+ that are not single sets. When comparing costs, bail-out if the
+ cost is unchanged and !prop.likely_profitable_p.
+
+2024-01-21 Sandra Loosemore <sandra@codesourcery.com>
+
+ PR c++/90464
+ * doc/invoke.texi (Warning Options): Document that -Wunused-parameter
+ isn't enabled by -Wunused unless -Wextra is provided, and that
+ -Wunused does enable -Wunused-const-variable=1 for C. Clarify that
+ -Wunused doesn't enable -Wunused-* options documented as behaving
+ otherwise, and list them explicitly.
+
+2024-01-21 Sandra Loosemore <sandra@codesourcery.com>
+
+ PR c/109708
+ * doc/invoke.texi (Warning Options): Fix broken example and
+ clean up/reorganize the others. Also describe what the short-form
+ options mean.
+
+2024-01-20 Sandra Loosemore <sandra@codesourcery.com>
+
+ PR c/102998
+ * doc/invoke.texi (Option Summary): Add -Warray-parameter.
+ (Warning Options): Correct/edit discussion of -Warray-parameter
+ to make the first example less confusing, and fill in missing info.
+
+2024-01-20 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/113462
+ * gimple-lower-bitint.cc (bitint_large_huge::handle_cast):
+ Handle rhs1 INTEGER_CST like SSA_NAME.
+
+2024-01-20 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/113491
+ * tree-switch-conversion.cc (switch_conversion::build_constructors):
+ If elt.index has precision higher than sizetype, fold_convert it to
+ sizetype.
+ (switch_conversion::array_value_type): Return type if type is
+ BITINT_TYPE with precision above MAX_FIXED_MODE_SIZE or with BLKmode.
+ (switch_conversion::build_arrays): Use unsigned_type_for rather than
+ lang_hooks.types.type_for_mode if utype is BITINT_TYPE with precision
+ above MAX_FIXED_MODE_SIZE or with BLKmode. If utype has precision
+ higher than sizetype, use sizetype as tidx type and fold_convert the
+ subtraction to sizetype.
+
+2024-01-20 Juzhe-Zhong <juzhe.zhong@rivai.ai>
+
+ * config/riscv/riscv.cc (riscv_init_cumulative_args): Suppress warning.
+ (riscv_vector_mode_supported_any_target_p): Ditto.
+
+2024-01-19 Mikael Pettersson <mikpelinux@gmail.com>
+
+ PR target/110934
+ * config/m68k/m68k.cc (m68k_zero_call_used_regs): New function.
+ (TARGET_ZERO_CALL_USED_REGS): Define.
+
+2024-01-19 Mikael Pettersson <mikpelinux@gmail.com>
+
+ PR target/108640
+ * config/m68k/m68k.cc (output_andsi3): Use QImode for
+ address adjusted for 1-byte RMW access.
+ (output_iorsi3): Likewise.
+ (output_xorsi3): Likewise.
+
+2024-01-19 Kito Cheng <kito.cheng@sifive.com>
+
+ * doc/invoke.texi (RISC-V Options): Add list of supported
+ extensions.
+
+2024-01-19 Juzhe-Zhong <juzhe.zhong@rivai.ai>
+
+ PR target/113495
+ * config/riscv/riscv-protos.h (RVV_VLMAX): Change to regno_reg_rtx[X0_REGNUM].
+ (RVV_VUNDEF): Ditto.
+ * config/riscv/riscv-vsetvl.cc: Add timevar.
+
+2024-01-19 Richard Biener <rguenther@suse.de>
+
+ PR debug/113488
+ * lto-streamer-in.cc (lto_read_tree_1): When there isn't
+ an early DIE but there should be, do not pretend there is.
+
+2024-01-19 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/113494
+ * tree-vect-loop-manip.cc (slpeel_tree_duplicate_loop_to_edge_cfg):
+ Handle endless loop on exit. Handle re-allocated PHI.
+
+2024-01-19 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/113464
+ * gimple-lower-bitint.cc (gimple_lower_bitint): Don't try to
+ optimize loads into GIMPLE_ASM stmts.
+
+2024-01-19 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/113463
+ * gimple-ssa-warn-restrict.cc (builtin_memref::extend_offset_range):
+ Only look through NOP_EXPRs if rhs1 doesn't have wider type than
+ lhs.
+
+2024-01-19 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/113459
+ * tree-ssa-sccvn.cc (vn_walk_cb_data::push_partial_def): Use
+ TREE_INT_CST_LOW of TYPE_SIZE_UNIT rather than GET_MODE_SIZE
+ of SCALAR_INT_TYPE_MODE if type has BLKmode.
+ (vn_reference_lookup_3): Likewise. Formatting fix.
+
+2024-01-19 Jakub Jelinek <jakub@redhat.com>
+ Richard Biener <rguenther@suse.de>
+
+ * cfgexpand.cc (discover_nonconstant_array_refs_r): Force non-BLKmode
+ VAR_DECLs referenced in BLKmode VIEW_CONVERT_EXPRs into memory.
+ * expr.cc (expand_expr_real_1) <case VIEW_CONVERT_EXPR>: Do nothing
+ but adjust_address also for BLKmode mode and MEM op0.
+
+2024-01-19 Palmer Dabbelt <palmer@rivosinc.com>
+
+ * common/config/riscv/riscv-common.cc: Add Zihpm and Zicnttr
+ extensions.
+
+2024-01-19 Kito Cheng <kito.cheng@sifive.com>
+
+ * doc/invoke.texi (RISC-V Options): Document the syntax of -march.
+
+2024-01-19 Kito Cheng <kito.cheng@sifive.com>
+
+ * common/config/riscv/riscv-common.cc
+ (riscv_subset_list::parse_std_ext): Remove.
+ (riscv_subset_list::parse_multiletter_ext): Remove.
+ * config/riscv/riscv-subset.h
+ (riscv_subset_list::parse_std_ext): Remove.
+ (riscv_subset_list::parse_multiletter_ext): Remove.
+
+2024-01-19 Kito Cheng <kito.cheng@sifive.com>
+
+ * common/config/riscv/riscv-common.cc
+ (riscv_subset_list::parse_single_std_ext): New parameter.
+ (riscv_subset_list::parse_single_multiletter_ext): Ditto.
+ (riscv_subset_list::parse_single_ext): Ditto.
+ (riscv_subset_list::parse): Relax the order for the input of ISA
+ string.
+ * config/riscv/riscv-subset.h
+ (riscv_subset_list::parse_single_std_ext): New parameter.
+ (riscv_subset_list::parse_single_multiletter_ext): Ditto.
+ (riscv_subset_list::parse_single_ext): Ditto.
+
+2024-01-19 Kito Cheng <kito.cheng@sifive.com>
+
+ * common/config/riscv/riscv-common.cc
+ (riscv_subset_list::parse_base_ext): New.
+ (riscv_subset_list::parse): Extract part of logic into
+ riscv_subset_list::parse_base_ext.
+ * config/riscv/riscv-subset.h (riscv_subset_list::parse_base_ext):
+ New.
+
+2024-01-19 Kito Cheng <kito.cheng@sifive.com>
+
+ * config/riscv/riscv.cc (riscv_override_options_internal): Tweak
+ sorry message.
+
+2024-01-19 Kuan-Lin Chen <rufus@andestech.com>
+
+ * config/riscv/vector-crypto.md (UNSPEC_CLMUL): Rename to
+ UNSPEC_CLMUL_VC.
+
+2024-01-19 Sandra Loosemore <sandra@codesourcery.com>
+
+ PR c/110029
+ * doc/extend.texi (Common Variable Attributes): Explain what
+ happens when multiple variables with cleanups are in the same scope.
+
+2024-01-18 Sandra Loosemore <sandra@codesourcery.com>
+
+ PR ipa/108470
+ * doc/extend.texi (Common Function Attributes): Document that
+ noinline also disables some interprocedural optimizations and
+ improve flow to the part about using inline asm instead to
+ disable calls from being optimized away completely. Remove the
+ sentence that says noipa is mainly for internal compiler testing.
+
+2024-01-18 John David Anglin <danglin@gcc.gnu.org>
+
+ PR tree-optimization/69807
+ * config/pa/pa.cc (pa_option_override): Set flag_pie on TARGET_64BIT.
+
+2024-01-18 Brian Inglis <Brian.Inglis@Shaw.ca>
+
+ PR target/108521
+ * doc/invoke.texi (Option Summary): Remove -mcygwin and -mno-cygwin
+ from x86 Windows Options.
+
+2024-01-18 Sandra Loosemore <sandra@codesourcery.com>
+
+ PR c/107942
+ * doc/extend.texi (C Extensions): Add new section to menu.
+ (Function Attributes): Move dangling index entries to....
+ (Const and Volatile Functions): New section.
+
+2024-01-18 David Malcolm <dmalcolm@redhat.com>
+
+ PR middle-end/112684
+ * toplev.cc (toplev::main): Don't ICE in
+ -fdiagnostics-generate-patch when exiting after options,
+ since no edit context will have been created.
+
+2024-01-18 Richard Biener <rguenther@suse.de>
+
+ * tree-vect-stmts.cc (vectorizable_store): Do not pre-allocate
+ operands vector.
+
+2024-01-18 Iain Sandoe <iain@sandoe.co.uk>
+
+ * Makefile.in: Emit ENABLE_DARWIN_AT_RPATH into site.exp
+ when ENABLE_DARWIN_AT_RPATH_TRUE is not '#'.
+
+2024-01-18 Jun Sha (Joshua) <cooper.joshua@linux.alibaba.com>
+ Jin Ma <jinma@linux.alibaba.com>
+ Xianmiao Qu <cooper.qu@linux.alibaba.com>
+ Christoph Müllner <christoph.muellner@vrull.eu>
+
+ * config/riscv/thead.cc
+ (th_asm_output_opcode): Rewrite some instructions.
+
+2024-01-18 Jun Sha (Joshua) <cooper.joshua@linux.alibaba.com>
+ Jin Ma <jinma@linux.alibaba.com>
+ Xianmiao Qu <cooper.qu@linux.alibaba.com>
+ Christoph Müllner <christoph.muellner@vrull.eu>
+
+ * config/riscv/riscv.md (none,thv,rvv): New attribute.
+ (no,yes): Add an attribute to disable alternative
+ for xtheadvector or RVV1.0.
+ * config/riscv/vector.md:
+ Disable alternatives that destination register overlaps
+ source register group for xtheadvector.
+
+2024-01-18 Jun Sha (Joshua) <cooper.joshua@linux.alibaba.com>
+ Jin Ma <jinma@linux.alibaba.com>
+ Xianmiao Qu <cooper.qu@linux.alibaba.com>
+ Christoph Müllner <christoph.muellner@vrull.eu>
+
+ * config/riscv/riscv-vector-builtins-bases.cc
+ (class th_loadstore_width): Define new builtin bases.
+ (class th_extract): Define new builtin bases.
+ (BASE): Define new builtin bases.
+ * config/riscv/riscv-vector-builtins-bases.h:
+ Define new builtin class.
+ * config/riscv/riscv-vector-builtins-shapes.cc
+ (struct th_loadstore_width_def): Define new builtin shapes.
+ (struct th_indexed_loadstore_width_def):
+ Define new builtin shapes.
+ (struct th_extract_def): Define new builtin shapes.
+ (SHAPE): Define new builtin shapes.
+ * config/riscv/riscv-vector-builtins-shapes.h:
+ Define new builtin shapes.
+ * config/riscv/riscv-vector-builtins.cc (DEF_RVV_FUNCTION):
+ Redefine DEF_RVV_FUNCTION for XTheadVector special intrinsics.
+ * config/riscv/riscv-vector-builtins.h
+ (enum required_ext): Add new XTheadVector member.
+ (struct function_group_info): Likewise.
+ * config/riscv/t-riscv:
+ Add thead-vector-builtins-functions.def
+ * config/riscv/thead-vector.md
+ (@pred_mov_width<vlmem_op_attr><mode>): Add new patterns.
+ (*pred_mov_width<vlmem_op_attr><mode>): Likewise.
+ (@pred_store_width<vlmem_op_attr><mode>): Likewise.
+ (@pred_strided_load_width<vlmem_op_attr><mode>): Likewise.
+ (@pred_strided_store_width<vlmem_op_attr><mode>): Likewise.
+ (@pred_indexed_load_width<vlmem_op_attr><mode>): Likewise.
+ (@pred_th_extract<mode>): Likewise.
+ (*pred_th_extract<mode>): Likewise.
+ * config/riscv/thead-vector-builtins-functions.def: New file.
+
+2024-01-18 Jun Sha (Joshua) <cooper.joshua@linux.alibaba.com>
+ Jin Ma <jinma@linux.alibaba.com>
+ Xianmiao Qu <cooper.qu@linux.alibaba.com>
+ Christoph Müllner <christoph.muellner@vrull.eu>
+
+ * config.gcc: Add files for XTheadVector intrinsics.
+ * config/riscv/autovec.md: Guard XTheadVector.
+ * config/riscv/predicates.md: Disable immediate vl
+ for XTheadVector.
+ * config/riscv/riscv-c.cc (riscv_pragma_intrinsic):
+ Add pragma for XTheadVector.
+ * config/riscv/riscv-string.cc (riscv_expand_block_move):
+ Guard XTheadVector.
+ * config/riscv/riscv-v.cc (vls_mode_valid_p):
+ Avoid autovec.
+ * config/riscv/riscv-vector-builtins-bases.cc:
+ Do not normalize vsetvl instructions for XTheadVector.
+ * config/riscv/riscv-vector-builtins-shapes.cc (check_type):
+ New check type function.
+ (build_one): Adjust for XTheadVector.
+ * config/riscv/riscv-vector-switch.def (ENTRY):
+ Disable fractional mode for the XTheadVector extension.
+ (TUPLE_ENTRY): Likewise.
+ * config/riscv/riscv.cc (riscv_v_adjust_bytesize):
+ Guard XTheadVector.
+ (riscv_preferred_simd_mode): Likewsie.
+ (riscv_autovectorize_vector_modes): Likewise.
+ (riscv_vector_mode_supported_any_target_p): Likewise.
+ (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Likewise.
+ * config/riscv/thead.cc (th_asm_output_opcode):
+ Rewrite vsetvl instructions.
+ * config/riscv/vector.md:
+ Include thead-vector.md and change fractional LMUL
+ into 1 for vbool.
+ * config/riscv/riscv_th_vector.h: New file.
+ * config/riscv/thead-vector.md: New file.
+
+2024-01-18 Jun Sha (Joshua) <cooper.joshua@linux.alibaba.com>
+ Jin Ma <jinma@linux.alibaba.com>
+ Xianmiao Qu <cooper.qu@linux.alibaba.com>
+ Christoph Müllner <christoph.muellner@vrull.eu>
+
+ * config/riscv/riscv-protos.h (riscv_asm_output_opcode):
+ Add new function to add assembler insn code prefix/suffix.
+ (th_asm_output_opcode):
+ Add Thead function to add assembler insn code prefix/suffix.
+ * config/riscv/riscv.cc (riscv_asm_output_opcode):
+ Implement function to add assembler insn code prefix/suffix.
+ * config/riscv/riscv.h (ASM_OUTPUT_OPCODE):
+ Add new function to add assembler insn code prefix/suffix.
+ * config/riscv/thead.cc (th_asm_output_opcode):
+ Implement Thead function to add assembler insn code
+ prefix/suffix.
+
+2024-01-18 Jun Sha (Joshua) <cooper.joshua@linux.alibaba.com>
+ Jin Ma <jinma@linux.alibaba.com>
+ Xianmiao Qu <cooper.qu@linux.alibaba.com>
+ Christoph Müllner <christoph.muellner@vrull.eu>
+
+ * common/config/riscv/riscv-common.cc
+ (riscv_subset_list::parse): Add new vendor extension.
+ * config/riscv/riscv-c.cc (riscv_cpu_cpp_builtins):
+ Add test marco.
+ * config/riscv/riscv.opt: Add new mask.
+
+2024-01-18 Iain Sandoe <iain@sandoe.co.uk>
+
+ * config/darwin.h (DARWIN_RPATH_SPEC): Arrange for the %P spec
+ to be conditional on macosx-version-min.
+
+2024-01-18 Iain Sandoe <iain@sandoe.co.uk>
+
+ * config/darwin.cc (darwin_objc1_section): Use the correct
+ meta-data version for constant strings.
+ (machopic_select_section): Assert if we fail to handle CFString
+ sections as Obejctive-C meta-data or drectly.
+
+2024-01-18 Iain Sandoe <iain@sandoe.co.uk>
+
+ * lto-section-names.h (OFFLOAD_SECTION_NAME_PREFIX,
+ OFFLOAD_VAR_TABLE_SECTION_NAME, OFFLOAD_FUNC_TABLE_SECTION_NAME,
+ OFFLOAD_IND_FUNC_TABLE_SECTION_NAME): Provide Mach-O syntax
+ versions when the object format is Mach-O.
+
+2024-01-18 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR target/105522
+ * config/darwin.cc (machopic_select_section): Handle C and C++
+ CFStrings.
+ (darwin_rename_builtins): Move this out of the CFString code.
+ (darwin_libc_has_function): Likewise.
+ (darwin_build_constant_cfstring): Create an anonymous var to
+ hold each CFString.
+ * config/darwin.h (ASM_OUTPUT_LABELREF): Handle constant
+ CFstrings.
+
+2024-01-18 Maxim Kuvyrkov <maxim.kuvyrkov@linaro.org>
+
+ PR bootstrap/113445
+ * haifa-sched.cc (dep_list_size): Make global.
+ * sched-deps.cc (find_inc): Use instead of sd_lists_size().
+ * sched-int.h (dep_list_size): Declare.
+
+2024-01-18 Martin Jambor <mjambor@suse.cz>
+
+ PR tree-optimization/110422
+ * tree-sra.cc (scan_function): Disqualify bases of operands of asm
+ gotos.
+
+2024-01-18 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/113475
+ * gimple-range-phi.h (phi_analyzer::m_phi_groups): New.
+ * gimple-range-phi.cc (phi_analyzer::phi_analyzer): Initialize.
+ (phi_analyzer::~phi_analyzer): Deallocate and free collected
+ phi_grous.
+ (phi_analyzer::process_phi): Record allocated phi_groups.
+
+2024-01-18 Richard Biener <rguenther@suse.de>
+
+ * tree-vect-stmts.cc (vectorizable_store): Do not allocate
+ storage for gvec_oprnds elements.
+
+2024-01-18 Richard Biener <rguenther@suse.de>
+
+ * tree-vect-loop.cc (vec_init_loop_exit_info): Adjust comment,
+ prefer all later exits we can handle.
+ (vect_analyze_loop_form): Free the allocated loop body.
+ Adjust comments.
+
+2024-01-18 Georg-Johann Lay <avr@gjlay.de>
+
+ * config/avr/avr-log.cc: Tabify.
+
+2024-01-18 Juzhe-Zhong <juzhe.zhong@rivai.ai>
+
+ * config/riscv/autovec.md: Support vi variant.
+
+2024-01-18 Georg-Johann Lay <avr@gjlay.de>
+
+ * config/avr/avr-devices.cc: Tabify.
+
+2024-01-18 Georg-Johann Lay <avr@gjlay.de>
+
+ * config/avr/avr-c.cc: Tabify.
+
+2024-01-18 Georg-Johann Lay <avr@gjlay.de>
+
+ * config/avr/driver-avr.cc: Tabify.
+
+2024-01-18 Georg-Johann Lay <avr@gjlay.de>
+
+ * config/avr/gen-avr-mmcu-texi.cc: Tabify.
+
+2024-01-18 Georg-Johann Lay <avr@gjlay.de>
+
+ * config/avr/gen-avr-mmcu-specs.cc: Tabify.
+
+2024-01-18 Jakub Jelinek <jakub@redhat.com>
+
+ * config/riscv/riscv.opt (mshorten-memrefs, mrelax, mcsr-check,
+ minline-strcmp, minline-strncmp, minline-strlen,
+ -param=riscv-vector-abi): Remove Bool keywords.
+
+2024-01-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/113122
+ * config/i386/i386.cc (x86_function_profiler): Add -masm=intel
+ support. Add missing space after , in emitted assembly in some
+ cases. Formatting fixes.
+
+2024-01-18 Xi Ruoyao <xry111@xry111.site>
+
+ * config/loongarch/loongarch.md (movsi_internal): Remove
+ constraint z.
+
+2024-01-18 Georg-Johann Lay <avr@gjlay.de>
+
+ * config/avr/gen-avr-mmcu-specs.cc (diagnose_rodata_in_ram): Fix typo
+ in the diagnostic, and capitalize the device name.
+ (print_mcu): Generate specs such that:
+ <*check_rodata_in_ram>: New.
+ <*cc1_misc>: Use check_rodata_in_ram instead of cc1_rodata_in_ram.
+ <*link_misc>: Use check_rodata_in_ram instead of link_rodata_in_ram.
+ <*cc1_rodata_in_ram, *link_rodata_in_ram>: Remove.
+
+2024-01-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR other/113399
+ * common.opt (ffold-mem-offsets): Remove Target and Bool keywords, add
+ Common and Optimization.
+
+2024-01-18 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/113431
+ * tree-vect-data-refs.cc (vect_preserves_scalar_order_p):
+ When there is an invariant load we might not preserve
+ scalar order.
+
+2024-01-18 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/113374
+ * tree-ssa-operands.h (SET_PHI_ARG_DEF_ON_EDGE): New.
+ * tree-vect-loop.cc (move_early_exit_stmts): Update
+ virtual LC PHIs.
+ * tree-vect-loop-manip.cc (slpeel_tree_duplicate_loop_to_edge_cfg):
+ Refactor. Preserve virtual LC PHIs on all exits.
+
+2024-01-18 Lulu Cheng <chenglulu@loongson.cn>
+
+ * config/loongarch/loongarch.cc (loongarch_split_symbol):
+ Assign the '/u' attribute to the mem.
+
+2024-01-18 Sandra Loosemore <sandra@codesourcery.com>
+
+ PR middle-end/110847
+ * doc/invoke.texi (Option Summary): Document negative forms of
+ -Wtsan and -Wxor-used-as-pow.
+ (Warning Options): Likewise.
+
+2024-01-18 Juzhe-Zhong <juzhe.zhong@rivai.ai>
+
+ PR target/113429
+ * config/riscv/riscv-vsetvl.cc (pre_vsetvl::earliest_fuse_vsetvl_info): Fix bug.
+
+2024-01-18 Sandra Loosemore <sandra@codesourcery.com>
+
+ * doc/extend.texi (Common Function Attributes): Re-alphabetize
+ the table.
+ (Common Variable Attributes): Likewise.
+ (Common Type Attributes): Likewise.
+
2024-01-17 Sandra Loosemore <sandra@codesourcery.com>
PR middle-end/111659
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index dfe204e..d984aca 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20240118
+20240130
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index deb12e1..95caa54 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -4303,7 +4303,7 @@ site.exp: ./config.status Makefile
echo "set COMPAT_OPTIONS \"$(COMPAT_OPTIONS)\"" >> ./site.tmp; \
else true; \
fi
- @if test "x@enable_darwin_at_rpath@" = "xyes" ; then \
+ @if test "X@ENABLE_DARWIN_AT_RPATH_TRUE@" != "X#" ; then \
echo "set ENABLE_DARWIN_AT_RPATH 1" >> ./site.tmp; \
fi
@echo "## All variables above are generated by configure. Do Not Edit ##" >> ./site.tmp
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 3ca92dc..694b255 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,7 @@
+2024-01-23 Ronan Desplanques <desplanques@adacore.com>
+
+ * gnatvsn.ads: Update year.
+
2024-01-09 Eric Botcazou <ebotcazou@adacore.com>
* gcc-interface/decl.cc (gnat_to_gnu_entity) <E_Array_Type>: Use the
diff --git a/gcc/ada/Makefile.rtl b/gcc/ada/Makefile.rtl
index e404d43..6e1ca30 100644
--- a/gcc/ada/Makefile.rtl
+++ b/gcc/ada/Makefile.rtl
@@ -1,5 +1,5 @@
# Makefile.rtl for GNU Ada Compiler (GNAT).
-# Copyright (C) 2003-2021, Free Software Foundation, Inc.
+# Copyright (C) 2003-2024, Free Software Foundation, Inc.
#This file is part of GCC.
diff --git a/gcc/ada/accessibility.adb b/gcc/ada/accessibility.adb
index bc217be..75ab966 100644
--- a/gcc/ada/accessibility.adb
+++ b/gcc/ada/accessibility.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2022-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2022-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/accessibility.ads b/gcc/ada/accessibility.ads
index 000e9b6..01a2429 100644
--- a/gcc/ada/accessibility.ads
+++ b/gcc/ada/accessibility.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2022-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2022-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/ada_get_targ.adb b/gcc/ada/ada_get_targ.adb
index 5de9fc4..7006ab8 100644
--- a/gcc/ada/ada_get_targ.adb
+++ b/gcc/ada/ada_get_targ.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/adabkend.adb b/gcc/ada/adabkend.adb
index 890f1a4..abbe715 100644
--- a/gcc/ada/adabkend.adb
+++ b/gcc/ada/adabkend.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2023, AdaCore --
+-- Copyright (C) 2001-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/adabkend.ads b/gcc/ada/adabkend.ads
index 96d975d..a94bab8 100644
--- a/gcc/ada/adabkend.ads
+++ b/gcc/ada/adabkend.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/adadecode.c b/gcc/ada/adadecode.c
index 03ba472..07342e4 100644
--- a/gcc/ada/adadecode.c
+++ b/gcc/ada/adadecode.c
@@ -6,7 +6,7 @@
* *
* C Implementation File *
* *
- * Copyright (C) 2001-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 2001-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/adadecode.h b/gcc/ada/adadecode.h
index fe07989..57484fc 100644
--- a/gcc/ada/adadecode.h
+++ b/gcc/ada/adadecode.h
@@ -6,7 +6,7 @@
* *
* C Header File *
* *
- * Copyright (C) 2001-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 2001-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/adaint.c b/gcc/ada/adaint.c
index 61dc368..74aa3c4 100644
--- a/gcc/ada/adaint.c
+++ b/gcc/ada/adaint.c
@@ -6,7 +6,7 @@
* *
* C Implementation File *
* *
- * Copyright (C) 1992-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 1992-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/adaint.h b/gcc/ada/adaint.h
index 298ea9e..0cbfd0e 100644
--- a/gcc/ada/adaint.h
+++ b/gcc/ada/adaint.h
@@ -6,7 +6,7 @@
* *
* C Header File *
* *
- * Copyright (C) 1992-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 1992-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/affinity.c b/gcc/ada/affinity.c
index 14d7294..650b049 100644
--- a/gcc/ada/affinity.c
+++ b/gcc/ada/affinity.c
@@ -6,7 +6,7 @@
* *
* C Implementation File *
* *
- * Copyright (C) 2005-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 2005-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/ali-util.adb b/gcc/ada/ali-util.adb
index 2bd5bca..fe0af74 100644
--- a/gcc/ada/ali-util.adb
+++ b/gcc/ada/ali-util.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/ali-util.ads b/gcc/ada/ali-util.ads
index 3d88ac8..315410a 100644
--- a/gcc/ada/ali-util.ads
+++ b/gcc/ada/ali-util.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/ali.adb b/gcc/ada/ali.adb
index c67eb42..6bf48c0 100644
--- a/gcc/ada/ali.adb
+++ b/gcc/ada/ali.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/ali.ads b/gcc/ada/ali.ads
index ac5121e..23c7444 100644
--- a/gcc/ada/ali.ads
+++ b/gcc/ada/ali.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/alloc.ads b/gcc/ada/alloc.ads
index a108147..0b43a26 100644
--- a/gcc/ada/alloc.ads
+++ b/gcc/ada/alloc.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/argv-lynxos178-raven-cert.c b/gcc/ada/argv-lynxos178-raven-cert.c
index cee9af5..2227e05 100644
--- a/gcc/ada/argv-lynxos178-raven-cert.c
+++ b/gcc/ada/argv-lynxos178-raven-cert.c
@@ -6,7 +6,7 @@
* *
* C Implementation File *
* *
- * Copyright (C) 1992-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 1992-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/argv.c b/gcc/ada/argv.c
index 17369a9..6680783 100644
--- a/gcc/ada/argv.c
+++ b/gcc/ada/argv.c
@@ -6,7 +6,7 @@
* *
* C Implementation File *
* *
- * Copyright (C) 1992-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 1992-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/aspects.adb b/gcc/ada/aspects.adb
index 1d322ed..0d4988a 100644
--- a/gcc/ada/aspects.adb
+++ b/gcc/ada/aspects.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2010-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2010-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/aspects.ads b/gcc/ada/aspects.ads
index 8f4ae51..a348b32 100644
--- a/gcc/ada/aspects.ads
+++ b/gcc/ada/aspects.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2010-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2010-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/atree.adb b/gcc/ada/atree.adb
index 7a55b18..416097b 100644
--- a/gcc/ada/atree.adb
+++ b/gcc/ada/atree.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/atree.ads b/gcc/ada/atree.ads
index 2ff65d2..2ecb386 100644
--- a/gcc/ada/atree.ads
+++ b/gcc/ada/atree.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/atree.h b/gcc/ada/atree.h
index 1451272..1887bd5 100644
--- a/gcc/ada/atree.h
+++ b/gcc/ada/atree.h
@@ -6,7 +6,7 @@
* *
* C Header File *
* *
- * Copyright (C) 1992-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 1992-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/aux-io.c b/gcc/ada/aux-io.c
index 12fe5cf..1f16e44 100644
--- a/gcc/ada/aux-io.c
+++ b/gcc/ada/aux-io.c
@@ -6,7 +6,7 @@
* *
* C Implementation File *
* *
- * Copyright (C) 1992-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 1992-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/back_end.adb b/gcc/ada/back_end.adb
index bc370e9..031c2bf 100644
--- a/gcc/ada/back_end.adb
+++ b/gcc/ada/back_end.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/back_end.ads b/gcc/ada/back_end.ads
index 47d5ea1..30acf2e 100644
--- a/gcc/ada/back_end.ads
+++ b/gcc/ada/back_end.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/backend_utils.adb b/gcc/ada/backend_utils.adb
index 60715c5..6f4b587 100644
--- a/gcc/ada/backend_utils.adb
+++ b/gcc/ada/backend_utils.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2021-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2021-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/backend_utils.ads b/gcc/ada/backend_utils.ads
index 7f7466a..0ff25d6 100644
--- a/gcc/ada/backend_utils.ads
+++ b/gcc/ada/backend_utils.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2021-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2021-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/bcheck.adb b/gcc/ada/bcheck.adb
index 86ed920..dd2ece8 100644
--- a/gcc/ada/bcheck.adb
+++ b/gcc/ada/bcheck.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/bcheck.ads b/gcc/ada/bcheck.ads
index c9079ea..dea6db5 100644
--- a/gcc/ada/bcheck.ads
+++ b/gcc/ada/bcheck.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/binde.adb b/gcc/ada/binde.adb
index fe262c0..a579e42 100644
--- a/gcc/ada/binde.adb
+++ b/gcc/ada/binde.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/binde.ads b/gcc/ada/binde.ads
index 37338c1..bce62aa 100644
--- a/gcc/ada/binde.ads
+++ b/gcc/ada/binde.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/binderr.adb b/gcc/ada/binderr.adb
index 5fb32c6..6306be7 100644
--- a/gcc/ada/binderr.adb
+++ b/gcc/ada/binderr.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/binderr.ads b/gcc/ada/binderr.ads
index 2ebca71..5815599 100644
--- a/gcc/ada/binderr.ads
+++ b/gcc/ada/binderr.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/bindgen.adb b/gcc/ada/bindgen.adb
index 005ad70..bffd1344 100644
--- a/gcc/ada/bindgen.adb
+++ b/gcc/ada/bindgen.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/bindgen.ads b/gcc/ada/bindgen.ads
index 2297525..554a26c 100644
--- a/gcc/ada/bindgen.ads
+++ b/gcc/ada/bindgen.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/bindo-augmentors.adb b/gcc/ada/bindo-augmentors.adb
index 5c6fc39..02571eb 100644
--- a/gcc/ada/bindo-augmentors.adb
+++ b/gcc/ada/bindo-augmentors.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2019-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2019-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/bindo-augmentors.ads b/gcc/ada/bindo-augmentors.ads
index 17b2d0c..c8c37da 100644
--- a/gcc/ada/bindo-augmentors.ads
+++ b/gcc/ada/bindo-augmentors.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2019-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2019-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/bindo-builders.adb b/gcc/ada/bindo-builders.adb
index 172f50f..f4a1aa5 100644
--- a/gcc/ada/bindo-builders.adb
+++ b/gcc/ada/bindo-builders.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2019-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2019-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/bindo-builders.ads b/gcc/ada/bindo-builders.ads
index 08ed6ed..ddc018f 100644
--- a/gcc/ada/bindo-builders.ads
+++ b/gcc/ada/bindo-builders.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2019-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2019-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/bindo-diagnostics.adb b/gcc/ada/bindo-diagnostics.adb
index 4a46cc1..3345735 100644
--- a/gcc/ada/bindo-diagnostics.adb
+++ b/gcc/ada/bindo-diagnostics.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2019-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2019-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/bindo-diagnostics.ads b/gcc/ada/bindo-diagnostics.ads
index 5f94433..3ce8c18 100644
--- a/gcc/ada/bindo-diagnostics.ads
+++ b/gcc/ada/bindo-diagnostics.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2019-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2019-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/bindo-elaborators.adb b/gcc/ada/bindo-elaborators.adb
index 0b61353..5a23527 100644
--- a/gcc/ada/bindo-elaborators.adb
+++ b/gcc/ada/bindo-elaborators.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2019-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2019-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/bindo-elaborators.ads b/gcc/ada/bindo-elaborators.ads
index 0103236..2c71e76 100644
--- a/gcc/ada/bindo-elaborators.ads
+++ b/gcc/ada/bindo-elaborators.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2019-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2019-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/bindo-graphs.adb b/gcc/ada/bindo-graphs.adb
index 8a6c549..cb90a0c 100644
--- a/gcc/ada/bindo-graphs.adb
+++ b/gcc/ada/bindo-graphs.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2019-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2019-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/bindo-graphs.ads b/gcc/ada/bindo-graphs.ads
index 737a151..f42968c 100644
--- a/gcc/ada/bindo-graphs.ads
+++ b/gcc/ada/bindo-graphs.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2019-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2019-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/bindo-units.adb b/gcc/ada/bindo-units.adb
index f849f70..0fbe8e9 100644
--- a/gcc/ada/bindo-units.adb
+++ b/gcc/ada/bindo-units.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2019-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2019-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/bindo-units.ads b/gcc/ada/bindo-units.ads
index 9aa78d8..47f5e4a 100644
--- a/gcc/ada/bindo-units.ads
+++ b/gcc/ada/bindo-units.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2019-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2019-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/bindo-validators.adb b/gcc/ada/bindo-validators.adb
index c6286c3..2cb8fa2 100644
--- a/gcc/ada/bindo-validators.adb
+++ b/gcc/ada/bindo-validators.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2019-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2019-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/bindo-validators.ads b/gcc/ada/bindo-validators.ads
index bd2b7f2..2840780 100644
--- a/gcc/ada/bindo-validators.ads
+++ b/gcc/ada/bindo-validators.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2019-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2019-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/bindo-writers.adb b/gcc/ada/bindo-writers.adb
index c0515c7..874da6f 100644
--- a/gcc/ada/bindo-writers.adb
+++ b/gcc/ada/bindo-writers.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2019-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2019-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/bindo-writers.ads b/gcc/ada/bindo-writers.ads
index eee8a85..db8a1d9 100644
--- a/gcc/ada/bindo-writers.ads
+++ b/gcc/ada/bindo-writers.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2019-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2019-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/bindo.adb b/gcc/ada/bindo.adb
index cf2c630..e6f5985 100644
--- a/gcc/ada/bindo.adb
+++ b/gcc/ada/bindo.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2019-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2019-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/bindo.ads b/gcc/ada/bindo.ads
index 32b943f..b485567 100644
--- a/gcc/ada/bindo.ads
+++ b/gcc/ada/bindo.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2019-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2019-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/bindusg.adb b/gcc/ada/bindusg.adb
index 89a6cae..855fd16 100644
--- a/gcc/ada/bindusg.adb
+++ b/gcc/ada/bindusg.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/bindusg.ads b/gcc/ada/bindusg.ads
index ba84f25..8e61f72 100644
--- a/gcc/ada/bindusg.ads
+++ b/gcc/ada/bindusg.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/butil.adb b/gcc/ada/butil.adb
index e8d8f27..77ed12c 100644
--- a/gcc/ada/butil.adb
+++ b/gcc/ada/butil.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/butil.ads b/gcc/ada/butil.ads
index 04b85cd..dc6ab02 100644
--- a/gcc/ada/butil.ads
+++ b/gcc/ada/butil.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/cal.c b/gcc/ada/cal.c
index 7a4da19..4485af0 100644
--- a/gcc/ada/cal.c
+++ b/gcc/ada/cal.c
@@ -6,7 +6,7 @@
* *
* C Implementation File *
* *
- * Copyright (C) 1992-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 1992-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/casing.adb b/gcc/ada/casing.adb
index 134d447..e544556 100644
--- a/gcc/ada/casing.adb
+++ b/gcc/ada/casing.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/casing.ads b/gcc/ada/casing.ads
index 2cdc896..6a9c681 100644
--- a/gcc/ada/casing.ads
+++ b/gcc/ada/casing.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/checks.adb b/gcc/ada/checks.adb
index d59d44f..c81482a 100644
--- a/gcc/ada/checks.adb
+++ b/gcc/ada/checks.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/checks.ads b/gcc/ada/checks.ads
index 8fd3802..36b5fa4 100644
--- a/gcc/ada/checks.ads
+++ b/gcc/ada/checks.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/cio.c b/gcc/ada/cio.c
index f225609..4262364 100644
--- a/gcc/ada/cio.c
+++ b/gcc/ada/cio.c
@@ -6,7 +6,7 @@
* *
* C Implementation File *
* *
- * Copyright (C) 1992-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 1992-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/clean.adb b/gcc/ada/clean.adb
index 993e311..925e576 100644
--- a/gcc/ada/clean.adb
+++ b/gcc/ada/clean.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2003-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2003-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/clean.ads b/gcc/ada/clean.ads
index f6870a7..4d8c92c 100644
--- a/gcc/ada/clean.ads
+++ b/gcc/ada/clean.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2003-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2003-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/comperr.adb b/gcc/ada/comperr.adb
index c52db7b..2623eed 100644
--- a/gcc/ada/comperr.adb
+++ b/gcc/ada/comperr.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/comperr.ads b/gcc/ada/comperr.ads
index 21cbbe1..eb8ae4c 100644
--- a/gcc/ada/comperr.ads
+++ b/gcc/ada/comperr.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/config-lang.in b/gcc/ada/config-lang.in
index 3d82937..57212e2 100644
--- a/gcc/ada/config-lang.in
+++ b/gcc/ada/config-lang.in
@@ -1,5 +1,5 @@
# Top level configure fragment for GNU Ada (GNAT).
-# Copyright (C) 1994-2009 Free Software Foundation, Inc.
+# Copyright (C) 1994-2024 Free Software Foundation, Inc.
#This file is part of GCC.
diff --git a/gcc/ada/contracts.adb b/gcc/ada/contracts.adb
index 21bbbf1..551e9f3 100644
--- a/gcc/ada/contracts.adb
+++ b/gcc/ada/contracts.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2015-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2015-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/contracts.ads b/gcc/ada/contracts.ads
index aa0cf66..c1d1881 100644
--- a/gcc/ada/contracts.ads
+++ b/gcc/ada/contracts.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2015-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2015-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/csets.adb b/gcc/ada/csets.adb
index e9e6873..7e5af3f 100644
--- a/gcc/ada/csets.adb
+++ b/gcc/ada/csets.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/csets.ads b/gcc/ada/csets.ads
index 9e8756b..9dc78ba 100644
--- a/gcc/ada/csets.ads
+++ b/gcc/ada/csets.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/cstand.adb b/gcc/ada/cstand.adb
index fbd5888..6b45d25 100644
--- a/gcc/ada/cstand.adb
+++ b/gcc/ada/cstand.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/cstand.ads b/gcc/ada/cstand.ads
index e6bfec5..1135bd2 100644
--- a/gcc/ada/cstand.ads
+++ b/gcc/ada/cstand.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/cstreams.c b/gcc/ada/cstreams.c
index bc527b5..ca94ce7 100644
--- a/gcc/ada/cstreams.c
+++ b/gcc/ada/cstreams.c
@@ -6,7 +6,7 @@
* *
* Auxiliary C functions for Interfaces.C.Streams *
* *
- * Copyright (C) 1992-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 1992-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/ctrl_c.c b/gcc/ada/ctrl_c.c
index b2e03ac..8c0a596 100644
--- a/gcc/ada/ctrl_c.c
+++ b/gcc/ada/ctrl_c.c
@@ -6,7 +6,7 @@
* *
* C Implementation File *
* *
- * Copyright (C) 2002-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 2002-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/debug.adb b/gcc/ada/debug.adb
index 9c2a2b0..18b4a54 100644
--- a/gcc/ada/debug.adb
+++ b/gcc/ada/debug.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/debug.ads b/gcc/ada/debug.ads
index 3a97566..58ffd17 100644
--- a/gcc/ada/debug.ads
+++ b/gcc/ada/debug.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/debug_a.adb b/gcc/ada/debug_a.adb
index f999b7f..332b882 100644
--- a/gcc/ada/debug_a.adb
+++ b/gcc/ada/debug_a.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/debug_a.ads b/gcc/ada/debug_a.ads
index fec166d..32771d1 100644
--- a/gcc/ada/debug_a.ads
+++ b/gcc/ada/debug_a.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/einfo-utils.adb b/gcc/ada/einfo-utils.adb
index 46177ac..00799eb 100644
--- a/gcc/ada/einfo-utils.adb
+++ b/gcc/ada/einfo-utils.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/einfo-utils.ads b/gcc/ada/einfo-utils.ads
index 5589276..701d8ce 100644
--- a/gcc/ada/einfo-utils.ads
+++ b/gcc/ada/einfo-utils.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/einfo.adb b/gcc/ada/einfo.adb
index 5e227c1..ec2e151 100644
--- a/gcc/ada/einfo.adb
+++ b/gcc/ada/einfo.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/einfo.ads b/gcc/ada/einfo.ads
index d08f02b..4870684 100644
--- a/gcc/ada/einfo.ads
+++ b/gcc/ada/einfo.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/elists.adb b/gcc/ada/elists.adb
index 6af7228..197fc6f 100644
--- a/gcc/ada/elists.adb
+++ b/gcc/ada/elists.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/elists.ads b/gcc/ada/elists.ads
index 31397ca..455ba6f 100644
--- a/gcc/ada/elists.ads
+++ b/gcc/ada/elists.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/elists.h b/gcc/ada/elists.h
index 378b598..08e93d9 100644
--- a/gcc/ada/elists.h
+++ b/gcc/ada/elists.h
@@ -6,7 +6,7 @@
* *
* C Header File *
* *
- * Copyright (C) 1992-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 1992-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/env.c b/gcc/ada/env.c
index e26e228..7646752 100644
--- a/gcc/ada/env.c
+++ b/gcc/ada/env.c
@@ -6,7 +6,7 @@
* *
* C Implementation File *
* *
- * Copyright (C) 2005-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 2005-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/env.h b/gcc/ada/env.h
index 2a65e43..47843f6 100644
--- a/gcc/ada/env.h
+++ b/gcc/ada/env.h
@@ -6,7 +6,7 @@
* *
* C Header File *
* *
- * Copyright (C) 2009-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 2009-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/err_vars.ads b/gcc/ada/err_vars.ads
index e84efb6..113dd93 100644
--- a/gcc/ada/err_vars.ads
+++ b/gcc/ada/err_vars.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/errno.c b/gcc/ada/errno.c
index 9a29826..0f6f865 100644
--- a/gcc/ada/errno.c
+++ b/gcc/ada/errno.c
@@ -6,7 +6,7 @@
* *
* C Implementation File *
* *
- * Copyright (C) 1992-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 1992-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/errout.adb b/gcc/ada/errout.adb
index 8faec1d..d28a410 100644
--- a/gcc/ada/errout.adb
+++ b/gcc/ada/errout.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/errout.ads b/gcc/ada/errout.ads
index dc412a2..5a7764a 100644
--- a/gcc/ada/errout.ads
+++ b/gcc/ada/errout.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/erroutc.adb b/gcc/ada/erroutc.adb
index 5a8556b..125cbf8 100644
--- a/gcc/ada/erroutc.adb
+++ b/gcc/ada/erroutc.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/erroutc.ads b/gcc/ada/erroutc.ads
index 6602907..9463109 100644
--- a/gcc/ada/erroutc.ads
+++ b/gcc/ada/erroutc.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/errutil.adb b/gcc/ada/errutil.adb
index 8b3c2ec..bac9d4b 100644
--- a/gcc/ada/errutil.adb
+++ b/gcc/ada/errutil.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1991-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1991-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/errutil.ads b/gcc/ada/errutil.ads
index 42e4448..caa1b19 100644
--- a/gcc/ada/errutil.ads
+++ b/gcc/ada/errutil.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/eval_fat.adb b/gcc/ada/eval_fat.adb
index 42ed413..906fde7 100644
--- a/gcc/ada/eval_fat.adb
+++ b/gcc/ada/eval_fat.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/eval_fat.ads b/gcc/ada/eval_fat.ads
index 169266d..f2bb58c 100644
--- a/gcc/ada/eval_fat.ads
+++ b/gcc/ada/eval_fat.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exit.c b/gcc/ada/exit.c
index 50a6203..a3d65d4 100644
--- a/gcc/ada/exit.c
+++ b/gcc/ada/exit.c
@@ -6,7 +6,7 @@
* *
* C Implementation File *
* *
- * Copyright (C) 1992-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 1992-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/exp_aggr.adb b/gcc/ada/exp_aggr.adb
index 25215cb..950f310 100644
--- a/gcc/ada/exp_aggr.adb
+++ b/gcc/ada/exp_aggr.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_aggr.ads b/gcc/ada/exp_aggr.ads
index 4babf2e..8db0a02 100644
--- a/gcc/ada/exp_aggr.ads
+++ b/gcc/ada/exp_aggr.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_atag.adb b/gcc/ada/exp_atag.adb
index ddbd51f..12c7d8c 100644
--- a/gcc/ada/exp_atag.adb
+++ b/gcc/ada/exp_atag.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2006-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2006-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_atag.ads b/gcc/ada/exp_atag.ads
index 7a7ad6e..96cb566 100644
--- a/gcc/ada/exp_atag.ads
+++ b/gcc/ada/exp_atag.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2006-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2006-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_attr.adb b/gcc/ada/exp_attr.adb
index a781f93..8f32dc2 100644
--- a/gcc/ada/exp_attr.adb
+++ b/gcc/ada/exp_attr.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_attr.ads b/gcc/ada/exp_attr.ads
index 4d815bd..204cfb0 100644
--- a/gcc/ada/exp_attr.ads
+++ b/gcc/ada/exp_attr.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_cg.adb b/gcc/ada/exp_cg.adb
index dae0586..addf1ca 100644
--- a/gcc/ada/exp_cg.adb
+++ b/gcc/ada/exp_cg.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2010-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2010-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_cg.ads b/gcc/ada/exp_cg.ads
index 91308ee..2c8f418 100644
--- a/gcc/ada/exp_cg.ads
+++ b/gcc/ada/exp_cg.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2010-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2010-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_ch10.ads b/gcc/ada/exp_ch10.ads
index 5502924..122d0ec 100644
--- a/gcc/ada/exp_ch10.ads
+++ b/gcc/ada/exp_ch10.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_ch11.adb b/gcc/ada/exp_ch11.adb
index 53f0753..9a0f66f 100644
--- a/gcc/ada/exp_ch11.adb
+++ b/gcc/ada/exp_ch11.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_ch11.ads b/gcc/ada/exp_ch11.ads
index 8d5b998..97d8c0a 100644
--- a/gcc/ada/exp_ch11.ads
+++ b/gcc/ada/exp_ch11.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_ch12.adb b/gcc/ada/exp_ch12.adb
index f5d35db..41a71af 100644
--- a/gcc/ada/exp_ch12.adb
+++ b/gcc/ada/exp_ch12.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1997-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1997-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_ch12.ads b/gcc/ada/exp_ch12.ads
index 26050ad..7198264 100644
--- a/gcc/ada/exp_ch12.ads
+++ b/gcc/ada/exp_ch12.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_ch13.adb b/gcc/ada/exp_ch13.adb
index cb1447d..cf56c6b 100644
--- a/gcc/ada/exp_ch13.adb
+++ b/gcc/ada/exp_ch13.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_ch13.ads b/gcc/ada/exp_ch13.ads
index 55fe00c..7a9569c 100644
--- a/gcc/ada/exp_ch13.ads
+++ b/gcc/ada/exp_ch13.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_ch2.adb b/gcc/ada/exp_ch2.adb
index edcb91c..958f429 100644
--- a/gcc/ada/exp_ch2.adb
+++ b/gcc/ada/exp_ch2.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_ch2.ads b/gcc/ada/exp_ch2.ads
index 55dfd01..8bfc1a9 100644
--- a/gcc/ada/exp_ch2.ads
+++ b/gcc/ada/exp_ch2.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_ch3.adb b/gcc/ada/exp_ch3.adb
index d616c5c..fdedf32 100644
--- a/gcc/ada/exp_ch3.adb
+++ b/gcc/ada/exp_ch3.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_ch3.ads b/gcc/ada/exp_ch3.ads
index 64ccdeb..5a4b113 100644
--- a/gcc/ada/exp_ch3.ads
+++ b/gcc/ada/exp_ch3.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_ch4.adb b/gcc/ada/exp_ch4.adb
index 037c8b5..4f83cd4 100644
--- a/gcc/ada/exp_ch4.adb
+++ b/gcc/ada/exp_ch4.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_ch4.ads b/gcc/ada/exp_ch4.ads
index e240380..7bc777e 100644
--- a/gcc/ada/exp_ch4.ads
+++ b/gcc/ada/exp_ch4.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_ch5.adb b/gcc/ada/exp_ch5.adb
index bc61243..2973658 100644
--- a/gcc/ada/exp_ch5.adb
+++ b/gcc/ada/exp_ch5.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_ch5.ads b/gcc/ada/exp_ch5.ads
index 48a6163..9646439 100644
--- a/gcc/ada/exp_ch5.ads
+++ b/gcc/ada/exp_ch5.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_ch6.adb b/gcc/ada/exp_ch6.adb
index 939d3be..ad56cfd 100644
--- a/gcc/ada/exp_ch6.adb
+++ b/gcc/ada/exp_ch6.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_ch6.ads b/gcc/ada/exp_ch6.ads
index f3502b5..12a9ce3 100644
--- a/gcc/ada/exp_ch6.ads
+++ b/gcc/ada/exp_ch6.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_ch7.adb b/gcc/ada/exp_ch7.adb
index a95beec..2ac7310 100644
--- a/gcc/ada/exp_ch7.adb
+++ b/gcc/ada/exp_ch7.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_ch7.ads b/gcc/ada/exp_ch7.ads
index 105aa7e..bcc1213 100644
--- a/gcc/ada/exp_ch7.ads
+++ b/gcc/ada/exp_ch7.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_ch8.adb b/gcc/ada/exp_ch8.adb
index 411e5db..011c1fe 100644
--- a/gcc/ada/exp_ch8.adb
+++ b/gcc/ada/exp_ch8.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_ch8.ads b/gcc/ada/exp_ch8.ads
index a6a00fc..6ad300f 100644
--- a/gcc/ada/exp_ch8.ads
+++ b/gcc/ada/exp_ch8.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_ch9.adb b/gcc/ada/exp_ch9.adb
index f83c233..17d997b 100644
--- a/gcc/ada/exp_ch9.adb
+++ b/gcc/ada/exp_ch9.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_ch9.ads b/gcc/ada/exp_ch9.ads
index 4f43586..b5a344f 100644
--- a/gcc/ada/exp_ch9.ads
+++ b/gcc/ada/exp_ch9.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_code.adb b/gcc/ada/exp_code.adb
index d4ff47f9..6c6cd88 100644
--- a/gcc/ada/exp_code.adb
+++ b/gcc/ada/exp_code.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1996-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1996-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_code.ads b/gcc/ada/exp_code.ads
index 441e9e5..9719818 100644
--- a/gcc/ada/exp_code.ads
+++ b/gcc/ada/exp_code.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1996-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1996-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_dbug.adb b/gcc/ada/exp_dbug.adb
index 32ff9fb..e0f0f4f 100644
--- a/gcc/ada/exp_dbug.adb
+++ b/gcc/ada/exp_dbug.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1996-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1996-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_dbug.ads b/gcc/ada/exp_dbug.ads
index bb0af95..2b892c8 100644
--- a/gcc/ada/exp_dbug.ads
+++ b/gcc/ada/exp_dbug.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1996-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1996-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_disp.adb b/gcc/ada/exp_disp.adb
index 89b47c0..601d463 100644
--- a/gcc/ada/exp_disp.adb
+++ b/gcc/ada/exp_disp.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_disp.ads b/gcc/ada/exp_disp.ads
index c3c4e2f..1bb6161 100644
--- a/gcc/ada/exp_disp.ads
+++ b/gcc/ada/exp_disp.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_dist.adb b/gcc/ada/exp_dist.adb
index f025b56..fcfeba0 100644
--- a/gcc/ada/exp_dist.adb
+++ b/gcc/ada/exp_dist.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_dist.ads b/gcc/ada/exp_dist.ads
index c43df61..16ab8b8 100644
--- a/gcc/ada/exp_dist.ads
+++ b/gcc/ada/exp_dist.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_fixd.adb b/gcc/ada/exp_fixd.adb
index b7a996a..a2b1684 100644
--- a/gcc/ada/exp_fixd.adb
+++ b/gcc/ada/exp_fixd.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_fixd.ads b/gcc/ada/exp_fixd.ads
index 1f03b7d..5e07913 100644
--- a/gcc/ada/exp_fixd.ads
+++ b/gcc/ada/exp_fixd.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_imgv.adb b/gcc/ada/exp_imgv.adb
index 6bcfec6..ec0126a 100644
--- a/gcc/ada/exp_imgv.adb
+++ b/gcc/ada/exp_imgv.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_imgv.ads b/gcc/ada/exp_imgv.ads
index 85d3b93..b63b9c1 100644
--- a/gcc/ada/exp_imgv.ads
+++ b/gcc/ada/exp_imgv.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2000-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2000-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_intr.adb b/gcc/ada/exp_intr.adb
index 95c5f18..57f681a 100644
--- a/gcc/ada/exp_intr.adb
+++ b/gcc/ada/exp_intr.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_intr.ads b/gcc/ada/exp_intr.ads
index 86a3485..699d1c8 100644
--- a/gcc/ada/exp_intr.ads
+++ b/gcc/ada/exp_intr.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_pakd.adb b/gcc/ada/exp_pakd.adb
index 19d158f..628a3e3 100644
--- a/gcc/ada/exp_pakd.adb
+++ b/gcc/ada/exp_pakd.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_pakd.ads b/gcc/ada/exp_pakd.ads
index 40ccbd9..ec4027a 100644
--- a/gcc/ada/exp_pakd.ads
+++ b/gcc/ada/exp_pakd.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_prag.adb b/gcc/ada/exp_prag.adb
index d2807cd..78490dc 100644
--- a/gcc/ada/exp_prag.adb
+++ b/gcc/ada/exp_prag.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_prag.ads b/gcc/ada/exp_prag.ads
index 10ccaf7..759435f 100644
--- a/gcc/ada/exp_prag.ads
+++ b/gcc/ada/exp_prag.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_put_image.adb b/gcc/ada/exp_put_image.adb
index a30f609..c298163 100644
--- a/gcc/ada/exp_put_image.adb
+++ b/gcc/ada/exp_put_image.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_put_image.ads b/gcc/ada/exp_put_image.ads
index 9af4d9e..011cafb 100644
--- a/gcc/ada/exp_put_image.ads
+++ b/gcc/ada/exp_put_image.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_sel.adb b/gcc/ada/exp_sel.adb
index 39ebb91..3c04687 100644
--- a/gcc/ada/exp_sel.adb
+++ b/gcc/ada/exp_sel.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_sel.ads b/gcc/ada/exp_sel.ads
index 5c6408a..47a49e6 100644
--- a/gcc/ada/exp_sel.ads
+++ b/gcc/ada/exp_sel.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_smem.adb b/gcc/ada/exp_smem.adb
index e5f6f2f..59a2e04 100644
--- a/gcc/ada/exp_smem.adb
+++ b/gcc/ada/exp_smem.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1998-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1998-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_smem.ads b/gcc/ada/exp_smem.ads
index 50392ea..0e523fc 100644
--- a/gcc/ada/exp_smem.ads
+++ b/gcc/ada/exp_smem.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1998-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1998-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_spark.adb b/gcc/ada/exp_spark.adb
index f77d5f9..bc4e1b8 100644
--- a/gcc/ada/exp_spark.adb
+++ b/gcc/ada/exp_spark.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_spark.ads b/gcc/ada/exp_spark.ads
index a2a3d35..af2e5da 100644
--- a/gcc/ada/exp_spark.ads
+++ b/gcc/ada/exp_spark.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_strm.adb b/gcc/ada/exp_strm.adb
index f1203ad..43deead 100644
--- a/gcc/ada/exp_strm.adb
+++ b/gcc/ada/exp_strm.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_strm.ads b/gcc/ada/exp_strm.ads
index d56a598..2e5f0aa 100644
--- a/gcc/ada/exp_strm.ads
+++ b/gcc/ada/exp_strm.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_tss.adb b/gcc/ada/exp_tss.adb
index 975fddb..098e001 100644
--- a/gcc/ada/exp_tss.adb
+++ b/gcc/ada/exp_tss.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_tss.ads b/gcc/ada/exp_tss.ads
index 070e7c1..e7f3120 100644
--- a/gcc/ada/exp_tss.ads
+++ b/gcc/ada/exp_tss.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_unst.adb b/gcc/ada/exp_unst.adb
index 7acb065..d3f3144 100644
--- a/gcc/ada/exp_unst.adb
+++ b/gcc/ada/exp_unst.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2014-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2014-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_unst.ads b/gcc/ada/exp_unst.ads
index 0538535..da91bf9 100644
--- a/gcc/ada/exp_unst.ads
+++ b/gcc/ada/exp_unst.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2014-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2014-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_util.adb b/gcc/ada/exp_util.adb
index 1df63ed..31cd47d 100644
--- a/gcc/ada/exp_util.adb
+++ b/gcc/ada/exp_util.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/exp_util.ads b/gcc/ada/exp_util.ads
index d15e4f9..17239c2 100644
--- a/gcc/ada/exp_util.ads
+++ b/gcc/ada/exp_util.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/expander.adb b/gcc/ada/expander.adb
index a26ea91..39b311f 100644
--- a/gcc/ada/expander.adb
+++ b/gcc/ada/expander.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/expander.ads b/gcc/ada/expander.ads
index ef403a66..07e3964 100644
--- a/gcc/ada/expander.ads
+++ b/gcc/ada/expander.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/expect.c b/gcc/ada/expect.c
index add6255..ff02d49 100644
--- a/gcc/ada/expect.c
+++ b/gcc/ada/expect.c
@@ -6,7 +6,7 @@
* *
* C Implementation File *
* *
- * Copyright (C) 2001-2023, AdaCore *
+ * Copyright (C) 2001-2024, AdaCore *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/fe.h b/gcc/ada/fe.h
index ca77f43..6aaa3fd 100644
--- a/gcc/ada/fe.h
+++ b/gcc/ada/fe.h
@@ -6,7 +6,7 @@
* *
* C Header File *
* *
- * Copyright (C) 1992-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 1992-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/final.c b/gcc/ada/final.c
index ce00930..69cee44 100644
--- a/gcc/ada/final.c
+++ b/gcc/ada/final.c
@@ -6,7 +6,7 @@
* *
* C Implementation File *
* *
- * Copyright (C) 1992-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 1992-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/fmap.adb b/gcc/ada/fmap.adb
index 6cc5ca2..cbfde48 100644
--- a/gcc/ada/fmap.adb
+++ b/gcc/ada/fmap.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/fmap.ads b/gcc/ada/fmap.ads
index 3a68027..843ae61 100644
--- a/gcc/ada/fmap.ads
+++ b/gcc/ada/fmap.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/fname-sf.adb b/gcc/ada/fname-sf.adb
index 9a8db19..62c5a52 100644
--- a/gcc/ada/fname-sf.adb
+++ b/gcc/ada/fname-sf.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/fname-sf.ads b/gcc/ada/fname-sf.ads
index c18b6c0..d2a8158 100644
--- a/gcc/ada/fname-sf.ads
+++ b/gcc/ada/fname-sf.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/fname-uf.adb b/gcc/ada/fname-uf.adb
index 7fc8d51..983cda4 100644
--- a/gcc/ada/fname-uf.adb
+++ b/gcc/ada/fname-uf.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/fname-uf.ads b/gcc/ada/fname-uf.ads
index 3791f9f..a57e396 100644
--- a/gcc/ada/fname-uf.ads
+++ b/gcc/ada/fname-uf.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/fname.adb b/gcc/ada/fname.adb
index e51f2f5..165411c 100644
--- a/gcc/ada/fname.adb
+++ b/gcc/ada/fname.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/fname.ads b/gcc/ada/fname.ads
index 57445f3..9964feb 100644
--- a/gcc/ada/fname.ads
+++ b/gcc/ada/fname.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/freeze.adb b/gcc/ada/freeze.adb
index 468d6ee..d032b75 100644
--- a/gcc/ada/freeze.adb
+++ b/gcc/ada/freeze.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/freeze.ads b/gcc/ada/freeze.ads
index f59fe85..fc0b767 100644
--- a/gcc/ada/freeze.ads
+++ b/gcc/ada/freeze.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/frontend.adb b/gcc/ada/frontend.adb
index eb9378d..bd0f0c4 100644
--- a/gcc/ada/frontend.adb
+++ b/gcc/ada/frontend.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/frontend.ads b/gcc/ada/frontend.ads
index 2273d49..7691a37 100644
--- a/gcc/ada/frontend.ads
+++ b/gcc/ada/frontend.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/gcc-interface/Make-lang.in b/gcc/ada/gcc-interface/Make-lang.in
index 2cf0c6d..f6404c0 100644
--- a/gcc/ada/gcc-interface/Make-lang.in
+++ b/gcc/ada/gcc-interface/Make-lang.in
@@ -1,5 +1,5 @@
# Top level -*- makefile -*- fragment for GNU Ada (GNAT).
-# Copyright (C) 2009-2023 Free Software Foundation, Inc.
+# Copyright (C) 2009-2024 Free Software Foundation, Inc.
#This file is part of GCC.
diff --git a/gcc/ada/gcc-interface/Makefile.in b/gcc/ada/gcc-interface/Makefile.in
index ad7cf50..0666fc0 100644
--- a/gcc/ada/gcc-interface/Makefile.in
+++ b/gcc/ada/gcc-interface/Makefile.in
@@ -1,5 +1,5 @@
# Makefile for GNU Ada Compiler (GNAT).
-# Copyright (C) 1994-2023 Free Software Foundation, Inc.
+# Copyright (C) 1994-2024 Free Software Foundation, Inc.
#This file is part of GCC.
diff --git a/gcc/ada/gcc-interface/ada-builtin-types.def b/gcc/ada/gcc-interface/ada-builtin-types.def
index b8925f5..053681c 100644
--- a/gcc/ada/gcc-interface/ada-builtin-types.def
+++ b/gcc/ada/gcc-interface/ada-builtin-types.def
@@ -1,7 +1,7 @@
/* This file contains the type definitions for the builtins exclusively
used in the GNU Ada compiler.
- Copyright (C) 2019-2023 Free Software Foundation, Inc.
+ Copyright (C) 2019-2024 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/ada/gcc-interface/ada-builtins.def b/gcc/ada/gcc-interface/ada-builtins.def
index cf3d6a1..cee75be 100644
--- a/gcc/ada/gcc-interface/ada-builtins.def
+++ b/gcc/ada/gcc-interface/ada-builtins.def
@@ -1,7 +1,7 @@
/* This file contains the definitions for the builtins exclusively used
in the GNU Ada compiler.
- Copyright (C) 2019-2023 Free Software Foundation, Inc.
+ Copyright (C) 2019-2024 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/ada/gcc-interface/ada-tree.def b/gcc/ada/gcc-interface/ada-tree.def
index ff88e54..fac2d4f 100644
--- a/gcc/ada/gcc-interface/ada-tree.def
+++ b/gcc/ada/gcc-interface/ada-tree.def
@@ -6,7 +6,7 @@
* *
* Specification *
* *
- * Copyright (C) 1992-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 1992-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/gcc-interface/ada-tree.h b/gcc/ada/gcc-interface/ada-tree.h
index d0acf1d..d02a557 100644
--- a/gcc/ada/gcc-interface/ada-tree.h
+++ b/gcc/ada/gcc-interface/ada-tree.h
@@ -6,7 +6,7 @@
* *
* C Header File *
* *
- * Copyright (C) 1992-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 1992-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/gcc-interface/ada.h b/gcc/ada/gcc-interface/ada.h
index 45b5bd9..a1e704f 100644
--- a/gcc/ada/gcc-interface/ada.h
+++ b/gcc/ada/gcc-interface/ada.h
@@ -6,7 +6,7 @@
* *
* C Header File *
* *
- * Copyright (C) 1992-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 1992-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/gcc-interface/config-lang.in b/gcc/ada/gcc-interface/config-lang.in
index 85c1f42..4a6c23c 100644
--- a/gcc/ada/gcc-interface/config-lang.in
+++ b/gcc/ada/gcc-interface/config-lang.in
@@ -1,5 +1,5 @@
# Top level configure fragment for GNU Ada (GNAT).
-# Copyright (C) 1994-2023 Free Software Foundation, Inc.
+# Copyright (C) 1994-2024 Free Software Foundation, Inc.
#This file is part of GCC.
diff --git a/gcc/ada/gcc-interface/cuintp.cc b/gcc/ada/gcc-interface/cuintp.cc
index 117d417..cdf6c01 100644
--- a/gcc/ada/gcc-interface/cuintp.cc
+++ b/gcc/ada/gcc-interface/cuintp.cc
@@ -6,7 +6,7 @@
* *
* C Implementation File *
* *
- * Copyright (C) 1992-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 1992-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/gcc-interface/decl.cc b/gcc/ada/gcc-interface/decl.cc
index 93cfcb7..ca174bf 100644
--- a/gcc/ada/gcc-interface/decl.cc
+++ b/gcc/ada/gcc-interface/decl.cc
@@ -6,7 +6,7 @@
* *
* C Implementation File *
* *
- * Copyright (C) 1992-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 1992-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/gcc-interface/gadaint.h b/gcc/ada/gcc-interface/gadaint.h
index 5dccab6..98b4ac1 100644
--- a/gcc/ada/gcc-interface/gadaint.h
+++ b/gcc/ada/gcc-interface/gadaint.h
@@ -6,7 +6,7 @@
* *
* C Header File *
* *
- * Copyright (C) 2010-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 2010-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/gcc-interface/gigi.h b/gcc/ada/gcc-interface/gigi.h
index c1bc237..f3205a8 100644
--- a/gcc/ada/gcc-interface/gigi.h
+++ b/gcc/ada/gcc-interface/gigi.h
@@ -6,7 +6,7 @@
* *
* C Header File *
* *
- * Copyright (C) 1992-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 1992-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/gcc-interface/lang-specs.h b/gcc/ada/gcc-interface/lang-specs.h
index 92d311a..22e172b 100644
--- a/gcc/ada/gcc-interface/lang-specs.h
+++ b/gcc/ada/gcc-interface/lang-specs.h
@@ -6,7 +6,7 @@
* *
* C Header File *
* *
- * Copyright (C) 1992-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 1992-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/gcc-interface/lang.opt b/gcc/ada/gcc-interface/lang.opt
index 248bb4c..81d3017 100644
--- a/gcc/ada/gcc-interface/lang.opt
+++ b/gcc/ada/gcc-interface/lang.opt
@@ -1,5 +1,5 @@
; Options for the Ada front end.
-; Copyright (C) 2003-2023 Free Software Foundation, Inc.
+; Copyright (C) 2003-2024 Free Software Foundation, Inc.
;
; This file is part of GCC.
;
diff --git a/gcc/ada/gcc-interface/misc.cc b/gcc/ada/gcc-interface/misc.cc
index 01e8267..b703f00 100644
--- a/gcc/ada/gcc-interface/misc.cc
+++ b/gcc/ada/gcc-interface/misc.cc
@@ -6,7 +6,7 @@
* *
* C Implementation File *
* *
- * Copyright (C) 1992-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 1992-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/gcc-interface/system.ads b/gcc/ada/gcc-interface/system.ads
index 5fc8e86..e9524a5 100644
--- a/gcc/ada/gcc-interface/system.ads
+++ b/gcc/ada/gcc-interface/system.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (Compiler Version) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/gcc-interface/targtyps.cc b/gcc/ada/gcc-interface/targtyps.cc
index c3f91c4..4127a98 100644
--- a/gcc/ada/gcc-interface/targtyps.cc
+++ b/gcc/ada/gcc-interface/targtyps.cc
@@ -6,7 +6,7 @@
* *
* C Implementation File *
* *
- * Copyright (C) 1992-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 1992-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/gcc-interface/trans.cc b/gcc/ada/gcc-interface/trans.cc
index f5ba916..8c7ffbf 100644
--- a/gcc/ada/gcc-interface/trans.cc
+++ b/gcc/ada/gcc-interface/trans.cc
@@ -6,7 +6,7 @@
* *
* C Implementation File *
* *
- * Copyright (C) 1992-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 1992-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/gcc-interface/utils.cc b/gcc/ada/gcc-interface/utils.cc
index b3aae5b..b628481 100644
--- a/gcc/ada/gcc-interface/utils.cc
+++ b/gcc/ada/gcc-interface/utils.cc
@@ -6,7 +6,7 @@
* *
* C Implementation File *
* *
- * Copyright (C) 1992-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 1992-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/gcc-interface/utils2.cc b/gcc/ada/gcc-interface/utils2.cc
index df11eef..a953b07 100644
--- a/gcc/ada/gcc-interface/utils2.cc
+++ b/gcc/ada/gcc-interface/utils2.cc
@@ -6,7 +6,7 @@
* *
* C Implementation File *
* *
- * Copyright (C) 1992-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 1992-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/gen_il-fields.ads b/gcc/ada/gen_il-fields.ads
index 5cc4b00..f1aeef2 100644
--- a/gcc/ada/gen_il-fields.ads
+++ b/gcc/ada/gen_il-fields.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/gen_il-gen-gen_entities.adb b/gcc/ada/gen_il-gen-gen_entities.adb
index d7d71b4..5f9d329 100644
--- a/gcc/ada/gen_il-gen-gen_entities.adb
+++ b/gcc/ada/gen_il-gen-gen_entities.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/gen_il-gen-gen_nodes.adb b/gcc/ada/gen_il-gen-gen_nodes.adb
index 064d25f..72280025 100644
--- a/gcc/ada/gen_il-gen-gen_nodes.adb
+++ b/gcc/ada/gen_il-gen-gen_nodes.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/gen_il-gen.adb b/gcc/ada/gen_il-gen.adb
index 1cee17c..b4e10b9 100644
--- a/gcc/ada/gen_il-gen.adb
+++ b/gcc/ada/gen_il-gen.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/gen_il-gen.ads b/gcc/ada/gen_il-gen.ads
index d7efffc..130a803 100644
--- a/gcc/ada/gen_il-gen.ads
+++ b/gcc/ada/gen_il-gen.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/gen_il-internals.adb b/gcc/ada/gen_il-internals.adb
index 4aef64b..a0f55d3 100644
--- a/gcc/ada/gen_il-internals.adb
+++ b/gcc/ada/gen_il-internals.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/gen_il-internals.ads b/gcc/ada/gen_il-internals.ads
index deda5d5..31e81c1 100644
--- a/gcc/ada/gen_il-internals.ads
+++ b/gcc/ada/gen_il-internals.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/gen_il-main.adb b/gcc/ada/gen_il-main.adb
index 96760aa..3886c17 100644
--- a/gcc/ada/gen_il-main.adb
+++ b/gcc/ada/gen_il-main.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/gen_il-types.ads b/gcc/ada/gen_il-types.ads
index be389eb..48de818 100644
--- a/gcc/ada/gen_il-types.ads
+++ b/gcc/ada/gen_il-types.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/gen_il.adb b/gcc/ada/gen_il.adb
index 4fed1d1..4ff58dd 100644
--- a/gcc/ada/gen_il.adb
+++ b/gcc/ada/gen_il.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/gen_il.ads b/gcc/ada/gen_il.ads
index 8de60b2..621d6f8 100644
--- a/gcc/ada/gen_il.ads
+++ b/gcc/ada/gen_il.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/get_scos.adb b/gcc/ada/get_scos.adb
index c109fa4..db736aa 100644
--- a/gcc/ada/get_scos.adb
+++ b/gcc/ada/get_scos.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/get_scos.ads b/gcc/ada/get_scos.ads
index f7c3073..6152989 100644
--- a/gcc/ada/get_scos.ads
+++ b/gcc/ada/get_scos.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/get_targ.adb b/gcc/ada/get_targ.adb
index 3422899..ea7b55a 100644
--- a/gcc/ada/get_targ.adb
+++ b/gcc/ada/get_targ.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/get_targ.ads b/gcc/ada/get_targ.ads
index 2520659..8bdf606 100644
--- a/gcc/ada/get_targ.ads
+++ b/gcc/ada/get_targ.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/ghost.adb b/gcc/ada/ghost.adb
index ceb5d0a..14951a0 100644
--- a/gcc/ada/ghost.adb
+++ b/gcc/ada/ghost.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2014-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2014-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/ghost.ads b/gcc/ada/ghost.ads
index 663e70c..ff8e1b3 100644
--- a/gcc/ada/ghost.ads
+++ b/gcc/ada/ghost.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2014-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2014-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/gnat-style.texi b/gcc/ada/gnat-style.texi
index 75dcec0..29b4c88 100644
--- a/gcc/ada/gnat-style.texi
+++ b/gcc/ada/gnat-style.texi
@@ -23,7 +23,7 @@ GNAT Coding Style: A Guide for GNAT Developers , Dec 21, 2023
AdaCore
-Copyright @copyright{} 2008-2023, Free Software Foundation
+Copyright @copyright{} 2008-2024, Free Software Foundation
@end quotation
@end copying
diff --git a/gcc/ada/gnat1drv.adb b/gcc/ada/gnat1drv.adb
index 78c4968..55b5d56 100644
--- a/gcc/ada/gnat1drv.adb
+++ b/gcc/ada/gnat1drv.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/gnat1drv.ads b/gcc/ada/gnat1drv.ads
index 22fe56c..c73b081 100644
--- a/gcc/ada/gnat1drv.ads
+++ b/gcc/ada/gnat1drv.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/gnat_cuda.adb b/gcc/ada/gnat_cuda.adb
index dd81803..af47b72 100644
--- a/gcc/ada/gnat_cuda.adb
+++ b/gcc/ada/gnat_cuda.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2010-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2010-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/gnat_cuda.ads b/gcc/ada/gnat_cuda.ads
index 8665fd9..20d6960 100644
--- a/gcc/ada/gnat_cuda.ads
+++ b/gcc/ada/gnat_cuda.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2010-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2010-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/gnatbind.adb b/gcc/ada/gnatbind.adb
index 9371ecd..1333203 100644
--- a/gcc/ada/gnatbind.adb
+++ b/gcc/ada/gnatbind.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/gnatbind.ads b/gcc/ada/gnatbind.ads
index d159ce7..eed94c4 100644
--- a/gcc/ada/gnatbind.ads
+++ b/gcc/ada/gnatbind.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/gnatchop.adb b/gcc/ada/gnatchop.adb
index 4106781..6bb91b1 100644
--- a/gcc/ada/gnatchop.adb
+++ b/gcc/ada/gnatchop.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1998-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1998-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/gnatclean.adb b/gcc/ada/gnatclean.adb
index bb83829..2170937 100644
--- a/gcc/ada/gnatclean.adb
+++ b/gcc/ada/gnatclean.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2003-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2003-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/gnatcmd.adb b/gcc/ada/gnatcmd.adb
index 6065d66..c1b817b 100644
--- a/gcc/ada/gnatcmd.adb
+++ b/gcc/ada/gnatcmd.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1996-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1996-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/gnatcmd.ads b/gcc/ada/gnatcmd.ads
index a3d399e4..5cdf731 100644
--- a/gcc/ada/gnatcmd.ads
+++ b/gcc/ada/gnatcmd.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1996-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1996-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/gnatdll.adb b/gcc/ada/gnatdll.adb
index dcd65af..b6329a8 100644
--- a/gcc/ada/gnatdll.adb
+++ b/gcc/ada/gnatdll.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1997-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1997-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/gnatkr.adb b/gcc/ada/gnatkr.adb
index 4ea4feb..63e341d 100644
--- a/gcc/ada/gnatkr.adb
+++ b/gcc/ada/gnatkr.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/gnatkr.ads b/gcc/ada/gnatkr.ads
index b9ff616..9b3cd85 100644
--- a/gcc/ada/gnatkr.ads
+++ b/gcc/ada/gnatkr.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/gnatlink.adb b/gcc/ada/gnatlink.adb
index 4d92c6b..d00fd9e 100644
--- a/gcc/ada/gnatlink.adb
+++ b/gcc/ada/gnatlink.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1996-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1996-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/gnatlink.ads b/gcc/ada/gnatlink.ads
index d1788c3..c8a1f3f 100644
--- a/gcc/ada/gnatlink.ads
+++ b/gcc/ada/gnatlink.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1996-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1996-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/gnatls.adb b/gcc/ada/gnatls.adb
index a9e88af..2c26001 100644
--- a/gcc/ada/gnatls.adb
+++ b/gcc/ada/gnatls.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/gnatls.ads b/gcc/ada/gnatls.ads
index 2baae50..0068f3d 100644
--- a/gcc/ada/gnatls.ads
+++ b/gcc/ada/gnatls.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/gnatmake.adb b/gcc/ada/gnatmake.adb
index e1dfcf7..3aea033 100644
--- a/gcc/ada/gnatmake.adb
+++ b/gcc/ada/gnatmake.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/gnatmake.ads b/gcc/ada/gnatmake.ads
index 89b767e..66581b4 100644
--- a/gcc/ada/gnatmake.ads
+++ b/gcc/ada/gnatmake.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/gnatname.adb b/gcc/ada/gnatname.adb
index e77998d..b39a38c 100644
--- a/gcc/ada/gnatname.adb
+++ b/gcc/ada/gnatname.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/gnatname.ads b/gcc/ada/gnatname.ads
index 121b965..df96f51 100644
--- a/gcc/ada/gnatname.ads
+++ b/gcc/ada/gnatname.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/gnatprep.adb b/gcc/ada/gnatprep.adb
index 1279250..49eb8b0e 100644
--- a/gcc/ada/gnatprep.adb
+++ b/gcc/ada/gnatprep.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1996-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1996-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/gnatprep.ads b/gcc/ada/gnatprep.ads
index 2989574..fdbd204 100644
--- a/gcc/ada/gnatprep.ads
+++ b/gcc/ada/gnatprep.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/gnatvsn.adb b/gcc/ada/gnatvsn.adb
index 6d55165..185bb65 100644
--- a/gcc/ada/gnatvsn.adb
+++ b/gcc/ada/gnatvsn.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/gnatvsn.ads b/gcc/ada/gnatvsn.ads
index a0e61e1..2923836 100644
--- a/gcc/ada/gnatvsn.ads
+++ b/gcc/ada/gnatvsn.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -39,7 +39,7 @@ package Gnatvsn is
-- Note: Makefile.in uses the library version string to construct the
-- soname value.
- Current_Year : constant String := "2023";
+ Current_Year : constant String := "2024";
-- Used in printing copyright messages
Verbose_Library_Version : constant String := "GNAT Lib v" & Library_Version;
diff --git a/gcc/ada/gprep.adb b/gcc/ada/gprep.adb
index 5b58955..a95cd63 100644
--- a/gcc/ada/gprep.adb
+++ b/gcc/ada/gprep.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/gprep.ads b/gcc/ada/gprep.ads
index 79b5212..8d10e87 100644
--- a/gcc/ada/gprep.ads
+++ b/gcc/ada/gprep.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/gsocket.h b/gcc/ada/gsocket.h
index 2c723c5..a23fa14 100644
--- a/gcc/ada/gsocket.h
+++ b/gcc/ada/gsocket.h
@@ -6,7 +6,7 @@
* *
* C Header File *
* *
- * Copyright (C) 2004-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 2004-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/hostparm.ads b/gcc/ada/hostparm.ads
index bf5b1f4..11eef35 100644
--- a/gcc/ada/hostparm.ads
+++ b/gcc/ada/hostparm.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/impunit.adb b/gcc/ada/impunit.adb
index 5a9ad11..915ec0f 100644
--- a/gcc/ada/impunit.adb
+++ b/gcc/ada/impunit.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2000-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2000-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/impunit.ads b/gcc/ada/impunit.ads
index 5efbb93..af9f924 100644
--- a/gcc/ada/impunit.ads
+++ b/gcc/ada/impunit.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2000-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2000-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/indepsw-aix.adb b/gcc/ada/indepsw-aix.adb
index ac96b88..9126546 100644
--- a/gcc/ada/indepsw-aix.adb
+++ b/gcc/ada/indepsw-aix.adb
@@ -7,7 +7,7 @@
-- B o d y --
-- (AIX version) --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/indepsw-darwin.adb b/gcc/ada/indepsw-darwin.adb
index 1cdb169..a0de8ff 100644
--- a/gcc/ada/indepsw-darwin.adb
+++ b/gcc/ada/indepsw-darwin.adb
@@ -7,7 +7,7 @@
-- B o d y --
-- (Darwin version) --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/indepsw-gnu.adb b/gcc/ada/indepsw-gnu.adb
index 3bf69a5..f692fce 100644
--- a/gcc/ada/indepsw-gnu.adb
+++ b/gcc/ada/indepsw-gnu.adb
@@ -7,7 +7,7 @@
-- B o d y --
-- (GNU version) --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/indepsw.adb b/gcc/ada/indepsw.adb
index 70ba22a..9b56dea 100644
--- a/gcc/ada/indepsw.adb
+++ b/gcc/ada/indepsw.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/indepsw.ads b/gcc/ada/indepsw.ads
index 53896f2..d32960a 100644
--- a/gcc/ada/indepsw.ads
+++ b/gcc/ada/indepsw.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/init.c b/gcc/ada/init.c
index 53ca142..7cf7747 100644
--- a/gcc/ada/init.c
+++ b/gcc/ada/init.c
@@ -6,7 +6,7 @@
* *
* C Implementation File *
* *
- * Copyright (C) 1992-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 1992-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/initialize.c b/gcc/ada/initialize.c
index b65ea60..97e071e 100644
--- a/gcc/ada/initialize.c
+++ b/gcc/ada/initialize.c
@@ -6,7 +6,7 @@
* *
* C Implementation File *
* *
- * Copyright (C) 1992-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 1992-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/inline.adb b/gcc/ada/inline.adb
index dffd629..f23100d 100644
--- a/gcc/ada/inline.adb
+++ b/gcc/ada/inline.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/inline.ads b/gcc/ada/inline.ads
index 65c0968..3df0a01 100644
--- a/gcc/ada/inline.ads
+++ b/gcc/ada/inline.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/itypes.adb b/gcc/ada/itypes.adb
index 826ce45..06cd805 100644
--- a/gcc/ada/itypes.adb
+++ b/gcc/ada/itypes.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/itypes.ads b/gcc/ada/itypes.ads
index 2a4da5b..920538f 100644
--- a/gcc/ada/itypes.ads
+++ b/gcc/ada/itypes.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/krunch.adb b/gcc/ada/krunch.adb
index ea405e5..97b655d 100644
--- a/gcc/ada/krunch.adb
+++ b/gcc/ada/krunch.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/krunch.ads b/gcc/ada/krunch.ads
index 5e8f214..625f6e3 100644
--- a/gcc/ada/krunch.ads
+++ b/gcc/ada/krunch.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/layout.adb b/gcc/ada/layout.adb
index ce56ef1..e43e969 100644
--- a/gcc/ada/layout.adb
+++ b/gcc/ada/layout.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/layout.ads b/gcc/ada/layout.ads
index a8de294..e924d38 100644
--- a/gcc/ada/layout.ads
+++ b/gcc/ada/layout.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2000-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2000-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/lib-list.adb b/gcc/ada/lib-list.adb
index 0564234..ecc2925 100644
--- a/gcc/ada/lib-list.adb
+++ b/gcc/ada/lib-list.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/lib-load.adb b/gcc/ada/lib-load.adb
index 72196b4..59adabc 100644
--- a/gcc/ada/lib-load.adb
+++ b/gcc/ada/lib-load.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/lib-load.ads b/gcc/ada/lib-load.ads
index a15bc9a..a1b1780 100644
--- a/gcc/ada/lib-load.ads
+++ b/gcc/ada/lib-load.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/lib-sort.adb b/gcc/ada/lib-sort.adb
index cfc43c3..97433c6 100644
--- a/gcc/ada/lib-sort.adb
+++ b/gcc/ada/lib-sort.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/lib-util.adb b/gcc/ada/lib-util.adb
index ae22664..3f0b463 100644
--- a/gcc/ada/lib-util.adb
+++ b/gcc/ada/lib-util.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/lib-util.ads b/gcc/ada/lib-util.ads
index f0000bb..685701e 100644
--- a/gcc/ada/lib-util.ads
+++ b/gcc/ada/lib-util.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/lib-writ.adb b/gcc/ada/lib-writ.adb
index 23b6266..697b2f2 100644
--- a/gcc/ada/lib-writ.adb
+++ b/gcc/ada/lib-writ.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/lib-writ.ads b/gcc/ada/lib-writ.ads
index 91dd339..6bc6e96 100644
--- a/gcc/ada/lib-writ.ads
+++ b/gcc/ada/lib-writ.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/lib-xref-spark_specific.adb b/gcc/ada/lib-xref-spark_specific.adb
index d2fc82c..4d8a6d4 100644
--- a/gcc/ada/lib-xref-spark_specific.adb
+++ b/gcc/ada/lib-xref-spark_specific.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/lib-xref.adb b/gcc/ada/lib-xref.adb
index 340f5ca..cecbac1 100644
--- a/gcc/ada/lib-xref.adb
+++ b/gcc/ada/lib-xref.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1998-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1998-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/lib-xref.ads b/gcc/ada/lib-xref.ads
index d1de90f..093d9cb 100644
--- a/gcc/ada/lib-xref.ads
+++ b/gcc/ada/lib-xref.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1998-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1998-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/lib.adb b/gcc/ada/lib.adb
index ca7e096..ebd6bc9 100644
--- a/gcc/ada/lib.adb
+++ b/gcc/ada/lib.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/lib.ads b/gcc/ada/lib.ads
index 9ba49a6..ee06cde 100644
--- a/gcc/ada/lib.ads
+++ b/gcc/ada/lib.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/a-astaco.adb b/gcc/ada/libgnarl/a-astaco.adb
index 72aeb3a..ee7747f 100644
--- a/gcc/ada/libgnarl/a-astaco.adb
+++ b/gcc/ada/libgnarl/a-astaco.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/a-dispat.adb b/gcc/ada/libgnarl/a-dispat.adb
index 578db5b70..6afd15c 100644
--- a/gcc/ada/libgnarl/a-dispat.adb
+++ b/gcc/ada/libgnarl/a-dispat.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2015-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2015-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/a-dynpri.adb b/gcc/ada/libgnarl/a-dynpri.adb
index d2255cc..bfee0ee 100644
--- a/gcc/ada/libgnarl/a-dynpri.adb
+++ b/gcc/ada/libgnarl/a-dynpri.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/a-etgrbu.ads b/gcc/ada/libgnarl/a-etgrbu.ads
index f571021..7d31121 100644
--- a/gcc/ada/libgnarl/a-etgrbu.ads
+++ b/gcc/ada/libgnarl/a-etgrbu.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2015-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2015-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnarl/a-exetim__darwin.adb b/gcc/ada/libgnarl/a-exetim__darwin.adb
index ccd2f23..3198b06 100644
--- a/gcc/ada/libgnarl/a-exetim__darwin.adb
+++ b/gcc/ada/libgnarl/a-exetim__darwin.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2007-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2007-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/a-exetim__default.ads b/gcc/ada/libgnarl/a-exetim__default.ads
index 91bfb6196..398ccd2 100644
--- a/gcc/ada/libgnarl/a-exetim__default.ads
+++ b/gcc/ada/libgnarl/a-exetim__default.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2007-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2007-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnarl/a-exetim__mingw.adb b/gcc/ada/libgnarl/a-exetim__mingw.adb
index b24eb6b..ecf2bf3 100644
--- a/gcc/ada/libgnarl/a-exetim__mingw.adb
+++ b/gcc/ada/libgnarl/a-exetim__mingw.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2007-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2007-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/a-exetim__mingw.ads b/gcc/ada/libgnarl/a-exetim__mingw.ads
index 6b68daa..c9368a0 100644
--- a/gcc/ada/libgnarl/a-exetim__mingw.ads
+++ b/gcc/ada/libgnarl/a-exetim__mingw.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnarl/a-exetim__posix.adb b/gcc/ada/libgnarl/a-exetim__posix.adb
index 461a084..05c55c5 100644
--- a/gcc/ada/libgnarl/a-exetim__posix.adb
+++ b/gcc/ada/libgnarl/a-exetim__posix.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2007-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2007-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/a-interr.adb b/gcc/ada/libgnarl/a-interr.adb
index fb506c6..6fc17b6 100644
--- a/gcc/ada/libgnarl/a-interr.adb
+++ b/gcc/ada/libgnarl/a-interr.adb
@@ -7,7 +7,7 @@
-- B o d y --
-- --
-- Copyright (C) 1991-2017, Florida State University --
--- Copyright (C) 1995-2023, AdaCore --
+-- Copyright (C) 1995-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/a-interr.ads b/gcc/ada/libgnarl/a-interr.ads
index ea64944..7bce4e3 100644
--- a/gcc/ada/libgnarl/a-interr.ads
+++ b/gcc/ada/libgnarl/a-interr.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnarl/a-intnam.ads b/gcc/ada/libgnarl/a-intnam.ads
index 48971bb..9701bce 100644
--- a/gcc/ada/libgnarl/a-intnam.ads
+++ b/gcc/ada/libgnarl/a-intnam.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1995-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1995-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/a-intnam__aix.ads b/gcc/ada/libgnarl/a-intnam__aix.ads
index e91017a..32f3846 100644
--- a/gcc/ada/libgnarl/a-intnam__aix.ads
+++ b/gcc/ada/libgnarl/a-intnam__aix.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1991-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1991-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/a-intnam__darwin.ads b/gcc/ada/libgnarl/a-intnam__darwin.ads
index 98cadfd..04e57eb 100644
--- a/gcc/ada/libgnarl/a-intnam__darwin.ads
+++ b/gcc/ada/libgnarl/a-intnam__darwin.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1991-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1991-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/a-intnam__dragonfly.ads b/gcc/ada/libgnarl/a-intnam__dragonfly.ads
index 3a40df4..21c8b9a 100644
--- a/gcc/ada/libgnarl/a-intnam__dragonfly.ads
+++ b/gcc/ada/libgnarl/a-intnam__dragonfly.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1991-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1991-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/a-intnam__dummy.ads b/gcc/ada/libgnarl/a-intnam__dummy.ads
index 8337ed7..9673a15 100644
--- a/gcc/ada/libgnarl/a-intnam__dummy.ads
+++ b/gcc/ada/libgnarl/a-intnam__dummy.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (No Tasking Version) --
-- --
--- Copyright (C) 1991-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1991-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/a-intnam__freebsd.ads b/gcc/ada/libgnarl/a-intnam__freebsd.ads
index a6d20a1..3a2a1e9 100644
--- a/gcc/ada/libgnarl/a-intnam__freebsd.ads
+++ b/gcc/ada/libgnarl/a-intnam__freebsd.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1991-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1991-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/a-intnam__hpux.ads b/gcc/ada/libgnarl/a-intnam__hpux.ads
index aff46235..a405032 100644
--- a/gcc/ada/libgnarl/a-intnam__hpux.ads
+++ b/gcc/ada/libgnarl/a-intnam__hpux.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1991-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1991-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/a-intnam__linux.ads b/gcc/ada/libgnarl/a-intnam__linux.ads
index 694c495..366e75c 100644
--- a/gcc/ada/libgnarl/a-intnam__linux.ads
+++ b/gcc/ada/libgnarl/a-intnam__linux.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1991-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1991-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/a-intnam__lynxos.ads b/gcc/ada/libgnarl/a-intnam__lynxos.ads
index d4047c6..5ebce41 100644
--- a/gcc/ada/libgnarl/a-intnam__lynxos.ads
+++ b/gcc/ada/libgnarl/a-intnam__lynxos.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1991-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1991-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/a-intnam__mingw.ads b/gcc/ada/libgnarl/a-intnam__mingw.ads
index d1ee4ad..977b9a4 100644
--- a/gcc/ada/libgnarl/a-intnam__mingw.ads
+++ b/gcc/ada/libgnarl/a-intnam__mingw.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1997-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1997-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/a-intnam__qnx.ads b/gcc/ada/libgnarl/a-intnam__qnx.ads
index ca7b801..32d015b 100644
--- a/gcc/ada/libgnarl/a-intnam__qnx.ads
+++ b/gcc/ada/libgnarl/a-intnam__qnx.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1991-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1991-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/a-intnam__rtems.ads b/gcc/ada/libgnarl/a-intnam__rtems.ads
index 34fc9ad..aaaa442 100644
--- a/gcc/ada/libgnarl/a-intnam__rtems.ads
+++ b/gcc/ada/libgnarl/a-intnam__rtems.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1991-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1991-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/a-intnam__solaris.ads b/gcc/ada/libgnarl/a-intnam__solaris.ads
index d6f2178..60a3215 100644
--- a/gcc/ada/libgnarl/a-intnam__solaris.ads
+++ b/gcc/ada/libgnarl/a-intnam__solaris.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1991-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1991-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/a-intnam__vxworks.ads b/gcc/ada/libgnarl/a-intnam__vxworks.ads
index 5e07caa..f850258 100644
--- a/gcc/ada/libgnarl/a-intnam__vxworks.ads
+++ b/gcc/ada/libgnarl/a-intnam__vxworks.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1998-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1998-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/a-reatim.adb b/gcc/ada/libgnarl/a-reatim.adb
index 24a7731..7bbafc4 100644
--- a/gcc/ada/libgnarl/a-reatim.adb
+++ b/gcc/ada/libgnarl/a-reatim.adb
@@ -7,7 +7,7 @@
-- B o d y --
-- --
-- Copyright (C) 1991-2017, Florida State University --
--- Copyright (C) 1995-2023, AdaCore --
+-- Copyright (C) 1995-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/a-reatim.ads b/gcc/ada/libgnarl/a-reatim.ads
index a616d57..7f90820 100644
--- a/gcc/ada/libgnarl/a-reatim.ads
+++ b/gcc/ada/libgnarl/a-reatim.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnarl/a-retide.adb b/gcc/ada/libgnarl/a-retide.adb
index 5a45aaa..80e3d31 100644
--- a/gcc/ada/libgnarl/a-retide.adb
+++ b/gcc/ada/libgnarl/a-retide.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/a-retide.ads b/gcc/ada/libgnarl/a-retide.ads
index c73e826..e3626dc 100644
--- a/gcc/ada/libgnarl/a-retide.ads
+++ b/gcc/ada/libgnarl/a-retide.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/a-rttiev.adb b/gcc/ada/libgnarl/a-rttiev.adb
index ddc74a1..93bba77 100644
--- a/gcc/ada/libgnarl/a-rttiev.adb
+++ b/gcc/ada/libgnarl/a-rttiev.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2005-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2005-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/a-rttiev.ads b/gcc/ada/libgnarl/a-rttiev.ads
index 3fa7d60..24bbd92 100644
--- a/gcc/ada/libgnarl/a-rttiev.ads
+++ b/gcc/ada/libgnarl/a-rttiev.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2005-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2005-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnarl/a-synbar.adb b/gcc/ada/libgnarl/a-synbar.adb
index 0c35fb3..a13a219 100644
--- a/gcc/ada/libgnarl/a-synbar.adb
+++ b/gcc/ada/libgnarl/a-synbar.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnarl/a-synbar.ads b/gcc/ada/libgnarl/a-synbar.ads
index ba7a2f3..a2b2937 100644
--- a/gcc/ada/libgnarl/a-synbar.ads
+++ b/gcc/ada/libgnarl/a-synbar.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnarl/a-synbar__posix.adb b/gcc/ada/libgnarl/a-synbar__posix.adb
index bfe5aeb..337773e 100644
--- a/gcc/ada/libgnarl/a-synbar__posix.adb
+++ b/gcc/ada/libgnarl/a-synbar__posix.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnarl/a-synbar__posix.ads b/gcc/ada/libgnarl/a-synbar__posix.ads
index 5d89d65..6c4a194 100644
--- a/gcc/ada/libgnarl/a-synbar__posix.ads
+++ b/gcc/ada/libgnarl/a-synbar__posix.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnarl/a-sytaco.adb b/gcc/ada/libgnarl/a-sytaco.adb
index c94a0ab..7947abc 100644
--- a/gcc/ada/libgnarl/a-sytaco.adb
+++ b/gcc/ada/libgnarl/a-sytaco.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/a-sytaco.ads b/gcc/ada/libgnarl/a-sytaco.ads
index c95c9ac..19c1875 100644
--- a/gcc/ada/libgnarl/a-sytaco.ads
+++ b/gcc/ada/libgnarl/a-sytaco.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnarl/a-tasatt.adb b/gcc/ada/libgnarl/a-tasatt.adb
index 6111f29..177a4fc 100644
--- a/gcc/ada/libgnarl/a-tasatt.adb
+++ b/gcc/ada/libgnarl/a-tasatt.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2014-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2014-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/a-tasatt.ads b/gcc/ada/libgnarl/a-tasatt.ads
index 9207f60..296ed16 100644
--- a/gcc/ada/libgnarl/a-tasatt.ads
+++ b/gcc/ada/libgnarl/a-tasatt.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2014-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2014-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnarl/a-taside.adb b/gcc/ada/libgnarl/a-taside.adb
index e81059b..7a70ab9 100644
--- a/gcc/ada/libgnarl/a-taside.adb
+++ b/gcc/ada/libgnarl/a-taside.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/a-taside.ads b/gcc/ada/libgnarl/a-taside.ads
index a0a156f..8a11955 100644
--- a/gcc/ada/libgnarl/a-taside.ads
+++ b/gcc/ada/libgnarl/a-taside.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnarl/a-tasini.adb b/gcc/ada/libgnarl/a-tasini.adb
index 0451125..ff27493 100644
--- a/gcc/ada/libgnarl/a-tasini.adb
+++ b/gcc/ada/libgnarl/a-tasini.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/a-tasini.ads b/gcc/ada/libgnarl/a-tasini.ads
index 6971a65..8ae6d55 100644
--- a/gcc/ada/libgnarl/a-tasini.ads
+++ b/gcc/ada/libgnarl/a-tasini.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/a-taster.adb b/gcc/ada/libgnarl/a-taster.adb
index dc4a40d..3a5ab2b 100644
--- a/gcc/ada/libgnarl/a-taster.adb
+++ b/gcc/ada/libgnarl/a-taster.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2005-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2005-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/g-boubuf.adb b/gcc/ada/libgnarl/g-boubuf.adb
index bc22c8b..13ae362 100644
--- a/gcc/ada/libgnarl/g-boubuf.adb
+++ b/gcc/ada/libgnarl/g-boubuf.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2003-2023, AdaCore --
+-- Copyright (C) 2003-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/g-boubuf.ads b/gcc/ada/libgnarl/g-boubuf.ads
index d0ef076..18c62a2 100644
--- a/gcc/ada/libgnarl/g-boubuf.ads
+++ b/gcc/ada/libgnarl/g-boubuf.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2003-2023, AdaCore --
+-- Copyright (C) 2003-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/g-boumai.ads b/gcc/ada/libgnarl/g-boumai.ads
index d3467e7..6cf19b5 100644
--- a/gcc/ada/libgnarl/g-boumai.ads
+++ b/gcc/ada/libgnarl/g-boumai.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2003-2023, AdaCore --
+-- Copyright (C) 2003-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/g-semaph.adb b/gcc/ada/libgnarl/g-semaph.adb
index 291dda5..3eeef03 100644
--- a/gcc/ada/libgnarl/g-semaph.adb
+++ b/gcc/ada/libgnarl/g-semaph.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2003-2023, AdaCore --
+-- Copyright (C) 2003-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/g-semaph.ads b/gcc/ada/libgnarl/g-semaph.ads
index f76e9df..06b66f7 100644
--- a/gcc/ada/libgnarl/g-semaph.ads
+++ b/gcc/ada/libgnarl/g-semaph.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2003-2023, AdaCore --
+-- Copyright (C) 2003-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/g-signal.adb b/gcc/ada/libgnarl/g-signal.adb
index c634073..bbb52ed 100644
--- a/gcc/ada/libgnarl/g-signal.adb
+++ b/gcc/ada/libgnarl/g-signal.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2003-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2003-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/g-signal.ads b/gcc/ada/libgnarl/g-signal.ads
index 5ae0177..08ece87 100644
--- a/gcc/ada/libgnarl/g-signal.ads
+++ b/gcc/ada/libgnarl/g-signal.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2003-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2003-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/g-tastus.ads b/gcc/ada/libgnarl/g-tastus.ads
index 91ca9fc..8a15193 100644
--- a/gcc/ada/libgnarl/g-tastus.ads
+++ b/gcc/ada/libgnarl/g-tastus.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/g-thread.adb b/gcc/ada/libgnarl/g-thread.adb
index 2d2e1ff..d86ee12 100644
--- a/gcc/ada/libgnarl/g-thread.adb
+++ b/gcc/ada/libgnarl/g-thread.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1998-2023, AdaCore --
+-- Copyright (C) 1998-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/g-thread.ads b/gcc/ada/libgnarl/g-thread.ads
index 2ac2036..f7c2284 100644
--- a/gcc/ada/libgnarl/g-thread.ads
+++ b/gcc/ada/libgnarl/g-thread.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1998-2023, AdaCore --
+-- Copyright (C) 1998-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/i-vxinco.adb b/gcc/ada/libgnarl/i-vxinco.adb
index 1a070c3..91ca22b 100644
--- a/gcc/ada/libgnarl/i-vxinco.adb
+++ b/gcc/ada/libgnarl/i-vxinco.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2016-2023, AdaCore --
+-- Copyright (C) 2016-2024, AdaCore --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/i-vxinco.ads b/gcc/ada/libgnarl/i-vxinco.ads
index 8c0ed45..9422a85 100644
--- a/gcc/ada/libgnarl/i-vxinco.ads
+++ b/gcc/ada/libgnarl/i-vxinco.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2016-2023, AdaCore --
+-- Copyright (C) 2016-2024, AdaCore --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-inmaop.ads b/gcc/ada/libgnarl/s-inmaop.ads
index edf8d66..d3a85e8 100644
--- a/gcc/ada/libgnarl/s-inmaop.ads
+++ b/gcc/ada/libgnarl/s-inmaop.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-inmaop__dummy.adb b/gcc/ada/libgnarl/s-inmaop__dummy.adb
index c68b2e0..582455a 100644
--- a/gcc/ada/libgnarl/s-inmaop__dummy.adb
+++ b/gcc/ada/libgnarl/s-inmaop__dummy.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-inmaop__hwint.adb b/gcc/ada/libgnarl/s-inmaop__hwint.adb
index 91c821a..9607a94 100644
--- a/gcc/ada/libgnarl/s-inmaop__hwint.adb
+++ b/gcc/ada/libgnarl/s-inmaop__hwint.adb
@@ -7,7 +7,7 @@
-- B o d y --
-- --
-- Copyright (C) 1991-2017, Florida State University --
--- Copyright (C) 1995-2023, AdaCore --
+-- Copyright (C) 1995-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-inmaop__posix.adb b/gcc/ada/libgnarl/s-inmaop__posix.adb
index e4d07ee..a883ff3 100644
--- a/gcc/ada/libgnarl/s-inmaop__posix.adb
+++ b/gcc/ada/libgnarl/s-inmaop__posix.adb
@@ -7,7 +7,7 @@
-- B o d y --
-- --
-- Copyright (C) 1991-2017, Florida State University --
--- Copyright (C) 1995-2023, AdaCore --
+-- Copyright (C) 1995-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-interr.adb b/gcc/ada/libgnarl/s-interr.adb
index 7a23168..9962fba 100644
--- a/gcc/ada/libgnarl/s-interr.adb
+++ b/gcc/ada/libgnarl/s-interr.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-interr.ads b/gcc/ada/libgnarl/s-interr.ads
index 09265b4..c17d609 100644
--- a/gcc/ada/libgnarl/s-interr.ads
+++ b/gcc/ada/libgnarl/s-interr.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-interr__dummy.adb b/gcc/ada/libgnarl/s-interr__dummy.adb
index 8f848a4..4276ef4 100644
--- a/gcc/ada/libgnarl/s-interr__dummy.adb
+++ b/gcc/ada/libgnarl/s-interr__dummy.adb
@@ -7,7 +7,7 @@
-- B o d y --
-- --
-- Copyright (C) 1991-2017, Florida State University --
--- Copyright (C) 1995-2023, AdaCore --
+-- Copyright (C) 1995-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-interr__hwint.adb b/gcc/ada/libgnarl/s-interr__hwint.adb
index eb2e5a2..12dde45 100644
--- a/gcc/ada/libgnarl/s-interr__hwint.adb
+++ b/gcc/ada/libgnarl/s-interr__hwint.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-interr__sigaction.adb b/gcc/ada/libgnarl/s-interr__sigaction.adb
index c0398e4..34aeca9 100644
--- a/gcc/ada/libgnarl/s-interr__sigaction.adb
+++ b/gcc/ada/libgnarl/s-interr__sigaction.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1998-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1998-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-interr__vxworks.adb b/gcc/ada/libgnarl/s-interr__vxworks.adb
index 93afcc5..92d6bb8 100644
--- a/gcc/ada/libgnarl/s-interr__vxworks.adb
+++ b/gcc/ada/libgnarl/s-interr__vxworks.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-intman.ads b/gcc/ada/libgnarl/s-intman.ads
index fff3219..924b947 100644
--- a/gcc/ada/libgnarl/s-intman.ads
+++ b/gcc/ada/libgnarl/s-intman.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-intman__android.adb b/gcc/ada/libgnarl/s-intman__android.adb
index 47eebda..88c99e7 100644
--- a/gcc/ada/libgnarl/s-intman__android.adb
+++ b/gcc/ada/libgnarl/s-intman__android.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2014-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2014-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-intman__dummy.adb b/gcc/ada/libgnarl/s-intman__dummy.adb
index f8da8bf..31c017b 100644
--- a/gcc/ada/libgnarl/s-intman__dummy.adb
+++ b/gcc/ada/libgnarl/s-intman__dummy.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1997-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1997-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-intman__lynxos.adb b/gcc/ada/libgnarl/s-intman__lynxos.adb
index d783f32..60b0201 100644
--- a/gcc/ada/libgnarl/s-intman__lynxos.adb
+++ b/gcc/ada/libgnarl/s-intman__lynxos.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-intman__mingw.adb b/gcc/ada/libgnarl/s-intman__mingw.adb
index 0b5dbf2..ca4e765 100644
--- a/gcc/ada/libgnarl/s-intman__mingw.adb
+++ b/gcc/ada/libgnarl/s-intman__mingw.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1991-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1991-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-intman__posix.adb b/gcc/ada/libgnarl/s-intman__posix.adb
index 5e07e29..311a1de 100644
--- a/gcc/ada/libgnarl/s-intman__posix.adb
+++ b/gcc/ada/libgnarl/s-intman__posix.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-intman__qnx.adb b/gcc/ada/libgnarl/s-intman__qnx.adb
index 0364549..c43c75d 100644
--- a/gcc/ada/libgnarl/s-intman__qnx.adb
+++ b/gcc/ada/libgnarl/s-intman__qnx.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-intman__rtems.adb b/gcc/ada/libgnarl/s-intman__rtems.adb
index b7963c1..3e84d9c 100644
--- a/gcc/ada/libgnarl/s-intman__rtems.adb
+++ b/gcc/ada/libgnarl/s-intman__rtems.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-intman__rtems.ads b/gcc/ada/libgnarl/s-intman__rtems.ads
index 95ca912..9c5107c 100644
--- a/gcc/ada/libgnarl/s-intman__rtems.ads
+++ b/gcc/ada/libgnarl/s-intman__rtems.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-intman__solaris.adb b/gcc/ada/libgnarl/s-intman__solaris.adb
index f7a238f..62caf6e 100644
--- a/gcc/ada/libgnarl/s-intman__solaris.adb
+++ b/gcc/ada/libgnarl/s-intman__solaris.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-intman__susv3.adb b/gcc/ada/libgnarl/s-intman__susv3.adb
index ef6d85a..ff1e9aa 100644
--- a/gcc/ada/libgnarl/s-intman__susv3.adb
+++ b/gcc/ada/libgnarl/s-intman__susv3.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-intman__vxworks.adb b/gcc/ada/libgnarl/s-intman__vxworks.adb
index 3bfdf58..19ea710 100644
--- a/gcc/ada/libgnarl/s-intman__vxworks.adb
+++ b/gcc/ada/libgnarl/s-intman__vxworks.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-intman__vxworks.ads b/gcc/ada/libgnarl/s-intman__vxworks.ads
index faf72a2..133789d 100644
--- a/gcc/ada/libgnarl/s-intman__vxworks.ads
+++ b/gcc/ada/libgnarl/s-intman__vxworks.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-linux.ads b/gcc/ada/libgnarl/s-linux.ads
index fd32970..233b831 100644
--- a/gcc/ada/libgnarl/s-linux.ads
+++ b/gcc/ada/libgnarl/s-linux.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2008-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2008-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-linux__alpha.ads b/gcc/ada/libgnarl/s-linux__alpha.ads
index 0448673..72d703d 100644
--- a/gcc/ada/libgnarl/s-linux__alpha.ads
+++ b/gcc/ada/libgnarl/s-linux__alpha.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-linux__android.ads b/gcc/ada/libgnarl/s-linux__android.ads
index ec72d09..ff369d5 100644
--- a/gcc/ada/libgnarl/s-linux__android.ads
+++ b/gcc/ada/libgnarl/s-linux__android.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2014-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2014-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-linux__hppa.ads b/gcc/ada/libgnarl/s-linux__hppa.ads
index c467bcb..aaa15f8 100644
--- a/gcc/ada/libgnarl/s-linux__hppa.ads
+++ b/gcc/ada/libgnarl/s-linux__hppa.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2008-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2008-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-linux__loongarch.ads b/gcc/ada/libgnarl/s-linux__loongarch.ads
index 9773ec0..5673335 100644
--- a/gcc/ada/libgnarl/s-linux__loongarch.ads
+++ b/gcc/ada/libgnarl/s-linux__loongarch.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-linux__mips.ads b/gcc/ada/libgnarl/s-linux__mips.ads
index a6ac482..e7a4597 100644
--- a/gcc/ada/libgnarl/s-linux__mips.ads
+++ b/gcc/ada/libgnarl/s-linux__mips.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-linux__riscv.ads b/gcc/ada/libgnarl/s-linux__riscv.ads
index 9ee8b73..17df094 100644
--- a/gcc/ada/libgnarl/s-linux__riscv.ads
+++ b/gcc/ada/libgnarl/s-linux__riscv.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-linux__sparc.ads b/gcc/ada/libgnarl/s-linux__sparc.ads
index ee5b171..9bfefc2 100644
--- a/gcc/ada/libgnarl/s-linux__sparc.ads
+++ b/gcc/ada/libgnarl/s-linux__sparc.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-linux__x32.ads b/gcc/ada/libgnarl/s-linux__x32.ads
index 8d32ad8..93a2718 100644
--- a/gcc/ada/libgnarl/s-linux__x32.ads
+++ b/gcc/ada/libgnarl/s-linux__x32.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2013-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2013-2024, Free Software Foundation, Inc. --
--
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
diff --git a/gcc/ada/libgnarl/s-mudido.adb b/gcc/ada/libgnarl/s-mudido.adb
index 00bad68..9edd25c 100644
--- a/gcc/ada/libgnarl/s-mudido.adb
+++ b/gcc/ada/libgnarl/s-mudido.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-mudido__affinity.adb b/gcc/ada/libgnarl/s-mudido__affinity.adb
index 5788f48..ec8c8f6 100644
--- a/gcc/ada/libgnarl/s-mudido__affinity.adb
+++ b/gcc/ada/libgnarl/s-mudido__affinity.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-osinte__aix.adb b/gcc/ada/libgnarl/s-osinte__aix.adb
index aacebaf..6ca3d98 100644
--- a/gcc/ada/libgnarl/s-osinte__aix.adb
+++ b/gcc/ada/libgnarl/s-osinte__aix.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1997-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1997-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-osinte__aix.ads b/gcc/ada/libgnarl/s-osinte__aix.ads
index cb87e67..9212d33 100644
--- a/gcc/ada/libgnarl/s-osinte__aix.ads
+++ b/gcc/ada/libgnarl/s-osinte__aix.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- --
-- Copyright (C) 1991-2017, Florida State University --
--- Copyright (C) 1995-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1995-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-osinte__android.adb b/gcc/ada/libgnarl/s-osinte__android.adb
index 90a2a8c..4670807 100644
--- a/gcc/ada/libgnarl/s-osinte__android.adb
+++ b/gcc/ada/libgnarl/s-osinte__android.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1995-2023, AdaCore --
+-- Copyright (C) 1995-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-osinte__android.ads b/gcc/ada/libgnarl/s-osinte__android.ads
index 04b2222..ca35aab 100644
--- a/gcc/ada/libgnarl/s-osinte__android.ads
+++ b/gcc/ada/libgnarl/s-osinte__android.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1995-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1995-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-osinte__darwin.adb b/gcc/ada/libgnarl/s-osinte__darwin.adb
index f509d19..a2ab6d2 100644
--- a/gcc/ada/libgnarl/s-osinte__darwin.adb
+++ b/gcc/ada/libgnarl/s-osinte__darwin.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1999-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1999-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-osinte__darwin.ads b/gcc/ada/libgnarl/s-osinte__darwin.ads
index 7ed415e..af5dce5 100644
--- a/gcc/ada/libgnarl/s-osinte__darwin.ads
+++ b/gcc/ada/libgnarl/s-osinte__darwin.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- --
-- Copyright (C) 1991-2017, Florida State University --
--- Copyright (C) 1995-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1995-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-osinte__dragonfly.adb b/gcc/ada/libgnarl/s-osinte__dragonfly.adb
index 4cf4e23..6f9c955 100644
--- a/gcc/ada/libgnarl/s-osinte__dragonfly.adb
+++ b/gcc/ada/libgnarl/s-osinte__dragonfly.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1991-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1991-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-osinte__dragonfly.ads b/gcc/ada/libgnarl/s-osinte__dragonfly.ads
index ec33997..bf078dd 100644
--- a/gcc/ada/libgnarl/s-osinte__dragonfly.ads
+++ b/gcc/ada/libgnarl/s-osinte__dragonfly.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- --
-- Copyright (C) 1991-1994, Florida State University --
--- Copyright (C) 1995-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1995-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-osinte__dummy.ads b/gcc/ada/libgnarl/s-osinte__dummy.ads
index d19c21c..0577e45 100644
--- a/gcc/ada/libgnarl/s-osinte__dummy.ads
+++ b/gcc/ada/libgnarl/s-osinte__dummy.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- --
-- Copyright (C) 1991-2017, Florida State University --
--- Copyright (C) 1995-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1995-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-osinte__freebsd.adb b/gcc/ada/libgnarl/s-osinte__freebsd.adb
index 8f6c0ac..1692536 100644
--- a/gcc/ada/libgnarl/s-osinte__freebsd.adb
+++ b/gcc/ada/libgnarl/s-osinte__freebsd.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1991-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1991-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-osinte__freebsd.ads b/gcc/ada/libgnarl/s-osinte__freebsd.ads
index f22d51a..8724ddc 100644
--- a/gcc/ada/libgnarl/s-osinte__freebsd.ads
+++ b/gcc/ada/libgnarl/s-osinte__freebsd.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- --
-- Copyright (C) 1991-2017, Florida State University --
--- Copyright (C) 1995-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1995-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-osinte__gnu.adb b/gcc/ada/libgnarl/s-osinte__gnu.adb
index 998a929..f5a0311 100644
--- a/gcc/ada/libgnarl/s-osinte__gnu.adb
+++ b/gcc/ada/libgnarl/s-osinte__gnu.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2015-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2015-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-osinte__gnu.ads b/gcc/ada/libgnarl/s-osinte__gnu.ads
index 4c58c4e..8e5760d 100644
--- a/gcc/ada/libgnarl/s-osinte__gnu.ads
+++ b/gcc/ada/libgnarl/s-osinte__gnu.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- --
-- Copyright (C) 1991-1994, Florida State University --
--- Copyright (C) 1995-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1995-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-osinte__hpux-dce.adb b/gcc/ada/libgnarl/s-osinte__hpux-dce.adb
index 0ac08b1..ff1e0d4 100644
--- a/gcc/ada/libgnarl/s-osinte__hpux-dce.adb
+++ b/gcc/ada/libgnarl/s-osinte__hpux-dce.adb
@@ -7,7 +7,7 @@
-- B o d y --
-- --
-- Copyright (C) 1991-1994, Florida State University --
--- Copyright (C) 1995-2023, AdaCore --
+-- Copyright (C) 1995-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-osinte__hpux-dce.ads b/gcc/ada/libgnarl/s-osinte__hpux-dce.ads
index d78de42..b1ccd96 100644
--- a/gcc/ada/libgnarl/s-osinte__hpux-dce.ads
+++ b/gcc/ada/libgnarl/s-osinte__hpux-dce.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- --
-- Copyright (C) 1991-1994, Florida State University --
--- Copyright (C) 1995-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1995-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-osinte__hpux.ads b/gcc/ada/libgnarl/s-osinte__hpux.ads
index fd911c5..52d5995 100644
--- a/gcc/ada/libgnarl/s-osinte__hpux.ads
+++ b/gcc/ada/libgnarl/s-osinte__hpux.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- --
-- Copyright (C) 1991-2017, Florida State University --
--- Copyright (C) 1995-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1995-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-osinte__kfreebsd-gnu.ads b/gcc/ada/libgnarl/s-osinte__kfreebsd-gnu.ads
index f789b20..9383759 100644
--- a/gcc/ada/libgnarl/s-osinte__kfreebsd-gnu.ads
+++ b/gcc/ada/libgnarl/s-osinte__kfreebsd-gnu.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- --
-- Copyright (C) 1991-1994, Florida State University --
--- Copyright (C) 1995-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1995-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-osinte__linux.ads b/gcc/ada/libgnarl/s-osinte__linux.ads
index adf040e..1bf4d96 100644
--- a/gcc/ada/libgnarl/s-osinte__linux.ads
+++ b/gcc/ada/libgnarl/s-osinte__linux.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- --
-- Copyright (C) 1991-2017, Florida State University --
--- Copyright (C) 1995-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1995-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-osinte__lynxos178.adb b/gcc/ada/libgnarl/s-osinte__lynxos178.adb
index c7d623f..ea8cfab 100644
--- a/gcc/ada/libgnarl/s-osinte__lynxos178.adb
+++ b/gcc/ada/libgnarl/s-osinte__lynxos178.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2023, AdaCore --
+-- Copyright (C) 2001-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-osinte__lynxos178e.ads b/gcc/ada/libgnarl/s-osinte__lynxos178e.ads
index 396358b..23ea89a 100644
--- a/gcc/ada/libgnarl/s-osinte__lynxos178e.ads
+++ b/gcc/ada/libgnarl/s-osinte__lynxos178e.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- --
-- Copyright (C) 1991-1994, Florida State University --
--- Copyright (C) 1995-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1995-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-osinte__mingw.ads b/gcc/ada/libgnarl/s-osinte__mingw.ads
index 2ab942c..4be6c03 100644
--- a/gcc/ada/libgnarl/s-osinte__mingw.ads
+++ b/gcc/ada/libgnarl/s-osinte__mingw.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- --
-- Copyright (C) 1991-2017, Florida State University --
--- Copyright (C) 1995-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1995-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-osinte__posix.adb b/gcc/ada/libgnarl/s-osinte__posix.adb
index fc79b12..a91a9ae 100644
--- a/gcc/ada/libgnarl/s-osinte__posix.adb
+++ b/gcc/ada/libgnarl/s-osinte__posix.adb
@@ -7,7 +7,7 @@
-- B o d y --
-- --
-- Copyright (C) 1991-2017, Florida State University --
--- Copyright (C) 1995-2023, AdaCore --
+-- Copyright (C) 1995-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-osinte__qnx.adb b/gcc/ada/libgnarl/s-osinte__qnx.adb
index 127d179..d752eca 100644
--- a/gcc/ada/libgnarl/s-osinte__qnx.adb
+++ b/gcc/ada/libgnarl/s-osinte__qnx.adb
@@ -7,7 +7,7 @@
-- B o d y --
-- --
-- Copyright (C) 1991-2017, Florida State University --
--- Copyright (C) 1995-2023, AdaCore --
+-- Copyright (C) 1995-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-osinte__qnx.ads b/gcc/ada/libgnarl/s-osinte__qnx.ads
index 320a71d..b1de1c6 100644
--- a/gcc/ada/libgnarl/s-osinte__qnx.ads
+++ b/gcc/ada/libgnarl/s-osinte__qnx.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1995-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1995-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-osinte__rtems.adb b/gcc/ada/libgnarl/s-osinte__rtems.adb
index 76693be..19b45c4 100644
--- a/gcc/ada/libgnarl/s-osinte__rtems.adb
+++ b/gcc/ada/libgnarl/s-osinte__rtems.adb
@@ -7,7 +7,7 @@
-- B o d y --
-- --
-- Copyright (C) 1991-2017, Florida State University --
--- Copyright (C) 1995-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1995-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-osinte__rtems.ads b/gcc/ada/libgnarl/s-osinte__rtems.ads
index 43d137f..6a7487c 100644
--- a/gcc/ada/libgnarl/s-osinte__rtems.ads
+++ b/gcc/ada/libgnarl/s-osinte__rtems.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1997-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1997-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-osinte__solaris.adb b/gcc/ada/libgnarl/s-osinte__solaris.adb
index 3810de0..32e5911 100644
--- a/gcc/ada/libgnarl/s-osinte__solaris.adb
+++ b/gcc/ada/libgnarl/s-osinte__solaris.adb
@@ -7,7 +7,7 @@
-- B o d y --
-- --
-- Copyright (C) 1991-2017, Florida State University --
--- Copyright (C) 1995-2023, AdaCore --
+-- Copyright (C) 1995-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-osinte__solaris.ads b/gcc/ada/libgnarl/s-osinte__solaris.ads
index 269660a..a7ee96d 100644
--- a/gcc/ada/libgnarl/s-osinte__solaris.ads
+++ b/gcc/ada/libgnarl/s-osinte__solaris.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- --
-- Copyright (C) 1991-2017, Florida State University --
--- Copyright (C) 1995-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1995-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-osinte__vxworks.adb b/gcc/ada/libgnarl/s-osinte__vxworks.adb
index 93ea41d..b4f5a6b 100644
--- a/gcc/ada/libgnarl/s-osinte__vxworks.adb
+++ b/gcc/ada/libgnarl/s-osinte__vxworks.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1997-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1997-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-osinte__vxworks.ads b/gcc/ada/libgnarl/s-osinte__vxworks.ads
index 1b4b8ff..5e4e8ce 100644
--- a/gcc/ada/libgnarl/s-osinte__vxworks.ads
+++ b/gcc/ada/libgnarl/s-osinte__vxworks.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- --
-- Copyright (C) 1991-2017, Florida State University --
--- Copyright (C) 1995-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1995-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-osinte__x32.adb b/gcc/ada/libgnarl/s-osinte__x32.adb
index df58bca..ad21941 100644
--- a/gcc/ada/libgnarl/s-osinte__x32.adb
+++ b/gcc/ada/libgnarl/s-osinte__x32.adb
@@ -7,7 +7,7 @@
-- B o d y --
-- --
-- Copyright (C) 1991-2017, Florida State University --
--- Copyright (C) 1995-2023, AdaCore --
+-- Copyright (C) 1995-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-proinf.adb b/gcc/ada/libgnarl/s-proinf.adb
index 92dbecb..c41b6f8 100644
--- a/gcc/ada/libgnarl/s-proinf.adb
+++ b/gcc/ada/libgnarl/s-proinf.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1996-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1996-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-proinf.ads b/gcc/ada/libgnarl/s-proinf.ads
index 9d7c997..059fe14 100644
--- a/gcc/ada/libgnarl/s-proinf.ads
+++ b/gcc/ada/libgnarl/s-proinf.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1996-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1996-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-putaim.adb b/gcc/ada/libgnarl/s-putaim.adb
index b93003a..32ade88 100644
--- a/gcc/ada/libgnarl/s-putaim.adb
+++ b/gcc/ada/libgnarl/s-putaim.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-putaim.ads b/gcc/ada/libgnarl/s-putaim.ads
index 6469fb4..25599ce 100644
--- a/gcc/ada/libgnarl/s-putaim.ads
+++ b/gcc/ada/libgnarl/s-putaim.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-qnx.ads b/gcc/ada/libgnarl/s-qnx.ads
index fb5084c..6fd02b8 100644
--- a/gcc/ada/libgnarl/s-qnx.ads
+++ b/gcc/ada/libgnarl/s-qnx.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2017-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2017-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-solita.adb b/gcc/ada/libgnarl/s-solita.adb
index f327ba6..6e05a45 100644
--- a/gcc/ada/libgnarl/s-solita.adb
+++ b/gcc/ada/libgnarl/s-solita.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-solita.ads b/gcc/ada/libgnarl/s-solita.ads
index 3b1fd5f..7ec4102 100644
--- a/gcc/ada/libgnarl/s-solita.ads
+++ b/gcc/ada/libgnarl/s-solita.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-stusta.adb b/gcc/ada/libgnarl/s-stusta.adb
index b860592..8addf10 100644
--- a/gcc/ada/libgnarl/s-stusta.adb
+++ b/gcc/ada/libgnarl/s-stusta.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-stusta.ads b/gcc/ada/libgnarl/s-stusta.ads
index b39f7d8..1515f7f 100644
--- a/gcc/ada/libgnarl/s-stusta.ads
+++ b/gcc/ada/libgnarl/s-stusta.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-taasde.adb b/gcc/ada/libgnarl/s-taasde.adb
index f11be3e..a1ba791 100644
--- a/gcc/ada/libgnarl/s-taasde.adb
+++ b/gcc/ada/libgnarl/s-taasde.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1998-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1998-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-taasde.ads b/gcc/ada/libgnarl/s-taasde.ads
index e0565ba..fd82ba8 100644
--- a/gcc/ada/libgnarl/s-taasde.ads
+++ b/gcc/ada/libgnarl/s-taasde.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1998-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1998-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tadeca.adb b/gcc/ada/libgnarl/s-tadeca.adb
index cddf06e..7e915f8 100644
--- a/gcc/ada/libgnarl/s-tadeca.adb
+++ b/gcc/ada/libgnarl/s-tadeca.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1998-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1998-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tadeca.ads b/gcc/ada/libgnarl/s-tadeca.ads
index 6838850..5ba7edd 100644
--- a/gcc/ada/libgnarl/s-tadeca.ads
+++ b/gcc/ada/libgnarl/s-tadeca.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1998-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1998-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tadert.adb b/gcc/ada/libgnarl/s-tadert.adb
index d07fe58..24656c9 100644
--- a/gcc/ada/libgnarl/s-tadert.adb
+++ b/gcc/ada/libgnarl/s-tadert.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1998-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1998-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tadert.ads b/gcc/ada/libgnarl/s-tadert.ads
index f9a37b3..9dea67f 100644
--- a/gcc/ada/libgnarl/s-tadert.ads
+++ b/gcc/ada/libgnarl/s-tadert.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1998-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1998-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-taenca.adb b/gcc/ada/libgnarl/s-taenca.adb
index 5d244bd..cd9c53b 100644
--- a/gcc/ada/libgnarl/s-taenca.adb
+++ b/gcc/ada/libgnarl/s-taenca.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-taenca.ads b/gcc/ada/libgnarl/s-taenca.ads
index cbc2723..dfba53bc 100644
--- a/gcc/ada/libgnarl/s-taenca.ads
+++ b/gcc/ada/libgnarl/s-taenca.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-taprob.adb b/gcc/ada/libgnarl/s-taprob.adb
index 0dc121c..c0812d9 100644
--- a/gcc/ada/libgnarl/s-taprob.adb
+++ b/gcc/ada/libgnarl/s-taprob.adb
@@ -7,7 +7,7 @@
-- B o d y --
-- --
-- Copyright (C) 1991-2017, Florida State University --
--- Copyright (C) 1995-2023, AdaCore --
+-- Copyright (C) 1995-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-taprob.ads b/gcc/ada/libgnarl/s-taprob.ads
index 9daee5d..34cfcc7 100644
--- a/gcc/ada/libgnarl/s-taprob.ads
+++ b/gcc/ada/libgnarl/s-taprob.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-taprop.ads b/gcc/ada/libgnarl/s-taprop.ads
index db79e5b..c4920e3 100644
--- a/gcc/ada/libgnarl/s-taprop.ads
+++ b/gcc/ada/libgnarl/s-taprop.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-taprop__dummy.adb b/gcc/ada/libgnarl/s-taprop__dummy.adb
index ced2a0c..90c4cd4 100644
--- a/gcc/ada/libgnarl/s-taprop__dummy.adb
+++ b/gcc/ada/libgnarl/s-taprop__dummy.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-taprop__hpux-dce.adb b/gcc/ada/libgnarl/s-taprop__hpux-dce.adb
index f40a778..fb95f76 100644
--- a/gcc/ada/libgnarl/s-taprop__hpux-dce.adb
+++ b/gcc/ada/libgnarl/s-taprop__hpux-dce.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-taprop__linux.adb b/gcc/ada/libgnarl/s-taprop__linux.adb
index efb99b3..d6a29b5 100644
--- a/gcc/ada/libgnarl/s-taprop__linux.adb
+++ b/gcc/ada/libgnarl/s-taprop__linux.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-taprop__mingw.adb b/gcc/ada/libgnarl/s-taprop__mingw.adb
index c05716c..e97682e 100644
--- a/gcc/ada/libgnarl/s-taprop__mingw.adb
+++ b/gcc/ada/libgnarl/s-taprop__mingw.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-taprop__posix.adb b/gcc/ada/libgnarl/s-taprop__posix.adb
index 0c15432..7969412 100644
--- a/gcc/ada/libgnarl/s-taprop__posix.adb
+++ b/gcc/ada/libgnarl/s-taprop__posix.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-taprop__qnx.adb b/gcc/ada/libgnarl/s-taprop__qnx.adb
index 4232298..8b98af7 100644
--- a/gcc/ada/libgnarl/s-taprop__qnx.adb
+++ b/gcc/ada/libgnarl/s-taprop__qnx.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-taprop__rtems.adb b/gcc/ada/libgnarl/s-taprop__rtems.adb
index 312a94d..68a956e 100644
--- a/gcc/ada/libgnarl/s-taprop__rtems.adb
+++ b/gcc/ada/libgnarl/s-taprop__rtems.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-taprop__solaris.adb b/gcc/ada/libgnarl/s-taprop__solaris.adb
index 5ced54a..657ad55 100644
--- a/gcc/ada/libgnarl/s-taprop__solaris.adb
+++ b/gcc/ada/libgnarl/s-taprop__solaris.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-taprop__vxworks.adb b/gcc/ada/libgnarl/s-taprop__vxworks.adb
index 9d1c705..8b146f9 100644
--- a/gcc/ada/libgnarl/s-taprop__vxworks.adb
+++ b/gcc/ada/libgnarl/s-taprop__vxworks.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tarest.adb b/gcc/ada/libgnarl/s-tarest.adb
index 6acbc9c..98ceb8f 100644
--- a/gcc/ada/libgnarl/s-tarest.adb
+++ b/gcc/ada/libgnarl/s-tarest.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1999-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1999-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tarest.ads b/gcc/ada/libgnarl/s-tarest.ads
index 6e2d473..e6c9ae0 100644
--- a/gcc/ada/libgnarl/s-tarest.ads
+++ b/gcc/ada/libgnarl/s-tarest.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tasdeb.adb b/gcc/ada/libgnarl/s-tasdeb.adb
index 4ccfba1f..a2810fb 100644
--- a/gcc/ada/libgnarl/s-tasdeb.adb
+++ b/gcc/ada/libgnarl/s-tasdeb.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1997-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1997-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tasdeb.ads b/gcc/ada/libgnarl/s-tasdeb.ads
index 3539a46..2a18a96 100644
--- a/gcc/ada/libgnarl/s-tasdeb.ads
+++ b/gcc/ada/libgnarl/s-tasdeb.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1997-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1997-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tasinf.adb b/gcc/ada/libgnarl/s-tasinf.adb
index cb5439e..858f0cb 100644
--- a/gcc/ada/libgnarl/s-tasinf.adb
+++ b/gcc/ada/libgnarl/s-tasinf.adb
@@ -7,7 +7,7 @@
-- B o d y --
-- (Compiler Interface) --
-- --
--- Copyright (C) 1998-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1998-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tasinf.ads b/gcc/ada/libgnarl/s-tasinf.ads
index efe674a..55f261c 100644
--- a/gcc/ada/libgnarl/s-tasinf.ads
+++ b/gcc/ada/libgnarl/s-tasinf.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tasinf__linux.adb b/gcc/ada/libgnarl/s-tasinf__linux.adb
index 15a6355..0315cd9 100644
--- a/gcc/ada/libgnarl/s-tasinf__linux.adb
+++ b/gcc/ada/libgnarl/s-tasinf__linux.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tasinf__linux.ads b/gcc/ada/libgnarl/s-tasinf__linux.ads
index a4aee60..8665135 100644
--- a/gcc/ada/libgnarl/s-tasinf__linux.ads
+++ b/gcc/ada/libgnarl/s-tasinf__linux.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2007-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2007-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tasinf__mingw.adb b/gcc/ada/libgnarl/s-tasinf__mingw.adb
index 8ba31b1..d6f9ee5 100644
--- a/gcc/ada/libgnarl/s-tasinf__mingw.adb
+++ b/gcc/ada/libgnarl/s-tasinf__mingw.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2007-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2007-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tasinf__mingw.ads b/gcc/ada/libgnarl/s-tasinf__mingw.ads
index 5a78ff2..76fe698 100644
--- a/gcc/ada/libgnarl/s-tasinf__mingw.ads
+++ b/gcc/ada/libgnarl/s-tasinf__mingw.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2007-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2007-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tasinf__solaris.adb b/gcc/ada/libgnarl/s-tasinf__solaris.adb
index 326b9e6..e5ca46b 100644
--- a/gcc/ada/libgnarl/s-tasinf__solaris.adb
+++ b/gcc/ada/libgnarl/s-tasinf__solaris.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tasinf__solaris.ads b/gcc/ada/libgnarl/s-tasinf__solaris.ads
index 8accc00..ea967ab 100644
--- a/gcc/ada/libgnarl/s-tasinf__solaris.ads
+++ b/gcc/ada/libgnarl/s-tasinf__solaris.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tasinf__vxworks.ads b/gcc/ada/libgnarl/s-tasinf__vxworks.ads
index c5a1dc1..34f5d36 100644
--- a/gcc/ada/libgnarl/s-tasinf__vxworks.ads
+++ b/gcc/ada/libgnarl/s-tasinf__vxworks.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tasini.adb b/gcc/ada/libgnarl/s-tasini.adb
index 2000543..8bb42d9 100644
--- a/gcc/ada/libgnarl/s-tasini.adb
+++ b/gcc/ada/libgnarl/s-tasini.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tasini.ads b/gcc/ada/libgnarl/s-tasini.ads
index f89a2e3..5d9a437 100644
--- a/gcc/ada/libgnarl/s-tasini.ads
+++ b/gcc/ada/libgnarl/s-tasini.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-taskin.adb b/gcc/ada/libgnarl/s-taskin.adb
index ff971ed..95c95ed 100644
--- a/gcc/ada/libgnarl/s-taskin.adb
+++ b/gcc/ada/libgnarl/s-taskin.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-taskin.ads b/gcc/ada/libgnarl/s-taskin.ads
index 5aa3e37..949fb7e 100644
--- a/gcc/ada/libgnarl/s-taskin.ads
+++ b/gcc/ada/libgnarl/s-taskin.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-taspri__dummy.ads b/gcc/ada/libgnarl/s-taspri__dummy.ads
index 92fe4ad..4b25f19 100644
--- a/gcc/ada/libgnarl/s-taspri__dummy.ads
+++ b/gcc/ada/libgnarl/s-taspri__dummy.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1991-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1991-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-taspri__hpux-dce.ads b/gcc/ada/libgnarl/s-taspri__hpux-dce.ads
index 70b91c3..f2fba3e 100644
--- a/gcc/ada/libgnarl/s-taspri__hpux-dce.ads
+++ b/gcc/ada/libgnarl/s-taspri__hpux-dce.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1991-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1991-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-taspri__lynxos.ads b/gcc/ada/libgnarl/s-taspri__lynxos.ads
index f759bf8..07d9be2 100644
--- a/gcc/ada/libgnarl/s-taspri__lynxos.ads
+++ b/gcc/ada/libgnarl/s-taspri__lynxos.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- --
-- Copyright (C) 1991-2017, Florida State University --
--- Copyright (C) 1995-2023, AdaCore --
+-- Copyright (C) 1995-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-taspri__mingw.ads b/gcc/ada/libgnarl/s-taspri__mingw.ads
index 60ba97a..426c4a3 100644
--- a/gcc/ada/libgnarl/s-taspri__mingw.ads
+++ b/gcc/ada/libgnarl/s-taspri__mingw.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1991-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1991-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-taspri__posix-noaltstack.ads b/gcc/ada/libgnarl/s-taspri__posix-noaltstack.ads
index 5a5c521..f9118c7 100644
--- a/gcc/ada/libgnarl/s-taspri__posix-noaltstack.ads
+++ b/gcc/ada/libgnarl/s-taspri__posix-noaltstack.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- --
-- Copyright (C) 1991-2017, Florida State University --
--- Copyright (C) 1995-2023, AdaCore --
+-- Copyright (C) 1995-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-taspri__posix.ads b/gcc/ada/libgnarl/s-taspri__posix.ads
index a6dee12..1fdfa83 100644
--- a/gcc/ada/libgnarl/s-taspri__posix.ads
+++ b/gcc/ada/libgnarl/s-taspri__posix.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- --
-- Copyright (C) 1991-2017, Florida State University --
--- Copyright (C) 1995-2023, AdaCore --
+-- Copyright (C) 1995-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-taspri__solaris.ads b/gcc/ada/libgnarl/s-taspri__solaris.ads
index da7a223..33bd87c 100644
--- a/gcc/ada/libgnarl/s-taspri__solaris.ads
+++ b/gcc/ada/libgnarl/s-taspri__solaris.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-taspri__vxworks.ads b/gcc/ada/libgnarl/s-taspri__vxworks.ads
index a60d283..9dc26c9 100644
--- a/gcc/ada/libgnarl/s-taspri__vxworks.ads
+++ b/gcc/ada/libgnarl/s-taspri__vxworks.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tasque.adb b/gcc/ada/libgnarl/s-tasque.adb
index ac1bb4c..cd0576a 100644
--- a/gcc/ada/libgnarl/s-tasque.adb
+++ b/gcc/ada/libgnarl/s-tasque.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tasque.ads b/gcc/ada/libgnarl/s-tasque.ads
index 3323788..2fc0d2b 100644
--- a/gcc/ada/libgnarl/s-tasque.ads
+++ b/gcc/ada/libgnarl/s-tasque.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tasren.adb b/gcc/ada/libgnarl/s-tasren.adb
index 956cb26..d65b9f0 100644
--- a/gcc/ada/libgnarl/s-tasren.adb
+++ b/gcc/ada/libgnarl/s-tasren.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tasren.ads b/gcc/ada/libgnarl/s-tasren.ads
index 320e842..9d4b116 100644
--- a/gcc/ada/libgnarl/s-tasren.ads
+++ b/gcc/ada/libgnarl/s-tasren.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tasres.ads b/gcc/ada/libgnarl/s-tasres.ads
index 003d138..e31b935 100644
--- a/gcc/ada/libgnarl/s-tasres.ads
+++ b/gcc/ada/libgnarl/s-tasres.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1998-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1998-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tassta.adb b/gcc/ada/libgnarl/s-tassta.adb
index 5be6253..01c94b9 100644
--- a/gcc/ada/libgnarl/s-tassta.adb
+++ b/gcc/ada/libgnarl/s-tassta.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tassta.ads b/gcc/ada/libgnarl/s-tassta.ads
index 0421443..563d9a3 100644
--- a/gcc/ada/libgnarl/s-tassta.ads
+++ b/gcc/ada/libgnarl/s-tassta.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tasuti.adb b/gcc/ada/libgnarl/s-tasuti.adb
index 73ce726..2267e13 100644
--- a/gcc/ada/libgnarl/s-tasuti.adb
+++ b/gcc/ada/libgnarl/s-tasuti.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tasuti.ads b/gcc/ada/libgnarl/s-tasuti.ads
index 1e0e512..095f133 100644
--- a/gcc/ada/libgnarl/s-tasuti.ads
+++ b/gcc/ada/libgnarl/s-tasuti.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tataat.adb b/gcc/ada/libgnarl/s-tataat.adb
index 801d611..ae9c434 100644
--- a/gcc/ada/libgnarl/s-tataat.adb
+++ b/gcc/ada/libgnarl/s-tataat.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2014-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2014-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tataat.ads b/gcc/ada/libgnarl/s-tataat.ads
index e6d597c..37ca0c8 100644
--- a/gcc/ada/libgnarl/s-tataat.ads
+++ b/gcc/ada/libgnarl/s-tataat.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2014-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2014-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tpinop.adb b/gcc/ada/libgnarl/s-tpinop.adb
index 1202189..c95481c 100644
--- a/gcc/ada/libgnarl/s-tpinop.adb
+++ b/gcc/ada/libgnarl/s-tpinop.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1998-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1998-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tpinop.ads b/gcc/ada/libgnarl/s-tpinop.ads
index 29b6085..27a4a20 100644
--- a/gcc/ada/libgnarl/s-tpinop.ads
+++ b/gcc/ada/libgnarl/s-tpinop.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1998-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1998-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tpoaal.adb b/gcc/ada/libgnarl/s-tpoaal.adb
index 5272a0c..6feae92 100644
--- a/gcc/ada/libgnarl/s-tpoaal.adb
+++ b/gcc/ada/libgnarl/s-tpoaal.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tpoben.adb b/gcc/ada/libgnarl/s-tpoben.adb
index 2b3ce0e..6fbb9eb 100644
--- a/gcc/ada/libgnarl/s-tpoben.adb
+++ b/gcc/ada/libgnarl/s-tpoben.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1998-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1998-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tpoben.ads b/gcc/ada/libgnarl/s-tpoben.ads
index d0f4fe5..d1e6b85 100644
--- a/gcc/ada/libgnarl/s-tpoben.ads
+++ b/gcc/ada/libgnarl/s-tpoben.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tpobmu.adb b/gcc/ada/libgnarl/s-tpobmu.adb
index 6a1f641..ee3f585 100644
--- a/gcc/ada/libgnarl/s-tpobmu.adb
+++ b/gcc/ada/libgnarl/s-tpobmu.adb
@@ -6,7 +6,7 @@
-- M U L T I P R O C E S S O R S --
-- B o d y --
-- --
--- Copyright (C) 2010-2023, AdaCore --
+-- Copyright (C) 2010-2024, AdaCore --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tpobmu.ads b/gcc/ada/libgnarl/s-tpobmu.ads
index 974053a..cb7643a 100644
--- a/gcc/ada/libgnarl/s-tpobmu.ads
+++ b/gcc/ada/libgnarl/s-tpobmu.ads
@@ -6,7 +6,7 @@
-- M U L T I P R O C E S S O R S --
-- S p e c --
-- --
--- Copyright (C) 2010-2023, AdaCore --
+-- Copyright (C) 2010-2024, AdaCore --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tpobop.adb b/gcc/ada/libgnarl/s-tpobop.adb
index c6e05e5..13654fa 100644
--- a/gcc/ada/libgnarl/s-tpobop.adb
+++ b/gcc/ada/libgnarl/s-tpobop.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1998-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1998-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tpobop.ads b/gcc/ada/libgnarl/s-tpobop.ads
index 7502245..a3a56d1 100644
--- a/gcc/ada/libgnarl/s-tpobop.ads
+++ b/gcc/ada/libgnarl/s-tpobop.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tpopmo.adb b/gcc/ada/libgnarl/s-tpopmo.adb
index f8b7282..a38f9f4 100644
--- a/gcc/ada/libgnarl/s-tpopmo.adb
+++ b/gcc/ada/libgnarl/s-tpopmo.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tpopsp__posix-foreign.adb b/gcc/ada/libgnarl/s-tpopsp__posix-foreign.adb
index ebf0f62..4c45fdf 100644
--- a/gcc/ada/libgnarl/s-tpopsp__posix-foreign.adb
+++ b/gcc/ada/libgnarl/s-tpopsp__posix-foreign.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tpopsp__posix.adb b/gcc/ada/libgnarl/s-tpopsp__posix.adb
index 6690d4c..387c0cb 100644
--- a/gcc/ada/libgnarl/s-tpopsp__posix.adb
+++ b/gcc/ada/libgnarl/s-tpopsp__posix.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tpopsp__solaris.adb b/gcc/ada/libgnarl/s-tpopsp__solaris.adb
index 314065c..de3eb17 100644
--- a/gcc/ada/libgnarl/s-tpopsp__solaris.adb
+++ b/gcc/ada/libgnarl/s-tpopsp__solaris.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tpopsp__tls.adb b/gcc/ada/libgnarl/s-tpopsp__tls.adb
index f6d184d..f5dd566 100644
--- a/gcc/ada/libgnarl/s-tpopsp__tls.adb
+++ b/gcc/ada/libgnarl/s-tpopsp__tls.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tpopsp__vxworks-rtp.adb b/gcc/ada/libgnarl/s-tpopsp__vxworks-rtp.adb
index 735f1386..e70959b 100644
--- a/gcc/ada/libgnarl/s-tpopsp__vxworks-rtp.adb
+++ b/gcc/ada/libgnarl/s-tpopsp__vxworks-rtp.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tpopsp__vxworks-tls.adb b/gcc/ada/libgnarl/s-tpopsp__vxworks-tls.adb
index ea77bd6..bb50558 100644
--- a/gcc/ada/libgnarl/s-tpopsp__vxworks-tls.adb
+++ b/gcc/ada/libgnarl/s-tpopsp__vxworks-tls.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tpopsp__vxworks.adb b/gcc/ada/libgnarl/s-tpopsp__vxworks.adb
index d61446b..4a9b8e9 100644
--- a/gcc/ada/libgnarl/s-tpopsp__vxworks.adb
+++ b/gcc/ada/libgnarl/s-tpopsp__vxworks.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tporft.adb b/gcc/ada/libgnarl/s-tporft.adb
index ea7e8a6..a7b4ce5 100644
--- a/gcc/ada/libgnarl/s-tporft.adb
+++ b/gcc/ada/libgnarl/s-tporft.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tposen.adb b/gcc/ada/libgnarl/s-tposen.adb
index a7447b9..7c1ad58 100644
--- a/gcc/ada/libgnarl/s-tposen.adb
+++ b/gcc/ada/libgnarl/s-tposen.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1998-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1998-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-tposen.ads b/gcc/ada/libgnarl/s-tposen.ads
index 8902b9a..1d4e9c7 100644
--- a/gcc/ada/libgnarl/s-tposen.ads
+++ b/gcc/ada/libgnarl/s-tposen.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-vxwext.adb b/gcc/ada/libgnarl/s-vxwext.adb
index 9106baf..f3aceac 100644
--- a/gcc/ada/libgnarl/s-vxwext.adb
+++ b/gcc/ada/libgnarl/s-vxwext.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-vxwext.ads b/gcc/ada/libgnarl/s-vxwext.ads
index 7d51296..b381c5f 100644
--- a/gcc/ada/libgnarl/s-vxwext.ads
+++ b/gcc/ada/libgnarl/s-vxwext.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2008-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2008-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-vxwext__kernel-smp.adb b/gcc/ada/libgnarl/s-vxwext__kernel-smp.adb
index 4d59b10..38c3e38 100644
--- a/gcc/ada/libgnarl/s-vxwext__kernel-smp.adb
+++ b/gcc/ada/libgnarl/s-vxwext__kernel-smp.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2008-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2008-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-vxwext__kernel.adb b/gcc/ada/libgnarl/s-vxwext__kernel.adb
index d032524..27b3046 100644
--- a/gcc/ada/libgnarl/s-vxwext__kernel.adb
+++ b/gcc/ada/libgnarl/s-vxwext__kernel.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2008-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2008-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-vxwext__kernel.ads b/gcc/ada/libgnarl/s-vxwext__kernel.ads
index 55f5d52..6665099 100644
--- a/gcc/ada/libgnarl/s-vxwext__kernel.ads
+++ b/gcc/ada/libgnarl/s-vxwext__kernel.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2008-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2008-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-vxwext__rtp-smp.adb b/gcc/ada/libgnarl/s-vxwext__rtp-smp.adb
index 899eea2..b98bdf5 100644
--- a/gcc/ada/libgnarl/s-vxwext__rtp-smp.adb
+++ b/gcc/ada/libgnarl/s-vxwext__rtp-smp.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2008-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2008-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-vxwext__rtp.adb b/gcc/ada/libgnarl/s-vxwext__rtp.adb
index eee1a81..fbc2878 100644
--- a/gcc/ada/libgnarl/s-vxwext__rtp.adb
+++ b/gcc/ada/libgnarl/s-vxwext__rtp.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2008-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2008-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-vxwext__rtp.ads b/gcc/ada/libgnarl/s-vxwext__rtp.ads
index 32a79b6..a13db60 100644
--- a/gcc/ada/libgnarl/s-vxwext__rtp.ads
+++ b/gcc/ada/libgnarl/s-vxwext__rtp.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2008-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2008-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-vxwork__aarch64.ads b/gcc/ada/libgnarl/s-vxwork__aarch64.ads
index 4fe183c..9e1d5c6 100644
--- a/gcc/ada/libgnarl/s-vxwork__aarch64.ads
+++ b/gcc/ada/libgnarl/s-vxwork__aarch64.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1998-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1998-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-vxwork__arm.ads b/gcc/ada/libgnarl/s-vxwork__arm.ads
index fa6b345..dbef5c6 100644
--- a/gcc/ada/libgnarl/s-vxwork__arm.ads
+++ b/gcc/ada/libgnarl/s-vxwork__arm.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1998-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1998-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-vxwork__ppc.ads b/gcc/ada/libgnarl/s-vxwork__ppc.ads
index 3575892..6b84d1f 100644
--- a/gcc/ada/libgnarl/s-vxwork__ppc.ads
+++ b/gcc/ada/libgnarl/s-vxwork__ppc.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1998-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1998-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/s-vxwork__x86.ads b/gcc/ada/libgnarl/s-vxwork__x86.ads
index 5a16ec3d..b80d26c 100644
--- a/gcc/ada/libgnarl/s-vxwork__x86.ads
+++ b/gcc/ada/libgnarl/s-vxwork__x86.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1998-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1998-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnarl/thread.c b/gcc/ada/libgnarl/thread.c
index a03b473..23a1e25 100644
--- a/gcc/ada/libgnarl/thread.c
+++ b/gcc/ada/libgnarl/thread.c
@@ -6,7 +6,7 @@
* *
* C Implementation File *
* *
- * Copyright (C) 2011-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 2011-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/libgnat/a-assert.adb b/gcc/ada/libgnat/a-assert.adb
index 380811a..21bd80f 100644
--- a/gcc/ada/libgnat/a-assert.adb
+++ b/gcc/ada/libgnat/a-assert.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2007-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2007-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-assert.ads b/gcc/ada/libgnat/a-assert.ads
index e77c9d8..eba19d4 100644
--- a/gcc/ada/libgnat/a-assert.ads
+++ b/gcc/ada/libgnat/a-assert.ads
@@ -4,7 +4,7 @@
-- --
-- A D A . A S S E R T I O N S --
-- --
--- Copyright (C) 2015-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2015-2024, Free Software Foundation, Inc. --
-- --
-- S p e c --
-- --
diff --git a/gcc/ada/libgnat/a-btgbso.adb b/gcc/ada/libgnat/a-btgbso.adb
index 1b1df41..a0f9569 100644
--- a/gcc/ada/libgnat/a-btgbso.adb
+++ b/gcc/ada/libgnat/a-btgbso.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-btgbso.ads b/gcc/ada/libgnat/a-btgbso.ads
index d85ab00..5478195 100644
--- a/gcc/ada/libgnat/a-btgbso.ads
+++ b/gcc/ada/libgnat/a-btgbso.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-calari.adb b/gcc/ada/libgnat/a-calari.adb
index 605f475..66f5ea6 100644
--- a/gcc/ada/libgnat/a-calari.adb
+++ b/gcc/ada/libgnat/a-calari.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2006-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2006-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-calari.ads b/gcc/ada/libgnat/a-calari.ads
index a4b1731..c052060 100644
--- a/gcc/ada/libgnat/a-calari.ads
+++ b/gcc/ada/libgnat/a-calari.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2005-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2005-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely --
diff --git a/gcc/ada/libgnat/a-calcon.adb b/gcc/ada/libgnat/a-calcon.adb
index 650d271..8654d1e 100644
--- a/gcc/ada/libgnat/a-calcon.adb
+++ b/gcc/ada/libgnat/a-calcon.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2008-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2008-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-calcon.ads b/gcc/ada/libgnat/a-calcon.ads
index 4c502b0..97df2a9 100644
--- a/gcc/ada/libgnat/a-calcon.ads
+++ b/gcc/ada/libgnat/a-calcon.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2008-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2008-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-caldel.adb b/gcc/ada/libgnat/a-caldel.adb
index da2e548..a38ed39 100644
--- a/gcc/ada/libgnat/a-caldel.adb
+++ b/gcc/ada/libgnat/a-caldel.adb
@@ -7,7 +7,7 @@
-- B o d y --
-- --
-- Copyright (C) 1991-2017, Florida State University --
--- Copyright (C) 1995-2023, AdaCore --
+-- Copyright (C) 1995-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-caldel.ads b/gcc/ada/libgnat/a-caldel.ads
index 3772c34..851a08c 100644
--- a/gcc/ada/libgnat/a-caldel.ads
+++ b/gcc/ada/libgnat/a-caldel.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-calend.adb b/gcc/ada/libgnat/a-calend.adb
index cf6f6b7..1083ece 100644
--- a/gcc/ada/libgnat/a-calend.adb
+++ b/gcc/ada/libgnat/a-calend.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-calend.ads b/gcc/ada/libgnat/a-calend.ads
index d67bf07..9625f4d 100644
--- a/gcc/ada/libgnat/a-calend.ads
+++ b/gcc/ada/libgnat/a-calend.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-calfor.adb b/gcc/ada/libgnat/a-calfor.adb
index 493728b..3761145 100644
--- a/gcc/ada/libgnat/a-calfor.adb
+++ b/gcc/ada/libgnat/a-calfor.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2006-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2006-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-calfor.ads b/gcc/ada/libgnat/a-calfor.ads
index cdbe4e8..62d6108 100644
--- a/gcc/ada/libgnat/a-calfor.ads
+++ b/gcc/ada/libgnat/a-calfor.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2005-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2005-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely --
diff --git a/gcc/ada/libgnat/a-catizo.adb b/gcc/ada/libgnat/a-catizo.adb
index 36bcd0b..777a080 100644
--- a/gcc/ada/libgnat/a-catizo.adb
+++ b/gcc/ada/libgnat/a-catizo.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-cbdlli.adb b/gcc/ada/libgnat/a-cbdlli.adb
index 6737605..ed17ecf 100644
--- a/gcc/ada/libgnat/a-cbdlli.adb
+++ b/gcc/ada/libgnat/a-cbdlli.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-cbdlli.ads b/gcc/ada/libgnat/a-cbdlli.ads
index b881053..70a11ff 100644
--- a/gcc/ada/libgnat/a-cbdlli.ads
+++ b/gcc/ada/libgnat/a-cbdlli.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-cbhama.adb b/gcc/ada/libgnat/a-cbhama.adb
index 68ab61a..6c1fe28 100644
--- a/gcc/ada/libgnat/a-cbhama.adb
+++ b/gcc/ada/libgnat/a-cbhama.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-cbhama.ads b/gcc/ada/libgnat/a-cbhama.ads
index bded717..7eaf2e5 100644
--- a/gcc/ada/libgnat/a-cbhama.ads
+++ b/gcc/ada/libgnat/a-cbhama.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-cbhase.adb b/gcc/ada/libgnat/a-cbhase.adb
index 0df3dd9..99235ce 100644
--- a/gcc/ada/libgnat/a-cbhase.adb
+++ b/gcc/ada/libgnat/a-cbhase.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-cbhase.ads b/gcc/ada/libgnat/a-cbhase.ads
index 3b96f69..79f0ae5 100644
--- a/gcc/ada/libgnat/a-cbhase.ads
+++ b/gcc/ada/libgnat/a-cbhase.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-cbmutr.adb b/gcc/ada/libgnat/a-cbmutr.adb
index 0ffc756..1f31e47 100644
--- a/gcc/ada/libgnat/a-cbmutr.adb
+++ b/gcc/ada/libgnat/a-cbmutr.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-cbmutr.ads b/gcc/ada/libgnat/a-cbmutr.ads
index 015c28b..25a9250 100644
--- a/gcc/ada/libgnat/a-cbmutr.ads
+++ b/gcc/ada/libgnat/a-cbmutr.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2014-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2014-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-cborma.adb b/gcc/ada/libgnat/a-cborma.adb
index 7972bb8..d844d0d 100644
--- a/gcc/ada/libgnat/a-cborma.adb
+++ b/gcc/ada/libgnat/a-cborma.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-cborma.ads b/gcc/ada/libgnat/a-cborma.ads
index 0cfdd76..0ef6e85 100644
--- a/gcc/ada/libgnat/a-cborma.ads
+++ b/gcc/ada/libgnat/a-cborma.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-cborse.adb b/gcc/ada/libgnat/a-cborse.adb
index 62b6872..b649c5e 100644
--- a/gcc/ada/libgnat/a-cborse.adb
+++ b/gcc/ada/libgnat/a-cborse.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-cborse.ads b/gcc/ada/libgnat/a-cborse.ads
index 26d0305..2366d1a 100644
--- a/gcc/ada/libgnat/a-cborse.ads
+++ b/gcc/ada/libgnat/a-cborse.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-cbprqu.adb b/gcc/ada/libgnat/a-cbprqu.adb
index 170db7a..e31f81a 100644
--- a/gcc/ada/libgnat/a-cbprqu.adb
+++ b/gcc/ada/libgnat/a-cbprqu.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-cbprqu.ads b/gcc/ada/libgnat/a-cbprqu.ads
index 45d3fef..0803397 100644
--- a/gcc/ada/libgnat/a-cbprqu.ads
+++ b/gcc/ada/libgnat/a-cbprqu.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-cbsyqu.adb b/gcc/ada/libgnat/a-cbsyqu.adb
index 42ac4d9..e638228 100644
--- a/gcc/ada/libgnat/a-cbsyqu.adb
+++ b/gcc/ada/libgnat/a-cbsyqu.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-cbsyqu.ads b/gcc/ada/libgnat/a-cbsyqu.ads
index 89c15c6..db6cee9 100644
--- a/gcc/ada/libgnat/a-cbsyqu.ads
+++ b/gcc/ada/libgnat/a-cbsyqu.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-cdlili.adb b/gcc/ada/libgnat/a-cdlili.adb
index 7b03e04..6a498f7 100644
--- a/gcc/ada/libgnat/a-cdlili.adb
+++ b/gcc/ada/libgnat/a-cdlili.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-cdlili.ads b/gcc/ada/libgnat/a-cdlili.ads
index b5eb755..d56e279 100644
--- a/gcc/ada/libgnat/a-cdlili.ads
+++ b/gcc/ada/libgnat/a-cdlili.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-cfdlli.ads b/gcc/ada/libgnat/a-cfdlli.ads
index c6f03a2..19e0b97 100644
--- a/gcc/ada/libgnat/a-cfdlli.ads
+++ b/gcc/ada/libgnat/a-cfdlli.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-cfhama.ads b/gcc/ada/libgnat/a-cfhama.ads
index bfb5559..660931c 100644
--- a/gcc/ada/libgnat/a-cfhama.ads
+++ b/gcc/ada/libgnat/a-cfhama.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-cfhase.ads b/gcc/ada/libgnat/a-cfhase.ads
index 0f76c7b..e195213 100644
--- a/gcc/ada/libgnat/a-cfhase.ads
+++ b/gcc/ada/libgnat/a-cfhase.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-cfidll.ads b/gcc/ada/libgnat/a-cfidll.ads
index 2173c1e..71d18d1 100644
--- a/gcc/ada/libgnat/a-cfidll.ads
+++ b/gcc/ada/libgnat/a-cfidll.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2022-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2022-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-cfinse.ads b/gcc/ada/libgnat/a-cfinse.ads
index 2efd5c8..74a09cd 100644
--- a/gcc/ada/libgnat/a-cfinse.ads
+++ b/gcc/ada/libgnat/a-cfinse.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2022-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2022-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-cfinve.ads b/gcc/ada/libgnat/a-cfinve.ads
index 50c6959..64f2c53 100644
--- a/gcc/ada/libgnat/a-cfinve.ads
+++ b/gcc/ada/libgnat/a-cfinve.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2014-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2014-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-cforma.ads b/gcc/ada/libgnat/a-cforma.ads
index ecd5f8a..207e22f 100644
--- a/gcc/ada/libgnat/a-cforma.ads
+++ b/gcc/ada/libgnat/a-cforma.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-cforse.ads b/gcc/ada/libgnat/a-cforse.ads
index af5cebf..a8e1b7d 100644
--- a/gcc/ada/libgnat/a-cforse.ads
+++ b/gcc/ada/libgnat/a-cforse.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-cgaaso.adb b/gcc/ada/libgnat/a-cgaaso.adb
index 89e3fe1..9254b46 100644
--- a/gcc/ada/libgnat/a-cgaaso.adb
+++ b/gcc/ada/libgnat/a-cgaaso.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-cgaaso.ads b/gcc/ada/libgnat/a-cgaaso.ads
index 08a5864..99b6217 100644
--- a/gcc/ada/libgnat/a-cgaaso.ads
+++ b/gcc/ada/libgnat/a-cgaaso.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-cgarso.adb b/gcc/ada/libgnat/a-cgarso.adb
index 64aff3d..cdb098f 100644
--- a/gcc/ada/libgnat/a-cgarso.adb
+++ b/gcc/ada/libgnat/a-cgarso.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-cgcaso.adb b/gcc/ada/libgnat/a-cgcaso.adb
index 3ec61c9..9373d4a 100644
--- a/gcc/ada/libgnat/a-cgcaso.adb
+++ b/gcc/ada/libgnat/a-cgcaso.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-chacon.adb b/gcc/ada/libgnat/a-chacon.adb
index 2352fb4..4b53ef0 100644
--- a/gcc/ada/libgnat/a-chacon.adb
+++ b/gcc/ada/libgnat/a-chacon.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2005-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2005-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-chacon.ads b/gcc/ada/libgnat/a-chacon.ads
index 8140a76..ed7f7c1 100644
--- a/gcc/ada/libgnat/a-chacon.ads
+++ b/gcc/ada/libgnat/a-chacon.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2005-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2005-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-chahan.adb b/gcc/ada/libgnat/a-chahan.adb
index bb50934..0337ee9 100644
--- a/gcc/ada/libgnat/a-chahan.adb
+++ b/gcc/ada/libgnat/a-chahan.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-chahan.ads b/gcc/ada/libgnat/a-chahan.ads
index 89b2d68..a61e291 100644
--- a/gcc/ada/libgnat/a-chahan.ads
+++ b/gcc/ada/libgnat/a-chahan.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-chlat9.ads b/gcc/ada/libgnat/a-chlat9.ads
index 7a19985..4da0187 100644
--- a/gcc/ada/libgnat/a-chlat9.ads
+++ b/gcc/ada/libgnat/a-chlat9.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-chtgbk.adb b/gcc/ada/libgnat/a-chtgbk.adb
index 5396e67..b5cd957 100644
--- a/gcc/ada/libgnat/a-chtgbk.adb
+++ b/gcc/ada/libgnat/a-chtgbk.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-chtgbk.ads b/gcc/ada/libgnat/a-chtgbk.ads
index 0bc8e09..982e1a9 100644
--- a/gcc/ada/libgnat/a-chtgbk.ads
+++ b/gcc/ada/libgnat/a-chtgbk.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-chtgbo.adb b/gcc/ada/libgnat/a-chtgbo.adb
index 37e9257..d6c97bf 100644
--- a/gcc/ada/libgnat/a-chtgbo.adb
+++ b/gcc/ada/libgnat/a-chtgbo.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-chtgbo.ads b/gcc/ada/libgnat/a-chtgbo.ads
index 6bb6b33..4b67808 100644
--- a/gcc/ada/libgnat/a-chtgbo.ads
+++ b/gcc/ada/libgnat/a-chtgbo.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-chtgfk.adb b/gcc/ada/libgnat/a-chtgfk.adb
index a87ef07..1e0dd8a 100644
--- a/gcc/ada/libgnat/a-chtgfk.adb
+++ b/gcc/ada/libgnat/a-chtgfk.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-chtgfk.ads b/gcc/ada/libgnat/a-chtgfk.ads
index 6b0f559..a2ce37c 100644
--- a/gcc/ada/libgnat/a-chtgfk.ads
+++ b/gcc/ada/libgnat/a-chtgfk.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-chtgfo.adb b/gcc/ada/libgnat/a-chtgfo.adb
index de42c04..c3fff33 100644
--- a/gcc/ada/libgnat/a-chtgfo.adb
+++ b/gcc/ada/libgnat/a-chtgfo.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-chtgfo.ads b/gcc/ada/libgnat/a-chtgfo.ads
index 692d009..76633d8 100644
--- a/gcc/ada/libgnat/a-chtgfo.ads
+++ b/gcc/ada/libgnat/a-chtgfo.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-chtgke.adb b/gcc/ada/libgnat/a-chtgke.adb
index 81b2eb8..59cfea5 100644
--- a/gcc/ada/libgnat/a-chtgke.adb
+++ b/gcc/ada/libgnat/a-chtgke.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-chtgke.ads b/gcc/ada/libgnat/a-chtgke.ads
index f969771..34cf492 100644
--- a/gcc/ada/libgnat/a-chtgke.ads
+++ b/gcc/ada/libgnat/a-chtgke.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-chtgop.adb b/gcc/ada/libgnat/a-chtgop.adb
index c617c0a..d7402d2 100644
--- a/gcc/ada/libgnat/a-chtgop.adb
+++ b/gcc/ada/libgnat/a-chtgop.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-chtgop.ads b/gcc/ada/libgnat/a-chtgop.ads
index b06c2e1..219c762 100644
--- a/gcc/ada/libgnat/a-chtgop.ads
+++ b/gcc/ada/libgnat/a-chtgop.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-chzla1.ads b/gcc/ada/libgnat/a-chzla1.ads
index bb92b6d..f8495cd 100644
--- a/gcc/ada/libgnat/a-chzla1.ads
+++ b/gcc/ada/libgnat/a-chzla1.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-chzla9.ads b/gcc/ada/libgnat/a-chzla9.ads
index d5dca6c5..a5083ec 100644
--- a/gcc/ada/libgnat/a-chzla9.ads
+++ b/gcc/ada/libgnat/a-chzla9.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-cidlli.adb b/gcc/ada/libgnat/a-cidlli.adb
index 9e6ad70..e44d8b5 100644
--- a/gcc/ada/libgnat/a-cidlli.adb
+++ b/gcc/ada/libgnat/a-cidlli.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-cidlli.ads b/gcc/ada/libgnat/a-cidlli.ads
index 256a5b7..d1df98b 100644
--- a/gcc/ada/libgnat/a-cidlli.ads
+++ b/gcc/ada/libgnat/a-cidlli.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-cihama.adb b/gcc/ada/libgnat/a-cihama.adb
index 325e00b..2f697ec 100644
--- a/gcc/ada/libgnat/a-cihama.adb
+++ b/gcc/ada/libgnat/a-cihama.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-cihama.ads b/gcc/ada/libgnat/a-cihama.ads
index 61297af..da4ed3a 100644
--- a/gcc/ada/libgnat/a-cihama.ads
+++ b/gcc/ada/libgnat/a-cihama.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-cihase.adb b/gcc/ada/libgnat/a-cihase.adb
index c8de302..21bf4cf 100644
--- a/gcc/ada/libgnat/a-cihase.adb
+++ b/gcc/ada/libgnat/a-cihase.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-cihase.ads b/gcc/ada/libgnat/a-cihase.ads
index e30006d..426b4a2 100644
--- a/gcc/ada/libgnat/a-cihase.ads
+++ b/gcc/ada/libgnat/a-cihase.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-cimutr.adb b/gcc/ada/libgnat/a-cimutr.adb
index 6715c7e..04b0512 100644
--- a/gcc/ada/libgnat/a-cimutr.adb
+++ b/gcc/ada/libgnat/a-cimutr.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-cimutr.ads b/gcc/ada/libgnat/a-cimutr.ads
index 3ce546a..5c667ff 100644
--- a/gcc/ada/libgnat/a-cimutr.ads
+++ b/gcc/ada/libgnat/a-cimutr.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-ciorma.adb b/gcc/ada/libgnat/a-ciorma.adb
index bbc79b7..a6efe74 100644
--- a/gcc/ada/libgnat/a-ciorma.adb
+++ b/gcc/ada/libgnat/a-ciorma.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-ciorma.ads b/gcc/ada/libgnat/a-ciorma.ads
index c09c560..740dc7e 100644
--- a/gcc/ada/libgnat/a-ciorma.ads
+++ b/gcc/ada/libgnat/a-ciorma.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-ciormu.adb b/gcc/ada/libgnat/a-ciormu.adb
index 6473c88..c67b06b 100644
--- a/gcc/ada/libgnat/a-ciormu.adb
+++ b/gcc/ada/libgnat/a-ciormu.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-ciormu.ads b/gcc/ada/libgnat/a-ciormu.ads
index cacf3ad..0f4c537 100644
--- a/gcc/ada/libgnat/a-ciormu.ads
+++ b/gcc/ada/libgnat/a-ciormu.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-ciorse.adb b/gcc/ada/libgnat/a-ciorse.adb
index 3fbcdb4..d90fb88 100644
--- a/gcc/ada/libgnat/a-ciorse.adb
+++ b/gcc/ada/libgnat/a-ciorse.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-ciorse.ads b/gcc/ada/libgnat/a-ciorse.ads
index fc4250b..a8a87cd 100644
--- a/gcc/ada/libgnat/a-ciorse.ads
+++ b/gcc/ada/libgnat/a-ciorse.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-clrefi.adb b/gcc/ada/libgnat/a-clrefi.adb
index d9c24c2..60a23ac 100644
--- a/gcc/ada/libgnat/a-clrefi.adb
+++ b/gcc/ada/libgnat/a-clrefi.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2007-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2007-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-clrefi.ads b/gcc/ada/libgnat/a-clrefi.ads
index d056b5d..7bca418 100644
--- a/gcc/ada/libgnat/a-clrefi.ads
+++ b/gcc/ada/libgnat/a-clrefi.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2007-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2007-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-coboho.adb b/gcc/ada/libgnat/a-coboho.adb
index 69cb52f..9e77280 100644
--- a/gcc/ada/libgnat/a-coboho.adb
+++ b/gcc/ada/libgnat/a-coboho.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2015-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2015-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-coboho.ads b/gcc/ada/libgnat/a-coboho.ads
index 77788c3..c767a0f 100644
--- a/gcc/ada/libgnat/a-coboho.ads
+++ b/gcc/ada/libgnat/a-coboho.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2015-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2015-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-cobove.adb b/gcc/ada/libgnat/a-cobove.adb
index b0adc6e..71b744c 100644
--- a/gcc/ada/libgnat/a-cobove.adb
+++ b/gcc/ada/libgnat/a-cobove.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-cobove.ads b/gcc/ada/libgnat/a-cobove.ads
index d5bfe4b..e1f3e22 100644
--- a/gcc/ada/libgnat/a-cobove.ads
+++ b/gcc/ada/libgnat/a-cobove.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-cofove.ads b/gcc/ada/libgnat/a-cofove.ads
index 160decc..97b1b68 100644
--- a/gcc/ada/libgnat/a-cofove.ads
+++ b/gcc/ada/libgnat/a-cofove.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-cofuma.ads b/gcc/ada/libgnat/a-cofuma.ads
index 2ac5a4f..44fe8ad 100644
--- a/gcc/ada/libgnat/a-cofuma.ads
+++ b/gcc/ada/libgnat/a-cofuma.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2016-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2016-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-cofuse.ads b/gcc/ada/libgnat/a-cofuse.ads
index f36cd16..f5dad36 100644
--- a/gcc/ada/libgnat/a-cofuse.ads
+++ b/gcc/ada/libgnat/a-cofuse.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2016-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2016-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-cofuve.ads b/gcc/ada/libgnat/a-cofuve.ads
index 3d201c2..c2a655e 100644
--- a/gcc/ada/libgnat/a-cofuve.ads
+++ b/gcc/ada/libgnat/a-cofuve.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2016-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2016-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-cogeso.adb b/gcc/ada/libgnat/a-cogeso.adb
index 0b4ba2b..09a3456d 100644
--- a/gcc/ada/libgnat/a-cogeso.adb
+++ b/gcc/ada/libgnat/a-cogeso.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-cogeso.ads b/gcc/ada/libgnat/a-cogeso.ads
index 2dcc88e..252af80 100644
--- a/gcc/ada/libgnat/a-cogeso.ads
+++ b/gcc/ada/libgnat/a-cogeso.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-cohama.adb b/gcc/ada/libgnat/a-cohama.adb
index 1a124f8..1da651e 100644
--- a/gcc/ada/libgnat/a-cohama.adb
+++ b/gcc/ada/libgnat/a-cohama.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-cohama.ads b/gcc/ada/libgnat/a-cohama.ads
index 37c5bac..82660a9 100644
--- a/gcc/ada/libgnat/a-cohama.ads
+++ b/gcc/ada/libgnat/a-cohama.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-cohase.adb b/gcc/ada/libgnat/a-cohase.adb
index 84846cb..e68ba05 100644
--- a/gcc/ada/libgnat/a-cohase.adb
+++ b/gcc/ada/libgnat/a-cohase.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-cohase.ads b/gcc/ada/libgnat/a-cohase.ads
index dcbc189..8df83c2 100644
--- a/gcc/ada/libgnat/a-cohase.ads
+++ b/gcc/ada/libgnat/a-cohase.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-cohata.ads b/gcc/ada/libgnat/a-cohata.ads
index 77a83e4..2ae2be7 100644
--- a/gcc/ada/libgnat/a-cohata.ads
+++ b/gcc/ada/libgnat/a-cohata.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-coinho.adb b/gcc/ada/libgnat/a-coinho.adb
index 84bce13..3231ee4 100644
--- a/gcc/ada/libgnat/a-coinho.adb
+++ b/gcc/ada/libgnat/a-coinho.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2012-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2012-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-coinho.ads b/gcc/ada/libgnat/a-coinho.ads
index 0db1483..cc5ee18 100644
--- a/gcc/ada/libgnat/a-coinho.ads
+++ b/gcc/ada/libgnat/a-coinho.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-coinho__shared.adb b/gcc/ada/libgnat/a-coinho__shared.adb
index f49ac4a..f4ae9c8 100644
--- a/gcc/ada/libgnat/a-coinho__shared.adb
+++ b/gcc/ada/libgnat/a-coinho__shared.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2013-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2013-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-coinho__shared.ads b/gcc/ada/libgnat/a-coinho__shared.ads
index 06c8d01..ddab1fd 100644
--- a/gcc/ada/libgnat/a-coinho__shared.ads
+++ b/gcc/ada/libgnat/a-coinho__shared.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2013-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2013-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-coinve.adb b/gcc/ada/libgnat/a-coinve.adb
index dd0e8cd..c6dd778 100644
--- a/gcc/ada/libgnat/a-coinve.adb
+++ b/gcc/ada/libgnat/a-coinve.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-coinve.ads b/gcc/ada/libgnat/a-coinve.ads
index d27e972..138ec36 100644
--- a/gcc/ada/libgnat/a-coinve.ads
+++ b/gcc/ada/libgnat/a-coinve.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-colien.adb b/gcc/ada/libgnat/a-colien.adb
index 8432dfa..c9abdfe 100644
--- a/gcc/ada/libgnat/a-colien.adb
+++ b/gcc/ada/libgnat/a-colien.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1996-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1996-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-colien.ads b/gcc/ada/libgnat/a-colien.ads
index 4220835..cd2f0ec 100644
--- a/gcc/ada/libgnat/a-colien.ads
+++ b/gcc/ada/libgnat/a-colien.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1996-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1996-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-colire.adb b/gcc/ada/libgnat/a-colire.adb
index a975ae2..2d0cc49 100644
--- a/gcc/ada/libgnat/a-colire.adb
+++ b/gcc/ada/libgnat/a-colire.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1999-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1999-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-colire.ads b/gcc/ada/libgnat/a-colire.ads
index abb9582..6d3e6fb 100644
--- a/gcc/ada/libgnat/a-colire.ads
+++ b/gcc/ada/libgnat/a-colire.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1999-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1999-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-comlin.adb b/gcc/ada/libgnat/a-comlin.adb
index 8a66861..67c3ca90 100644
--- a/gcc/ada/libgnat/a-comlin.adb
+++ b/gcc/ada/libgnat/a-comlin.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-comlin.ads b/gcc/ada/libgnat/a-comlin.ads
index 5363118..be2e07f 100644
--- a/gcc/ada/libgnat/a-comlin.ads
+++ b/gcc/ada/libgnat/a-comlin.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-comutr.adb b/gcc/ada/libgnat/a-comutr.adb
index 618c086..da36929 100644
--- a/gcc/ada/libgnat/a-comutr.adb
+++ b/gcc/ada/libgnat/a-comutr.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-comutr.ads b/gcc/ada/libgnat/a-comutr.ads
index efb1f74..464b6fb 100644
--- a/gcc/ada/libgnat/a-comutr.ads
+++ b/gcc/ada/libgnat/a-comutr.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-conhel.adb b/gcc/ada/libgnat/a-conhel.adb
index cbd585d..f54b7e5 100644
--- a/gcc/ada/libgnat/a-conhel.adb
+++ b/gcc/ada/libgnat/a-conhel.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2015-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2015-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-conhel.ads b/gcc/ada/libgnat/a-conhel.ads
index 56db34e..fc363f4 100644
--- a/gcc/ada/libgnat/a-conhel.ads
+++ b/gcc/ada/libgnat/a-conhel.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2015-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2015-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-convec.adb b/gcc/ada/libgnat/a-convec.adb
index b2766eb..d2d8111 100644
--- a/gcc/ada/libgnat/a-convec.adb
+++ b/gcc/ada/libgnat/a-convec.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-convec.ads b/gcc/ada/libgnat/a-convec.ads
index 5b50ad7..bbf57df 100644
--- a/gcc/ada/libgnat/a-convec.ads
+++ b/gcc/ada/libgnat/a-convec.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-coorma.adb b/gcc/ada/libgnat/a-coorma.adb
index 98e852b..4909fc0 100644
--- a/gcc/ada/libgnat/a-coorma.adb
+++ b/gcc/ada/libgnat/a-coorma.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-coorma.ads b/gcc/ada/libgnat/a-coorma.ads
index 0ce5952..6a0ca65 100644
--- a/gcc/ada/libgnat/a-coorma.ads
+++ b/gcc/ada/libgnat/a-coorma.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-coormu.adb b/gcc/ada/libgnat/a-coormu.adb
index 5047a88..82ec3d7 100644
--- a/gcc/ada/libgnat/a-coormu.adb
+++ b/gcc/ada/libgnat/a-coormu.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-coormu.ads b/gcc/ada/libgnat/a-coormu.ads
index b7795da..8f8af0a 100644
--- a/gcc/ada/libgnat/a-coormu.ads
+++ b/gcc/ada/libgnat/a-coormu.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-coorse.adb b/gcc/ada/libgnat/a-coorse.adb
index 533b9cf..ca97fa4 100644
--- a/gcc/ada/libgnat/a-coorse.adb
+++ b/gcc/ada/libgnat/a-coorse.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-coorse.ads b/gcc/ada/libgnat/a-coorse.ads
index 19171dc..1470875 100644
--- a/gcc/ada/libgnat/a-coorse.ads
+++ b/gcc/ada/libgnat/a-coorse.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-coprnu.adb b/gcc/ada/libgnat/a-coprnu.adb
index 3b55dfd..4991a342 100644
--- a/gcc/ada/libgnat/a-coprnu.adb
+++ b/gcc/ada/libgnat/a-coprnu.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-coprnu.ads b/gcc/ada/libgnat/a-coprnu.ads
index e21b428..c509db1 100644
--- a/gcc/ada/libgnat/a-coprnu.ads
+++ b/gcc/ada/libgnat/a-coprnu.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-costso.adb b/gcc/ada/libgnat/a-costso.adb
index fb4da32..7944a94 100644
--- a/gcc/ada/libgnat/a-costso.adb
+++ b/gcc/ada/libgnat/a-costso.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1995-2023, AdaCore --
+-- Copyright (C) 1995-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-costso.ads b/gcc/ada/libgnat/a-costso.ads
index 75c2d67..89f9ff2 100644
--- a/gcc/ada/libgnat/a-costso.ads
+++ b/gcc/ada/libgnat/a-costso.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1995-2023, AdaCore --
+-- Copyright (C) 1995-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-crbltr.ads b/gcc/ada/libgnat/a-crbltr.ads
index 07b9bf9..8205a9e 100644
--- a/gcc/ada/libgnat/a-crbltr.ads
+++ b/gcc/ada/libgnat/a-crbltr.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-crbtgk.adb b/gcc/ada/libgnat/a-crbtgk.adb
index 110350c..2dc2f6e 100644
--- a/gcc/ada/libgnat/a-crbtgk.adb
+++ b/gcc/ada/libgnat/a-crbtgk.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-crbtgk.ads b/gcc/ada/libgnat/a-crbtgk.ads
index 7697a31..540853a 100644
--- a/gcc/ada/libgnat/a-crbtgk.ads
+++ b/gcc/ada/libgnat/a-crbtgk.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-crbtgo.adb b/gcc/ada/libgnat/a-crbtgo.adb
index 3f28966..335d11b 100644
--- a/gcc/ada/libgnat/a-crbtgo.adb
+++ b/gcc/ada/libgnat/a-crbtgo.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-crbtgo.ads b/gcc/ada/libgnat/a-crbtgo.ads
index 0ddf06d..1fab79f 100644
--- a/gcc/ada/libgnat/a-crbtgo.ads
+++ b/gcc/ada/libgnat/a-crbtgo.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-crdlli.adb b/gcc/ada/libgnat/a-crdlli.adb
index b09bd94..630f099 100644
--- a/gcc/ada/libgnat/a-crdlli.adb
+++ b/gcc/ada/libgnat/a-crdlli.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-crdlli.ads b/gcc/ada/libgnat/a-crdlli.ads
index fa4fe15..78e60fd 100644
--- a/gcc/ada/libgnat/a-crdlli.ads
+++ b/gcc/ada/libgnat/a-crdlli.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-csquin.ads b/gcc/ada/libgnat/a-csquin.ads
index 006da4e..046e1b7 100644
--- a/gcc/ada/libgnat/a-csquin.ads
+++ b/gcc/ada/libgnat/a-csquin.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-cuprqu.adb b/gcc/ada/libgnat/a-cuprqu.adb
index 35ad6f4..b972adf 100644
--- a/gcc/ada/libgnat/a-cuprqu.adb
+++ b/gcc/ada/libgnat/a-cuprqu.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-cuprqu.ads b/gcc/ada/libgnat/a-cuprqu.ads
index 26d2325..1015355 100644
--- a/gcc/ada/libgnat/a-cuprqu.ads
+++ b/gcc/ada/libgnat/a-cuprqu.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-cusyqu.adb b/gcc/ada/libgnat/a-cusyqu.adb
index 1c645e8..28aae79 100644
--- a/gcc/ada/libgnat/a-cusyqu.adb
+++ b/gcc/ada/libgnat/a-cusyqu.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-cusyqu.ads b/gcc/ada/libgnat/a-cusyqu.ads
index 546dd3c..8099eda 100644
--- a/gcc/ada/libgnat/a-cusyqu.ads
+++ b/gcc/ada/libgnat/a-cusyqu.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-cwila1.ads b/gcc/ada/libgnat/a-cwila1.ads
index 826faf4..c6434ca 100644
--- a/gcc/ada/libgnat/a-cwila1.ads
+++ b/gcc/ada/libgnat/a-cwila1.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-cwila9.ads b/gcc/ada/libgnat/a-cwila9.ads
index 2ffa433..2b66e7c 100644
--- a/gcc/ada/libgnat/a-cwila9.ads
+++ b/gcc/ada/libgnat/a-cwila9.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-decima.adb b/gcc/ada/libgnat/a-decima.adb
index 9659904..2bbe3f9 100644
--- a/gcc/ada/libgnat/a-decima.adb
+++ b/gcc/ada/libgnat/a-decima.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-decima.ads b/gcc/ada/libgnat/a-decima.ads
index 31662de..a74b28e 100644
--- a/gcc/ada/libgnat/a-decima.ads
+++ b/gcc/ada/libgnat/a-decima.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-decima__128.ads b/gcc/ada/libgnat/a-decima__128.ads
index ac8bec0..b06014b 100644
--- a/gcc/ada/libgnat/a-decima__128.ads
+++ b/gcc/ada/libgnat/a-decima__128.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-dhfina.adb b/gcc/ada/libgnat/a-dhfina.adb
index 9435cc0..97e02c7 100644
--- a/gcc/ada/libgnat/a-dhfina.adb
+++ b/gcc/ada/libgnat/a-dhfina.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-dhfina.ads b/gcc/ada/libgnat/a-dhfina.ads
index 03926d0..534487e 100644
--- a/gcc/ada/libgnat/a-dhfina.ads
+++ b/gcc/ada/libgnat/a-dhfina.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-diocst.adb b/gcc/ada/libgnat/a-diocst.adb
index 2c0447b..6e353fcc 100644
--- a/gcc/ada/libgnat/a-diocst.adb
+++ b/gcc/ada/libgnat/a-diocst.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-diocst.ads b/gcc/ada/libgnat/a-diocst.ads
index 17b4f2e..081aecc 100644
--- a/gcc/ada/libgnat/a-diocst.ads
+++ b/gcc/ada/libgnat/a-diocst.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-direct.adb b/gcc/ada/libgnat/a-direct.adb
index 594971c..9e399c1 100644
--- a/gcc/ada/libgnat/a-direct.adb
+++ b/gcc/ada/libgnat/a-direct.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-direct.ads b/gcc/ada/libgnat/a-direct.ads
index c7cb794..f562a9f 100644
--- a/gcc/ada/libgnat/a-direct.ads
+++ b/gcc/ada/libgnat/a-direct.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived for use with GNAT from AI-00248, which is --
-- expected to be a part of a future expected revised Ada Reference Manual. --
diff --git a/gcc/ada/libgnat/a-direio.adb b/gcc/ada/libgnat/a-direio.adb
index 37e3391..de463ef 100644
--- a/gcc/ada/libgnat/a-direio.adb
+++ b/gcc/ada/libgnat/a-direio.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-direio.ads b/gcc/ada/libgnat/a-direio.ads
index 95c5352..011ce8e 100644
--- a/gcc/ada/libgnat/a-direio.ads
+++ b/gcc/ada/libgnat/a-direio.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-dirval.adb b/gcc/ada/libgnat/a-dirval.adb
index fc041b7..82b9078 100644
--- a/gcc/ada/libgnat/a-dirval.adb
+++ b/gcc/ada/libgnat/a-dirval.adb
@@ -7,7 +7,7 @@
-- B o d y --
-- (POSIX Version) --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-dirval.ads b/gcc/ada/libgnat/a-dirval.ads
index 7c4b337..25d20fe 100644
--- a/gcc/ada/libgnat/a-dirval.ads
+++ b/gcc/ada/libgnat/a-dirval.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-dirval__mingw.adb b/gcc/ada/libgnat/a-dirval__mingw.adb
index 8d597b2..4e3ec1e 100644
--- a/gcc/ada/libgnat/a-dirval__mingw.adb
+++ b/gcc/ada/libgnat/a-dirval__mingw.adb
@@ -7,7 +7,7 @@
-- B o d y --
-- (Windows Version) --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-einuoc.adb b/gcc/ada/libgnat/a-einuoc.adb
index baeabb9..e859f22 100644
--- a/gcc/ada/libgnat/a-einuoc.adb
+++ b/gcc/ada/libgnat/a-einuoc.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2000-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2000-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-einuoc.ads b/gcc/ada/libgnat/a-einuoc.ads
index 279ed2e..40772d8 100644
--- a/gcc/ada/libgnat/a-einuoc.ads
+++ b/gcc/ada/libgnat/a-einuoc.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2000-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2000-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-elchha.adb b/gcc/ada/libgnat/a-elchha.adb
index 2037bbb..2676782 100644
--- a/gcc/ada/libgnat/a-elchha.adb
+++ b/gcc/ada/libgnat/a-elchha.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2003-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2003-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-elchha.ads b/gcc/ada/libgnat/a-elchha.ads
index ee8af90..c0a11b5 100644
--- a/gcc/ada/libgnat/a-elchha.ads
+++ b/gcc/ada/libgnat/a-elchha.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2003-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2003-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-envvar.adb b/gcc/ada/libgnat/a-envvar.adb
index 00f6dcd..30a356d 100644
--- a/gcc/ada/libgnat/a-envvar.adb
+++ b/gcc/ada/libgnat/a-envvar.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-excach.adb b/gcc/ada/libgnat/a-excach.adb
index 784194d..e7f5b79 100644
--- a/gcc/ada/libgnat/a-excach.adb
+++ b/gcc/ada/libgnat/a-excach.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-except.adb b/gcc/ada/libgnat/a-except.adb
index dd5edaf..61cd256 100644
--- a/gcc/ada/libgnat/a-except.adb
+++ b/gcc/ada/libgnat/a-except.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-except.ads b/gcc/ada/libgnat/a-except.ads
index d618f78..605db8d 100644
--- a/gcc/ada/libgnat/a-except.ads
+++ b/gcc/ada/libgnat/a-except.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-exctra.adb b/gcc/ada/libgnat/a-exctra.adb
index 34c3621..87d8f29 100644
--- a/gcc/ada/libgnat/a-exctra.adb
+++ b/gcc/ada/libgnat/a-exctra.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1999-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1999-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-exctra.ads b/gcc/ada/libgnat/a-exctra.ads
index 6f2f170..e51dfa2 100644
--- a/gcc/ada/libgnat/a-exctra.ads
+++ b/gcc/ada/libgnat/a-exctra.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1999-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1999-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-exexda.adb b/gcc/ada/libgnat/a-exexda.adb
index 1683dc8..a42f527 100644
--- a/gcc/ada/libgnat/a-exexda.adb
+++ b/gcc/ada/libgnat/a-exexda.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-exexpr.adb b/gcc/ada/libgnat/a-exexpr.adb
index 7b3faec..4ef68c5 100644
--- a/gcc/ada/libgnat/a-exexpr.adb
+++ b/gcc/ada/libgnat/a-exexpr.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-exextr.adb b/gcc/ada/libgnat/a-exextr.adb
index 49a13f5..16b94ba 100644
--- a/gcc/ada/libgnat/a-exextr.adb
+++ b/gcc/ada/libgnat/a-exextr.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-exstat.adb b/gcc/ada/libgnat/a-exstat.adb
index 006eaa5..d1bb922 100644
--- a/gcc/ada/libgnat/a-exstat.adb
+++ b/gcc/ada/libgnat/a-exstat.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-finali.adb b/gcc/ada/libgnat/a-finali.adb
index acc7ac98..164a73f 100644
--- a/gcc/ada/libgnat/a-finali.adb
+++ b/gcc/ada/libgnat/a-finali.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-finali.ads b/gcc/ada/libgnat/a-finali.ads
index 9853a62..5c03267 100644
--- a/gcc/ada/libgnat/a-finali.ads
+++ b/gcc/ada/libgnat/a-finali.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-locale.adb b/gcc/ada/libgnat/a-locale.adb
index 172ba77..ce797ad 100644
--- a/gcc/ada/libgnat/a-locale.adb
+++ b/gcc/ada/libgnat/a-locale.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2010-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2010-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-locale.ads b/gcc/ada/libgnat/a-locale.ads
index f6a026cc..8aa160f 100644
--- a/gcc/ada/libgnat/a-locale.ads
+++ b/gcc/ada/libgnat/a-locale.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2010-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2010-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely --
diff --git a/gcc/ada/libgnat/a-nagefl.ads b/gcc/ada/libgnat/a-nagefl.ads
index f2590e4..20a4583 100644
--- a/gcc/ada/libgnat/a-nagefl.ads
+++ b/gcc/ada/libgnat/a-nagefl.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (Generic Wrapper) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-naliop.ads b/gcc/ada/libgnat/a-naliop.ads
index f5149c9..0fd0c30 100644
--- a/gcc/ada/libgnat/a-naliop.ads
+++ b/gcc/ada/libgnat/a-naliop.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2023, AdaCore --
+-- Copyright (C) 2001-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-naliop__nolibm.ads b/gcc/ada/libgnat/a-naliop__nolibm.ads
index 75a7c9a..90c11d8 100644
--- a/gcc/ada/libgnat/a-naliop__nolibm.ads
+++ b/gcc/ada/libgnat/a-naliop__nolibm.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2023, AdaCore --
+-- Copyright (C) 2001-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-nallfl.ads b/gcc/ada/libgnat/a-nallfl.ads
index e38762a..3c7492d 100644
--- a/gcc/ada/libgnat/a-nallfl.ads
+++ b/gcc/ada/libgnat/a-nallfl.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (Instrinsic Version, Long Long Float) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-nallfl__wraplf.ads b/gcc/ada/libgnat/a-nallfl__wraplf.ads
index b65faa7..01746db 100644
--- a/gcc/ada/libgnat/a-nallfl__wraplf.ads
+++ b/gcc/ada/libgnat/a-nallfl__wraplf.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (Long Long Float Wrapper in terms of Long Float) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-nalofl.ads b/gcc/ada/libgnat/a-nalofl.ads
index 8a722d1..5e8f5c9 100644
--- a/gcc/ada/libgnat/a-nalofl.ads
+++ b/gcc/ada/libgnat/a-nalofl.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (Intrinsic Version, Long Float) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-nalofl__simd.ads b/gcc/ada/libgnat/a-nalofl__simd.ads
index c515875..73d9a24 100644
--- a/gcc/ada/libgnat/a-nalofl__simd.ads
+++ b/gcc/ada/libgnat/a-nalofl__simd.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (Intrinsic/SIMD Version, Long Float) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-nashfl.ads b/gcc/ada/libgnat/a-nashfl.ads
index f19e7f0..98c8216 100644
--- a/gcc/ada/libgnat/a-nashfl.ads
+++ b/gcc/ada/libgnat/a-nashfl.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (Short Float Wrapper in terms of Float) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-nashfl__wraplf.ads b/gcc/ada/libgnat/a-nashfl__wraplf.ads
index d59f99d..51a369a 100644
--- a/gcc/ada/libgnat/a-nashfl__wraplf.ads
+++ b/gcc/ada/libgnat/a-nashfl__wraplf.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (Short Float Wrapper in terms of Long Float) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-nbnbig.adb b/gcc/ada/libgnat/a-nbnbig.adb
index 5218c02..fcfe15c 100644
--- a/gcc/ada/libgnat/a-nbnbig.adb
+++ b/gcc/ada/libgnat/a-nbnbig.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2021-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2021-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-nbnbin.adb b/gcc/ada/libgnat/a-nbnbin.adb
index 090f408..91074cf 100644
--- a/gcc/ada/libgnat/a-nbnbin.adb
+++ b/gcc/ada/libgnat/a-nbnbin.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2019-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2019-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-nbnbin__gmp.adb b/gcc/ada/libgnat/a-nbnbin__gmp.adb
index 00b4b0e..82e7662 100644
--- a/gcc/ada/libgnat/a-nbnbin__gmp.adb
+++ b/gcc/ada/libgnat/a-nbnbin__gmp.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2019-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2019-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-nbnbre.adb b/gcc/ada/libgnat/a-nbnbre.adb
index 3c72082..c43e7f3 100644
--- a/gcc/ada/libgnat/a-nbnbre.adb
+++ b/gcc/ada/libgnat/a-nbnbre.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2019-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2019-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-ngcefu.adb b/gcc/ada/libgnat/a-ngcefu.adb
index 310a2f4..37509a3 100644
--- a/gcc/ada/libgnat/a-ngcefu.adb
+++ b/gcc/ada/libgnat/a-ngcefu.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-ngcoar.adb b/gcc/ada/libgnat/a-ngcoar.adb
index 00b0d3e..4c9c0ad 100644
--- a/gcc/ada/libgnat/a-ngcoar.adb
+++ b/gcc/ada/libgnat/a-ngcoar.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2006-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2006-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-ngcoty.adb b/gcc/ada/libgnat/a-ngcoty.adb
index 36b324b..6c3469c 100644
--- a/gcc/ada/libgnat/a-ngcoty.adb
+++ b/gcc/ada/libgnat/a-ngcoty.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-ngcoty.ads b/gcc/ada/libgnat/a-ngcoty.ads
index 80272d9..74b6eaa 100644
--- a/gcc/ada/libgnat/a-ngcoty.ads
+++ b/gcc/ada/libgnat/a-ngcoty.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-ngelfu.adb b/gcc/ada/libgnat/a-ngelfu.adb
index 687401d..c4f1b2d 100644
--- a/gcc/ada/libgnat/a-ngelfu.adb
+++ b/gcc/ada/libgnat/a-ngelfu.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-ngelfu.ads b/gcc/ada/libgnat/a-ngelfu.ads
index 444d1a3..0dfea78 100644
--- a/gcc/ada/libgnat/a-ngelfu.ads
+++ b/gcc/ada/libgnat/a-ngelfu.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2012-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2012-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-ngrear.adb b/gcc/ada/libgnat/a-ngrear.adb
index 8eff100..e70617f 100644
--- a/gcc/ada/libgnat/a-ngrear.adb
+++ b/gcc/ada/libgnat/a-ngrear.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2006-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2006-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-ngrear.ads b/gcc/ada/libgnat/a-ngrear.ads
index 403b4d3..435b005 100644
--- a/gcc/ada/libgnat/a-ngrear.ads
+++ b/gcc/ada/libgnat/a-ngrear.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-nuauco.ads b/gcc/ada/libgnat/a-nuauco.ads
index bf7dd86..a4478aa 100644
--- a/gcc/ada/libgnat/a-nuauco.ads
+++ b/gcc/ada/libgnat/a-nuauco.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2023, AdaCore --
+-- Copyright (C) 2001-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-nuauco__x86.ads b/gcc/ada/libgnat/a-nuauco__x86.ads
index 1cc9e37..82307bb 100644
--- a/gcc/ada/libgnat/a-nuauco__x86.ads
+++ b/gcc/ada/libgnat/a-nuauco__x86.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2023, AdaCore --
+-- Copyright (C) 2001-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-nuaufl.ads b/gcc/ada/libgnat/a-nuaufl.ads
index a9925f2..5e893f5 100644
--- a/gcc/ada/libgnat/a-nuaufl.ads
+++ b/gcc/ada/libgnat/a-nuaufl.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (Intrinsic Version, Float) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-nuaufl__simd.ads b/gcc/ada/libgnat/a-nuaufl__simd.ads
index 2ad7b32..680da5a 100644
--- a/gcc/ada/libgnat/a-nuaufl__simd.ads
+++ b/gcc/ada/libgnat/a-nuaufl__simd.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (Intrinsic/SIMD Version, Float) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-nuaufl__wraplf.ads b/gcc/ada/libgnat/a-nuaufl__wraplf.ads
index 7cb3eed..312229b 100644
--- a/gcc/ada/libgnat/a-nuaufl__wraplf.ads
+++ b/gcc/ada/libgnat/a-nuaufl__wraplf.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (Double-based Version, Float) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-nudira.adb b/gcc/ada/libgnat/a-nudira.adb
index 233b736..5d8cfb2 100644
--- a/gcc/ada/libgnat/a-nudira.adb
+++ b/gcc/ada/libgnat/a-nudira.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-nudira.ads b/gcc/ada/libgnat/a-nudira.ads
index 4ccf781..1b3eacb 100644
--- a/gcc/ada/libgnat/a-nudira.ads
+++ b/gcc/ada/libgnat/a-nudira.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-nuflra.adb b/gcc/ada/libgnat/a-nuflra.adb
index 035f23f..bf43843 100644
--- a/gcc/ada/libgnat/a-nuflra.adb
+++ b/gcc/ada/libgnat/a-nuflra.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-nuflra.ads b/gcc/ada/libgnat/a-nuflra.ads
index 3bea855..c4100aa 100644
--- a/gcc/ada/libgnat/a-nuflra.ads
+++ b/gcc/ada/libgnat/a-nuflra.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-numaux.ads b/gcc/ada/libgnat/a-numaux.ads
index 0abb89f..0370cfc 100644
--- a/gcc/ada/libgnat/a-numaux.ads
+++ b/gcc/ada/libgnat/a-numaux.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-rbtgbk.adb b/gcc/ada/libgnat/a-rbtgbk.adb
index 55fc19e..35d7a63 100644
--- a/gcc/ada/libgnat/a-rbtgbk.adb
+++ b/gcc/ada/libgnat/a-rbtgbk.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-rbtgbk.ads b/gcc/ada/libgnat/a-rbtgbk.ads
index ea1be3e..6f6317e 100644
--- a/gcc/ada/libgnat/a-rbtgbk.ads
+++ b/gcc/ada/libgnat/a-rbtgbk.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-rbtgbo.adb b/gcc/ada/libgnat/a-rbtgbo.adb
index 2f96579..b79742f 100644
--- a/gcc/ada/libgnat/a-rbtgbo.adb
+++ b/gcc/ada/libgnat/a-rbtgbo.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-rbtgbo.ads b/gcc/ada/libgnat/a-rbtgbo.ads
index 7ea6c25..c65ffdf 100644
--- a/gcc/ada/libgnat/a-rbtgbo.ads
+++ b/gcc/ada/libgnat/a-rbtgbo.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-rbtgso.adb b/gcc/ada/libgnat/a-rbtgso.adb
index 4623cd0..5329466 100644
--- a/gcc/ada/libgnat/a-rbtgso.adb
+++ b/gcc/ada/libgnat/a-rbtgso.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-rbtgso.ads b/gcc/ada/libgnat/a-rbtgso.ads
index 3ccd852..06039e9 100644
--- a/gcc/ada/libgnat/a-rbtgso.ads
+++ b/gcc/ada/libgnat/a-rbtgso.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-sbecin.adb b/gcc/ada/libgnat/a-sbecin.adb
index 200a8b0..3d43e91 100644
--- a/gcc/ada/libgnat/a-sbecin.adb
+++ b/gcc/ada/libgnat/a-sbecin.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-sbecin.ads b/gcc/ada/libgnat/a-sbecin.ads
index f96906b..7e48fc7 100644
--- a/gcc/ada/libgnat/a-sbecin.ads
+++ b/gcc/ada/libgnat/a-sbecin.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-sbhcin.adb b/gcc/ada/libgnat/a-sbhcin.adb
index ad45c1c..18c2e03 100644
--- a/gcc/ada/libgnat/a-sbhcin.adb
+++ b/gcc/ada/libgnat/a-sbhcin.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-sbhcin.ads b/gcc/ada/libgnat/a-sbhcin.ads
index b836e26..6d987139 100644
--- a/gcc/ada/libgnat/a-sbhcin.ads
+++ b/gcc/ada/libgnat/a-sbhcin.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-sblcin.adb b/gcc/ada/libgnat/a-sblcin.adb
index 88a31e0..bcc0820 100644
--- a/gcc/ada/libgnat/a-sblcin.adb
+++ b/gcc/ada/libgnat/a-sblcin.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-sblcin.ads b/gcc/ada/libgnat/a-sblcin.ads
index 4e9f555..d414366 100644
--- a/gcc/ada/libgnat/a-sblcin.ads
+++ b/gcc/ada/libgnat/a-sblcin.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-secain.adb b/gcc/ada/libgnat/a-secain.adb
index a9f95a8..a721e07 100644
--- a/gcc/ada/libgnat/a-secain.adb
+++ b/gcc/ada/libgnat/a-secain.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-secain.ads b/gcc/ada/libgnat/a-secain.ads
index a92b29d..77e1919 100644
--- a/gcc/ada/libgnat/a-secain.ads
+++ b/gcc/ada/libgnat/a-secain.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-sequio.adb b/gcc/ada/libgnat/a-sequio.adb
index b3b33d5..365e88b 100644
--- a/gcc/ada/libgnat/a-sequio.adb
+++ b/gcc/ada/libgnat/a-sequio.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-sequio.ads b/gcc/ada/libgnat/a-sequio.ads
index 289223d..cc55af4 100644
--- a/gcc/ada/libgnat/a-sequio.ads
+++ b/gcc/ada/libgnat/a-sequio.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-sfecin.ads b/gcc/ada/libgnat/a-sfecin.ads
index dcd77a3..a7864ab1 100644
--- a/gcc/ada/libgnat/a-sfecin.ads
+++ b/gcc/ada/libgnat/a-sfecin.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-sfhcin.ads b/gcc/ada/libgnat/a-sfhcin.ads
index 80e05d2..9812eeb 100644
--- a/gcc/ada/libgnat/a-sfhcin.ads
+++ b/gcc/ada/libgnat/a-sfhcin.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-sflcin.ads b/gcc/ada/libgnat/a-sflcin.ads
index 248cf10..3d812ad 100644
--- a/gcc/ada/libgnat/a-sflcin.ads
+++ b/gcc/ada/libgnat/a-sflcin.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-shcain.adb b/gcc/ada/libgnat/a-shcain.adb
index 2ea9655..1e149c7 100644
--- a/gcc/ada/libgnat/a-shcain.adb
+++ b/gcc/ada/libgnat/a-shcain.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-shcain.ads b/gcc/ada/libgnat/a-shcain.ads
index 680e21a..13e8ea9 100644
--- a/gcc/ada/libgnat/a-shcain.ads
+++ b/gcc/ada/libgnat/a-shcain.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-siocst.adb b/gcc/ada/libgnat/a-siocst.adb
index fd8d492..38ddb4a 100644
--- a/gcc/ada/libgnat/a-siocst.adb
+++ b/gcc/ada/libgnat/a-siocst.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-siocst.ads b/gcc/ada/libgnat/a-siocst.ads
index cc63938..893cc21 100644
--- a/gcc/ada/libgnat/a-siocst.ads
+++ b/gcc/ada/libgnat/a-siocst.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-slcain.adb b/gcc/ada/libgnat/a-slcain.adb
index b300773..be179e2 100644
--- a/gcc/ada/libgnat/a-slcain.adb
+++ b/gcc/ada/libgnat/a-slcain.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-slcain.ads b/gcc/ada/libgnat/a-slcain.ads
index 803e801..a452b86 100644
--- a/gcc/ada/libgnat/a-slcain.ads
+++ b/gcc/ada/libgnat/a-slcain.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-ssicst.adb b/gcc/ada/libgnat/a-ssicst.adb
index 5eb7789..25be7cb 100644
--- a/gcc/ada/libgnat/a-ssicst.adb
+++ b/gcc/ada/libgnat/a-ssicst.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-ssicst.ads b/gcc/ada/libgnat/a-ssicst.ads
index f0a40ea..e7035dd 100644
--- a/gcc/ada/libgnat/a-ssicst.ads
+++ b/gcc/ada/libgnat/a-ssicst.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-stboha.adb b/gcc/ada/libgnat/a-stboha.adb
index 7e44a08..4188866 100644
--- a/gcc/ada/libgnat/a-stboha.adb
+++ b/gcc/ada/libgnat/a-stboha.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-stbubo.adb b/gcc/ada/libgnat/a-stbubo.adb
index d48d5af..a15c800 100644
--- a/gcc/ada/libgnat/a-stbubo.adb
+++ b/gcc/ada/libgnat/a-stbubo.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-stbubo.ads b/gcc/ada/libgnat/a-stbubo.ads
index 7d73235..9ccc2517 100644
--- a/gcc/ada/libgnat/a-stbubo.ads
+++ b/gcc/ada/libgnat/a-stbubo.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely --
diff --git a/gcc/ada/libgnat/a-stbufi.adb b/gcc/ada/libgnat/a-stbufi.adb
index d12aa00..cc9c497 100644
--- a/gcc/ada/libgnat/a-stbufi.adb
+++ b/gcc/ada/libgnat/a-stbufi.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-stbufi.ads b/gcc/ada/libgnat/a-stbufi.ads
index 2ef1456..43324e2 100644
--- a/gcc/ada/libgnat/a-stbufi.ads
+++ b/gcc/ada/libgnat/a-stbufi.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-stbufo.adb b/gcc/ada/libgnat/a-stbufo.adb
index 08c823a..1a517c8 100644
--- a/gcc/ada/libgnat/a-stbufo.adb
+++ b/gcc/ada/libgnat/a-stbufo.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-stbufo.ads b/gcc/ada/libgnat/a-stbufo.ads
index 3a37da4..876220a 100644
--- a/gcc/ada/libgnat/a-stbufo.ads
+++ b/gcc/ada/libgnat/a-stbufo.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-stbuun.adb b/gcc/ada/libgnat/a-stbuun.adb
index ca12289..7bc140b 100644
--- a/gcc/ada/libgnat/a-stbuun.adb
+++ b/gcc/ada/libgnat/a-stbuun.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-stbuut.adb b/gcc/ada/libgnat/a-stbuut.adb
index 5fa9fa8..5c6898a 100644
--- a/gcc/ada/libgnat/a-stbuut.adb
+++ b/gcc/ada/libgnat/a-stbuut.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-stbuut.ads b/gcc/ada/libgnat/a-stbuut.ads
index f904d51..dadfe5f 100644
--- a/gcc/ada/libgnat/a-stbuut.ads
+++ b/gcc/ada/libgnat/a-stbuut.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-stmaco.ads b/gcc/ada/libgnat/a-stmaco.ads
index 0a6fa2b..84c7f12 100644
--- a/gcc/ada/libgnat/a-stmaco.ads
+++ b/gcc/ada/libgnat/a-stmaco.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-storio.adb b/gcc/ada/libgnat/a-storio.adb
index 7cfec2c..43e99b6 100644
--- a/gcc/ada/libgnat/a-storio.adb
+++ b/gcc/ada/libgnat/a-storio.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-strbou.adb b/gcc/ada/libgnat/a-strbou.adb
index 7622a28..501118a 100644
--- a/gcc/ada/libgnat/a-strbou.adb
+++ b/gcc/ada/libgnat/a-strbou.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-strbou.ads b/gcc/ada/libgnat/a-strbou.ads
index ea0cc3f..827c0dc 100644
--- a/gcc/ada/libgnat/a-strbou.ads
+++ b/gcc/ada/libgnat/a-strbou.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-stream.adb b/gcc/ada/libgnat/a-stream.adb
index 6fd8091..9e0b4e9 100644
--- a/gcc/ada/libgnat/a-stream.adb
+++ b/gcc/ada/libgnat/a-stream.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2013-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2013-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-stream.ads b/gcc/ada/libgnat/a-stream.ads
index 2b9ce46..0a0cabc 100644
--- a/gcc/ada/libgnat/a-stream.ads
+++ b/gcc/ada/libgnat/a-stream.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-strfix.adb b/gcc/ada/libgnat/a-strfix.adb
index ace705d..901fd60 100644
--- a/gcc/ada/libgnat/a-strfix.adb
+++ b/gcc/ada/libgnat/a-strfix.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-strhas.adb b/gcc/ada/libgnat/a-strhas.adb
index 4d4fb9f..797a128 100644
--- a/gcc/ada/libgnat/a-strhas.adb
+++ b/gcc/ada/libgnat/a-strhas.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-strmap.adb b/gcc/ada/libgnat/a-strmap.adb
index 529ecbb..4131dbd 100644
--- a/gcc/ada/libgnat/a-strmap.adb
+++ b/gcc/ada/libgnat/a-strmap.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-strmap.ads b/gcc/ada/libgnat/a-strmap.ads
index a070da0..24aee13 100644
--- a/gcc/ada/libgnat/a-strmap.ads
+++ b/gcc/ada/libgnat/a-strmap.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-strsea.adb b/gcc/ada/libgnat/a-strsea.adb
index 614b5ac..1dad3be 100644
--- a/gcc/ada/libgnat/a-strsea.adb
+++ b/gcc/ada/libgnat/a-strsea.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-strsea.ads b/gcc/ada/libgnat/a-strsea.ads
index df1b342..32112a6 100644
--- a/gcc/ada/libgnat/a-strsea.ads
+++ b/gcc/ada/libgnat/a-strsea.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-strsto.ads b/gcc/ada/libgnat/a-strsto.ads
index a3b5629..b32ec47 100644
--- a/gcc/ada/libgnat/a-strsto.ads
+++ b/gcc/ada/libgnat/a-strsto.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-strsup.adb b/gcc/ada/libgnat/a-strsup.adb
index c727575..8004422 100644
--- a/gcc/ada/libgnat/a-strsup.adb
+++ b/gcc/ada/libgnat/a-strsup.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2003-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2003-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-strsup.ads b/gcc/ada/libgnat/a-strsup.ads
index 339cb17..cb1dcc9 100644
--- a/gcc/ada/libgnat/a-strsup.ads
+++ b/gcc/ada/libgnat/a-strsup.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2003-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2003-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-strunb.adb b/gcc/ada/libgnat/a-strunb.adb
index 5403688..219abad 100644
--- a/gcc/ada/libgnat/a-strunb.adb
+++ b/gcc/ada/libgnat/a-strunb.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-strunb.ads b/gcc/ada/libgnat/a-strunb.ads
index be76ad2..385544e 100644
--- a/gcc/ada/libgnat/a-strunb.ads
+++ b/gcc/ada/libgnat/a-strunb.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-strunb__shared.adb b/gcc/ada/libgnat/a-strunb__shared.adb
index 5b062be..ecc0e4a 100644
--- a/gcc/ada/libgnat/a-strunb__shared.adb
+++ b/gcc/ada/libgnat/a-strunb__shared.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-strunb__shared.ads b/gcc/ada/libgnat/a-strunb__shared.ads
index 2da9dc7..3a0411d 100644
--- a/gcc/ada/libgnat/a-strunb__shared.ads
+++ b/gcc/ada/libgnat/a-strunb__shared.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-ststbo.adb b/gcc/ada/libgnat/a-ststbo.adb
index 715bf6fc6..5dfe4b7 100644
--- a/gcc/ada/libgnat/a-ststbo.adb
+++ b/gcc/ada/libgnat/a-ststbo.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-ststbo.ads b/gcc/ada/libgnat/a-ststbo.ads
index a9ba2c9..96a7a36 100644
--- a/gcc/ada/libgnat/a-ststbo.ads
+++ b/gcc/ada/libgnat/a-ststbo.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-ststio.adb b/gcc/ada/libgnat/a-ststio.adb
index ab46f48..5e4669f 100644
--- a/gcc/ada/libgnat/a-ststio.adb
+++ b/gcc/ada/libgnat/a-ststio.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-ststio.ads b/gcc/ada/libgnat/a-ststio.ads
index ab32b0a..5f6060f 100644
--- a/gcc/ada/libgnat/a-ststio.ads
+++ b/gcc/ada/libgnat/a-ststio.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-ststun.adb b/gcc/ada/libgnat/a-ststun.adb
index 8873bea..b5adbae 100644
--- a/gcc/ada/libgnat/a-ststun.adb
+++ b/gcc/ada/libgnat/a-ststun.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-ststun.ads b/gcc/ada/libgnat/a-ststun.ads
index 7db0915..6dbac6d 100644
--- a/gcc/ada/libgnat/a-ststun.ads
+++ b/gcc/ada/libgnat/a-ststun.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-sttebu.adb b/gcc/ada/libgnat/a-sttebu.adb
index b71e0e3..632281e 100644
--- a/gcc/ada/libgnat/a-sttebu.adb
+++ b/gcc/ada/libgnat/a-sttebu.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-stunau.adb b/gcc/ada/libgnat/a-stunau.adb
index 4504057..471b02d3 100644
--- a/gcc/ada/libgnat/a-stunau.adb
+++ b/gcc/ada/libgnat/a-stunau.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-stunau.ads b/gcc/ada/libgnat/a-stunau.ads
index 1fdf3ae..d88022b 100644
--- a/gcc/ada/libgnat/a-stunau.ads
+++ b/gcc/ada/libgnat/a-stunau.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-stunau__shared.adb b/gcc/ada/libgnat/a-stunau__shared.adb
index 71d12af..bbe3688 100644
--- a/gcc/ada/libgnat/a-stunau__shared.adb
+++ b/gcc/ada/libgnat/a-stunau__shared.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-stunha.adb b/gcc/ada/libgnat/a-stunha.adb
index 31eb3c2..5d05674 100644
--- a/gcc/ada/libgnat/a-stunha.adb
+++ b/gcc/ada/libgnat/a-stunha.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-stuten.adb b/gcc/ada/libgnat/a-stuten.adb
index 10be744..959c471 100644
--- a/gcc/ada/libgnat/a-stuten.adb
+++ b/gcc/ada/libgnat/a-stuten.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2010-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2010-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-stwibo.adb b/gcc/ada/libgnat/a-stwibo.adb
index 779b2ce..6c583af 100644
--- a/gcc/ada/libgnat/a-stwibo.adb
+++ b/gcc/ada/libgnat/a-stwibo.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-stwibo.ads b/gcc/ada/libgnat/a-stwibo.ads
index 42a94f6..fe273ea 100644
--- a/gcc/ada/libgnat/a-stwibo.ads
+++ b/gcc/ada/libgnat/a-stwibo.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-stwifi.adb b/gcc/ada/libgnat/a-stwifi.adb
index b18fa96..e1e45cf 100644
--- a/gcc/ada/libgnat/a-stwifi.adb
+++ b/gcc/ada/libgnat/a-stwifi.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-stwiha.adb b/gcc/ada/libgnat/a-stwiha.adb
index 29ac09b..b86abae 100644
--- a/gcc/ada/libgnat/a-stwiha.adb
+++ b/gcc/ada/libgnat/a-stwiha.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-stwima.adb b/gcc/ada/libgnat/a-stwima.adb
index 3598b31..ee31441 100644
--- a/gcc/ada/libgnat/a-stwima.adb
+++ b/gcc/ada/libgnat/a-stwima.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-stwima.ads b/gcc/ada/libgnat/a-stwima.ads
index 57bdbce..b2ed7c0 100644
--- a/gcc/ada/libgnat/a-stwima.ads
+++ b/gcc/ada/libgnat/a-stwima.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-stwise.adb b/gcc/ada/libgnat/a-stwise.adb
index 9d27b13..591a346 100644
--- a/gcc/ada/libgnat/a-stwise.adb
+++ b/gcc/ada/libgnat/a-stwise.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-stwise.ads b/gcc/ada/libgnat/a-stwise.ads
index 35e9790..b9b3a8c 100644
--- a/gcc/ada/libgnat/a-stwise.ads
+++ b/gcc/ada/libgnat/a-stwise.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-stwisu.adb b/gcc/ada/libgnat/a-stwisu.adb
index b07c4f4..a0497e9 100644
--- a/gcc/ada/libgnat/a-stwisu.adb
+++ b/gcc/ada/libgnat/a-stwisu.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2003-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2003-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-stwisu.ads b/gcc/ada/libgnat/a-stwisu.ads
index 7b3763d..65b0eb2 100644
--- a/gcc/ada/libgnat/a-stwisu.ads
+++ b/gcc/ada/libgnat/a-stwisu.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2003-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2003-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-stwiun.adb b/gcc/ada/libgnat/a-stwiun.adb
index 85ba20f..bd33dce 100644
--- a/gcc/ada/libgnat/a-stwiun.adb
+++ b/gcc/ada/libgnat/a-stwiun.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-stwiun.ads b/gcc/ada/libgnat/a-stwiun.ads
index 6536b27..177b9d6bb 100644
--- a/gcc/ada/libgnat/a-stwiun.ads
+++ b/gcc/ada/libgnat/a-stwiun.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-stwiun__shared.adb b/gcc/ada/libgnat/a-stwiun__shared.adb
index 5d9588f..26b4f8e 100644
--- a/gcc/ada/libgnat/a-stwiun__shared.adb
+++ b/gcc/ada/libgnat/a-stwiun__shared.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-stwiun__shared.ads b/gcc/ada/libgnat/a-stwiun__shared.ads
index 8bd53bc..865970f 100644
--- a/gcc/ada/libgnat/a-stwiun__shared.ads
+++ b/gcc/ada/libgnat/a-stwiun__shared.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-stzbou.adb b/gcc/ada/libgnat/a-stzbou.adb
index 34c4471..989a859 100644
--- a/gcc/ada/libgnat/a-stzbou.adb
+++ b/gcc/ada/libgnat/a-stzbou.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-stzbou.ads b/gcc/ada/libgnat/a-stzbou.ads
index 8e0f4e1..0e5215b 100644
--- a/gcc/ada/libgnat/a-stzbou.ads
+++ b/gcc/ada/libgnat/a-stzbou.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-stzfix.adb b/gcc/ada/libgnat/a-stzfix.adb
index ff1d6cf..f9aa69f 100644
--- a/gcc/ada/libgnat/a-stzfix.adb
+++ b/gcc/ada/libgnat/a-stzfix.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-stzhas.adb b/gcc/ada/libgnat/a-stzhas.adb
index c4cb35f..b81facb 100644
--- a/gcc/ada/libgnat/a-stzhas.adb
+++ b/gcc/ada/libgnat/a-stzhas.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-stzmap.adb b/gcc/ada/libgnat/a-stzmap.adb
index 0cb7d38..7360755 100644
--- a/gcc/ada/libgnat/a-stzmap.adb
+++ b/gcc/ada/libgnat/a-stzmap.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-stzmap.ads b/gcc/ada/libgnat/a-stzmap.ads
index a230c86..6d7e7e9 100644
--- a/gcc/ada/libgnat/a-stzmap.ads
+++ b/gcc/ada/libgnat/a-stzmap.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-stzsea.adb b/gcc/ada/libgnat/a-stzsea.adb
index 03ce1d8..0c8fd03 100644
--- a/gcc/ada/libgnat/a-stzsea.adb
+++ b/gcc/ada/libgnat/a-stzsea.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-stzsea.ads b/gcc/ada/libgnat/a-stzsea.ads
index 6579f03..76d647a 100644
--- a/gcc/ada/libgnat/a-stzsea.ads
+++ b/gcc/ada/libgnat/a-stzsea.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-stzsup.adb b/gcc/ada/libgnat/a-stzsup.adb
index 60ae88d..b772101 100644
--- a/gcc/ada/libgnat/a-stzsup.adb
+++ b/gcc/ada/libgnat/a-stzsup.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2003-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2003-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-stzsup.ads b/gcc/ada/libgnat/a-stzsup.ads
index 18ca12a..be3ab0b 100644
--- a/gcc/ada/libgnat/a-stzsup.ads
+++ b/gcc/ada/libgnat/a-stzsup.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2003-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2003-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-stzunb.adb b/gcc/ada/libgnat/a-stzunb.adb
index e20c2c0..d33d539 100644
--- a/gcc/ada/libgnat/a-stzunb.adb
+++ b/gcc/ada/libgnat/a-stzunb.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-stzunb.ads b/gcc/ada/libgnat/a-stzunb.ads
index 9344b39..2a40ab6 100644
--- a/gcc/ada/libgnat/a-stzunb.ads
+++ b/gcc/ada/libgnat/a-stzunb.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-stzunb__shared.adb b/gcc/ada/libgnat/a-stzunb__shared.adb
index 6fd1b05..39dd7b9 100644
--- a/gcc/ada/libgnat/a-stzunb__shared.adb
+++ b/gcc/ada/libgnat/a-stzunb__shared.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-stzunb__shared.ads b/gcc/ada/libgnat/a-stzunb__shared.ads
index c37181d..5de0347 100644
--- a/gcc/ada/libgnat/a-stzunb__shared.ads
+++ b/gcc/ada/libgnat/a-stzunb__shared.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-suecin.adb b/gcc/ada/libgnat/a-suecin.adb
index 8f5f6d6..4e1dab1 100644
--- a/gcc/ada/libgnat/a-suecin.adb
+++ b/gcc/ada/libgnat/a-suecin.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-suecin.ads b/gcc/ada/libgnat/a-suecin.ads
index 320b473..6b2e3b72 100644
--- a/gcc/ada/libgnat/a-suecin.ads
+++ b/gcc/ada/libgnat/a-suecin.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-suenco.adb b/gcc/ada/libgnat/a-suenco.adb
index 39a44bf..753543c6 100644
--- a/gcc/ada/libgnat/a-suenco.adb
+++ b/gcc/ada/libgnat/a-suenco.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2010-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2010-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-suenst.adb b/gcc/ada/libgnat/a-suenst.adb
index bcfbe62..b396148 100644
--- a/gcc/ada/libgnat/a-suenst.adb
+++ b/gcc/ada/libgnat/a-suenst.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2010-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2010-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-suewst.adb b/gcc/ada/libgnat/a-suewst.adb
index 2830eef..8feddef 100644
--- a/gcc/ada/libgnat/a-suewst.adb
+++ b/gcc/ada/libgnat/a-suewst.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2010-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2010-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-suezst.adb b/gcc/ada/libgnat/a-suezst.adb
index 40d88af..e97082e 100644
--- a/gcc/ada/libgnat/a-suezst.adb
+++ b/gcc/ada/libgnat/a-suezst.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2010-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2010-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-suhcin.adb b/gcc/ada/libgnat/a-suhcin.adb
index 5df0cb9..7638d80 100644
--- a/gcc/ada/libgnat/a-suhcin.adb
+++ b/gcc/ada/libgnat/a-suhcin.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-suhcin.ads b/gcc/ada/libgnat/a-suhcin.ads
index 382f256..b30eba0 100644
--- a/gcc/ada/libgnat/a-suhcin.ads
+++ b/gcc/ada/libgnat/a-suhcin.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-sulcin.adb b/gcc/ada/libgnat/a-sulcin.adb
index 3f46baa..f0e216a 100644
--- a/gcc/ada/libgnat/a-sulcin.adb
+++ b/gcc/ada/libgnat/a-sulcin.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-sulcin.ads b/gcc/ada/libgnat/a-sulcin.ads
index d302434..520ac49 100644
--- a/gcc/ada/libgnat/a-sulcin.ads
+++ b/gcc/ada/libgnat/a-sulcin.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-suteio.adb b/gcc/ada/libgnat/a-suteio.adb
index d64e831..9a4d1a5 100644
--- a/gcc/ada/libgnat/a-suteio.adb
+++ b/gcc/ada/libgnat/a-suteio.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1997-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1997-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-suteio.ads b/gcc/ada/libgnat/a-suteio.ads
index a788a75..9821b74 100644
--- a/gcc/ada/libgnat/a-suteio.ads
+++ b/gcc/ada/libgnat/a-suteio.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1997-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1997-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-suteio__shared.adb b/gcc/ada/libgnat/a-suteio__shared.adb
index dc90324..f3bd6ff 100644
--- a/gcc/ada/libgnat/a-suteio__shared.adb
+++ b/gcc/ada/libgnat/a-suteio__shared.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1997-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1997-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-swbwha.adb b/gcc/ada/libgnat/a-swbwha.adb
index 94d5781..ba826bf 100644
--- a/gcc/ada/libgnat/a-swbwha.adb
+++ b/gcc/ada/libgnat/a-swbwha.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-swmwco.ads b/gcc/ada/libgnat/a-swmwco.ads
index bc11e69..2b93896 100644
--- a/gcc/ada/libgnat/a-swmwco.ads
+++ b/gcc/ada/libgnat/a-swmwco.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-swunau.adb b/gcc/ada/libgnat/a-swunau.adb
index 0c4f179..a1dbb31 100644
--- a/gcc/ada/libgnat/a-swunau.adb
+++ b/gcc/ada/libgnat/a-swunau.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-swunau.ads b/gcc/ada/libgnat/a-swunau.ads
index 4f5b075..2f3ad86 100644
--- a/gcc/ada/libgnat/a-swunau.ads
+++ b/gcc/ada/libgnat/a-swunau.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-swunau__shared.adb b/gcc/ada/libgnat/a-swunau__shared.adb
index 6f59335..d9478ba 100644
--- a/gcc/ada/libgnat/a-swunau__shared.adb
+++ b/gcc/ada/libgnat/a-swunau__shared.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-swuwha.adb b/gcc/ada/libgnat/a-swuwha.adb
index f3f770c..55edbec 100644
--- a/gcc/ada/libgnat/a-swuwha.adb
+++ b/gcc/ada/libgnat/a-swuwha.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-swuwti.adb b/gcc/ada/libgnat/a-swuwti.adb
index 7959833..9b43968 100644
--- a/gcc/ada/libgnat/a-swuwti.adb
+++ b/gcc/ada/libgnat/a-swuwti.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1997-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1997-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-swuwti.ads b/gcc/ada/libgnat/a-swuwti.ads
index 72130cc..a6a26c4 100644
--- a/gcc/ada/libgnat/a-swuwti.ads
+++ b/gcc/ada/libgnat/a-swuwti.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1997-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1997-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-swuwti__shared.adb b/gcc/ada/libgnat/a-swuwti__shared.adb
index 7852d64..53e27a7 100644
--- a/gcc/ada/libgnat/a-swuwti__shared.adb
+++ b/gcc/ada/libgnat/a-swuwti__shared.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1997-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1997-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-szbzha.adb b/gcc/ada/libgnat/a-szbzha.adb
index f23ae6c..3d3a96a0 100644
--- a/gcc/ada/libgnat/a-szbzha.adb
+++ b/gcc/ada/libgnat/a-szbzha.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-szmzco.ads b/gcc/ada/libgnat/a-szmzco.ads
index ea6866a..7a483e1 100644
--- a/gcc/ada/libgnat/a-szmzco.ads
+++ b/gcc/ada/libgnat/a-szmzco.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-szunau.adb b/gcc/ada/libgnat/a-szunau.adb
index e27eef5..94133d6 100644
--- a/gcc/ada/libgnat/a-szunau.adb
+++ b/gcc/ada/libgnat/a-szunau.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-szunau.ads b/gcc/ada/libgnat/a-szunau.ads
index 31aa15d..d3b7442 100644
--- a/gcc/ada/libgnat/a-szunau.ads
+++ b/gcc/ada/libgnat/a-szunau.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-szunau__shared.adb b/gcc/ada/libgnat/a-szunau__shared.adb
index a2ff461..08a4e06 100644
--- a/gcc/ada/libgnat/a-szunau__shared.adb
+++ b/gcc/ada/libgnat/a-szunau__shared.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-szuzha.adb b/gcc/ada/libgnat/a-szuzha.adb
index fa8c89f..05bee5e 100644
--- a/gcc/ada/libgnat/a-szuzha.adb
+++ b/gcc/ada/libgnat/a-szuzha.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-szuzti.adb b/gcc/ada/libgnat/a-szuzti.adb
index 9b08e42..2b61927 100644
--- a/gcc/ada/libgnat/a-szuzti.adb
+++ b/gcc/ada/libgnat/a-szuzti.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1997-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1997-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-szuzti.ads b/gcc/ada/libgnat/a-szuzti.ads
index 26af548..002f456 100644
--- a/gcc/ada/libgnat/a-szuzti.ads
+++ b/gcc/ada/libgnat/a-szuzti.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1997-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1997-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-szuzti__shared.adb b/gcc/ada/libgnat/a-szuzti__shared.adb
index ae64b00..3d83184 100644
--- a/gcc/ada/libgnat/a-szuzti__shared.adb
+++ b/gcc/ada/libgnat/a-szuzti__shared.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1997-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1997-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-tags.adb b/gcc/ada/libgnat/a-tags.adb
index 1ffc78e..ad7895f 100644
--- a/gcc/ada/libgnat/a-tags.adb
+++ b/gcc/ada/libgnat/a-tags.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-tags.ads b/gcc/ada/libgnat/a-tags.ads
index 3e92312..a36d2df 100644
--- a/gcc/ada/libgnat/a-tags.ads
+++ b/gcc/ada/libgnat/a-tags.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-teioed.adb b/gcc/ada/libgnat/a-teioed.adb
index 47906c3..c95a9df 100644
--- a/gcc/ada/libgnat/a-teioed.adb
+++ b/gcc/ada/libgnat/a-teioed.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-teioed.ads b/gcc/ada/libgnat/a-teioed.ads
index 91d0b8b..9772770 100644
--- a/gcc/ada/libgnat/a-teioed.ads
+++ b/gcc/ada/libgnat/a-teioed.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-textio.adb b/gcc/ada/libgnat/a-textio.adb
index 171fc1f..b8c6f7f2 100644
--- a/gcc/ada/libgnat/a-textio.adb
+++ b/gcc/ada/libgnat/a-textio.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-textio.ads b/gcc/ada/libgnat/a-textio.ads
index 4318b6c..63c710e 100644
--- a/gcc/ada/libgnat/a-textio.ads
+++ b/gcc/ada/libgnat/a-textio.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-tiboio.adb b/gcc/ada/libgnat/a-tiboio.adb
index d8ae2ae..f0f837e 100644
--- a/gcc/ada/libgnat/a-tiboio.adb
+++ b/gcc/ada/libgnat/a-tiboio.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1997-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1997-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-ticoau.adb b/gcc/ada/libgnat/a-ticoau.adb
index 62f6325..ae0df9c 100644
--- a/gcc/ada/libgnat/a-ticoau.adb
+++ b/gcc/ada/libgnat/a-ticoau.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-ticoau.ads b/gcc/ada/libgnat/a-ticoau.ads
index 6a90125..223e823 100644
--- a/gcc/ada/libgnat/a-ticoau.ads
+++ b/gcc/ada/libgnat/a-ticoau.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-ticoio.adb b/gcc/ada/libgnat/a-ticoio.adb
index dbe42cf..64e1ffe 100644
--- a/gcc/ada/libgnat/a-ticoio.adb
+++ b/gcc/ada/libgnat/a-ticoio.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-ticoio.ads b/gcc/ada/libgnat/a-ticoio.ads
index 210fe18..98ec22f 100644
--- a/gcc/ada/libgnat/a-ticoio.ads
+++ b/gcc/ada/libgnat/a-ticoio.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-tideau.adb b/gcc/ada/libgnat/a-tideau.adb
index 742e3f6..7f53d82 100644
--- a/gcc/ada/libgnat/a-tideau.adb
+++ b/gcc/ada/libgnat/a-tideau.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-tideau.ads b/gcc/ada/libgnat/a-tideau.ads
index be556ad..8f02081 100644
--- a/gcc/ada/libgnat/a-tideau.ads
+++ b/gcc/ada/libgnat/a-tideau.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-tideio.adb b/gcc/ada/libgnat/a-tideio.adb
index df65cf3..e5212f2 100644
--- a/gcc/ada/libgnat/a-tideio.adb
+++ b/gcc/ada/libgnat/a-tideio.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-tideio.ads b/gcc/ada/libgnat/a-tideio.ads
index 7f8fa19..394011a 100644
--- a/gcc/ada/libgnat/a-tideio.ads
+++ b/gcc/ada/libgnat/a-tideio.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-tideio__128.adb b/gcc/ada/libgnat/a-tideio__128.adb
index 19bcf74..a4fea9f 100644
--- a/gcc/ada/libgnat/a-tideio__128.adb
+++ b/gcc/ada/libgnat/a-tideio__128.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-tienau.adb b/gcc/ada/libgnat/a-tienau.adb
index 4c03b1c..5f7e29f 100644
--- a/gcc/ada/libgnat/a-tienau.adb
+++ b/gcc/ada/libgnat/a-tienau.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-tienau.ads b/gcc/ada/libgnat/a-tienau.ads
index 50a0ea2..7110012 100644
--- a/gcc/ada/libgnat/a-tienau.ads
+++ b/gcc/ada/libgnat/a-tienau.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-tienio.adb b/gcc/ada/libgnat/a-tienio.adb
index b9dd1da..b5282f7 100644
--- a/gcc/ada/libgnat/a-tienio.adb
+++ b/gcc/ada/libgnat/a-tienio.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-tifiau.adb b/gcc/ada/libgnat/a-tifiau.adb
index 7e4be00..32a987c 100644
--- a/gcc/ada/libgnat/a-tifiau.adb
+++ b/gcc/ada/libgnat/a-tifiau.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-tifiau.ads b/gcc/ada/libgnat/a-tifiau.ads
index e8da4b7..64a1fb1 100644
--- a/gcc/ada/libgnat/a-tifiau.ads
+++ b/gcc/ada/libgnat/a-tifiau.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-tifiio.adb b/gcc/ada/libgnat/a-tifiio.adb
index a4b39e2..c44b2ba 100644
--- a/gcc/ada/libgnat/a-tifiio.adb
+++ b/gcc/ada/libgnat/a-tifiio.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-tifiio__128.adb b/gcc/ada/libgnat/a-tifiio__128.adb
index f445a4b..51b4b21 100644
--- a/gcc/ada/libgnat/a-tifiio__128.adb
+++ b/gcc/ada/libgnat/a-tifiio__128.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-tiflau.adb b/gcc/ada/libgnat/a-tiflau.adb
index 8a04d7e..ad3b0d5 100644
--- a/gcc/ada/libgnat/a-tiflau.adb
+++ b/gcc/ada/libgnat/a-tiflau.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-tiflau.ads b/gcc/ada/libgnat/a-tiflau.ads
index 9dbb724..c77d511 100644
--- a/gcc/ada/libgnat/a-tiflau.ads
+++ b/gcc/ada/libgnat/a-tiflau.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-tiflio.adb b/gcc/ada/libgnat/a-tiflio.adb
index 09e100c..0a88d7c 100644
--- a/gcc/ada/libgnat/a-tiflio.adb
+++ b/gcc/ada/libgnat/a-tiflio.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-tiflio.ads b/gcc/ada/libgnat/a-tiflio.ads
index fcfa76a..8bd4299 100644
--- a/gcc/ada/libgnat/a-tiflio.ads
+++ b/gcc/ada/libgnat/a-tiflio.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-tigeau.adb b/gcc/ada/libgnat/a-tigeau.adb
index f8137ad..3698168 100644
--- a/gcc/ada/libgnat/a-tigeau.adb
+++ b/gcc/ada/libgnat/a-tigeau.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-tigeau.ads b/gcc/ada/libgnat/a-tigeau.ads
index 268a27e..4941a7b 100644
--- a/gcc/ada/libgnat/a-tigeau.ads
+++ b/gcc/ada/libgnat/a-tigeau.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-tigeli.adb b/gcc/ada/libgnat/a-tigeli.adb
index c5d1523..16a3bf0 100644
--- a/gcc/ada/libgnat/a-tigeli.adb
+++ b/gcc/ada/libgnat/a-tigeli.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-tiinau.adb b/gcc/ada/libgnat/a-tiinau.adb
index 0414577..ff957c0 100644
--- a/gcc/ada/libgnat/a-tiinau.adb
+++ b/gcc/ada/libgnat/a-tiinau.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-tiinau.ads b/gcc/ada/libgnat/a-tiinau.ads
index a9fb0a0..9fbdd32 100644
--- a/gcc/ada/libgnat/a-tiinau.ads
+++ b/gcc/ada/libgnat/a-tiinau.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-tiinio.adb b/gcc/ada/libgnat/a-tiinio.adb
index 9ea5b18..62b1f4a 100644
--- a/gcc/ada/libgnat/a-tiinio.adb
+++ b/gcc/ada/libgnat/a-tiinio.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-tiinio.ads b/gcc/ada/libgnat/a-tiinio.ads
index 60f21cc..a4c162e 100644
--- a/gcc/ada/libgnat/a-tiinio.ads
+++ b/gcc/ada/libgnat/a-tiinio.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-tiinio__128.adb b/gcc/ada/libgnat/a-tiinio__128.adb
index 8930144..b17491f 100644
--- a/gcc/ada/libgnat/a-tiinio__128.adb
+++ b/gcc/ada/libgnat/a-tiinio__128.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-timoio.adb b/gcc/ada/libgnat/a-timoio.adb
index e0b4176..65222c1 100644
--- a/gcc/ada/libgnat/a-timoio.adb
+++ b/gcc/ada/libgnat/a-timoio.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-timoio.ads b/gcc/ada/libgnat/a-timoio.ads
index 40d91ed..c4e4d45 100644
--- a/gcc/ada/libgnat/a-timoio.ads
+++ b/gcc/ada/libgnat/a-timoio.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1993-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1993-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-timoio__128.adb b/gcc/ada/libgnat/a-timoio__128.adb
index 58b0d1f..fbf31cf 100644
--- a/gcc/ada/libgnat/a-timoio__128.adb
+++ b/gcc/ada/libgnat/a-timoio__128.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-tiocst.adb b/gcc/ada/libgnat/a-tiocst.adb
index 5fdc18f..5e55ff8 100644
--- a/gcc/ada/libgnat/a-tiocst.adb
+++ b/gcc/ada/libgnat/a-tiocst.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-tiocst.ads b/gcc/ada/libgnat/a-tiocst.ads
index 5c20acd..9459712 100644
--- a/gcc/ada/libgnat/a-tiocst.ads
+++ b/gcc/ada/libgnat/a-tiocst.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-tirsfi.adb b/gcc/ada/libgnat/a-tirsfi.adb
index 46041a0..bda259c 100644
--- a/gcc/ada/libgnat/a-tirsfi.adb
+++ b/gcc/ada/libgnat/a-tirsfi.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-tirsfi.ads b/gcc/ada/libgnat/a-tirsfi.ads
index a774860..383c254 100644
--- a/gcc/ada/libgnat/a-tirsfi.ads
+++ b/gcc/ada/libgnat/a-tirsfi.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-titest.adb b/gcc/ada/libgnat/a-titest.adb
index 169c5ae..aad780d 100644
--- a/gcc/ada/libgnat/a-titest.adb
+++ b/gcc/ada/libgnat/a-titest.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-undesu.adb b/gcc/ada/libgnat/a-undesu.adb
index 6b2b1ab..454f5e6 100644
--- a/gcc/ada/libgnat/a-undesu.adb
+++ b/gcc/ada/libgnat/a-undesu.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-wichha.adb b/gcc/ada/libgnat/a-wichha.adb
index 33c082a..11dce19 100644
--- a/gcc/ada/libgnat/a-wichha.adb
+++ b/gcc/ada/libgnat/a-wichha.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2010-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2010-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-wichun.adb b/gcc/ada/libgnat/a-wichun.adb
index 5ab6836..2dd3450 100644
--- a/gcc/ada/libgnat/a-wichun.adb
+++ b/gcc/ada/libgnat/a-wichun.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2005-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2005-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-wichun.ads b/gcc/ada/libgnat/a-wichun.ads
index aa44f34..0d6b9f1 100644
--- a/gcc/ada/libgnat/a-wichun.ads
+++ b/gcc/ada/libgnat/a-wichun.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2005-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2005-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-witeio.adb b/gcc/ada/libgnat/a-witeio.adb
index 580caa2..e72bcc0 100644
--- a/gcc/ada/libgnat/a-witeio.adb
+++ b/gcc/ada/libgnat/a-witeio.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-witeio.ads b/gcc/ada/libgnat/a-witeio.ads
index 2c124ab..bef3a2e 100644
--- a/gcc/ada/libgnat/a-witeio.ads
+++ b/gcc/ada/libgnat/a-witeio.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-wrstfi.adb b/gcc/ada/libgnat/a-wrstfi.adb
index 988a2d2..2b89b64 100644
--- a/gcc/ada/libgnat/a-wrstfi.adb
+++ b/gcc/ada/libgnat/a-wrstfi.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-wrstfi.ads b/gcc/ada/libgnat/a-wrstfi.ads
index 99130d2..e98aeb1 100644
--- a/gcc/ada/libgnat/a-wrstfi.ads
+++ b/gcc/ada/libgnat/a-wrstfi.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-wtcoau.adb b/gcc/ada/libgnat/a-wtcoau.adb
index 4182cef..47decda 100644
--- a/gcc/ada/libgnat/a-wtcoau.adb
+++ b/gcc/ada/libgnat/a-wtcoau.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-wtcoau.ads b/gcc/ada/libgnat/a-wtcoau.ads
index e736030..854b7b9 100644
--- a/gcc/ada/libgnat/a-wtcoau.ads
+++ b/gcc/ada/libgnat/a-wtcoau.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-wtcoio.adb b/gcc/ada/libgnat/a-wtcoio.adb
index 841431d..48ea518 100644
--- a/gcc/ada/libgnat/a-wtcoio.adb
+++ b/gcc/ada/libgnat/a-wtcoio.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-wtcstr.adb b/gcc/ada/libgnat/a-wtcstr.adb
index 9e61a1d..13f9368 100644
--- a/gcc/ada/libgnat/a-wtcstr.adb
+++ b/gcc/ada/libgnat/a-wtcstr.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-wtcstr.ads b/gcc/ada/libgnat/a-wtcstr.ads
index b45809d..6a1ad01 100644
--- a/gcc/ada/libgnat/a-wtcstr.ads
+++ b/gcc/ada/libgnat/a-wtcstr.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-wtdeau.adb b/gcc/ada/libgnat/a-wtdeau.adb
index b9f12d3..655d36c 100644
--- a/gcc/ada/libgnat/a-wtdeau.adb
+++ b/gcc/ada/libgnat/a-wtdeau.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-wtdeau.ads b/gcc/ada/libgnat/a-wtdeau.ads
index 2ae0d9b..ed34942 100644
--- a/gcc/ada/libgnat/a-wtdeau.ads
+++ b/gcc/ada/libgnat/a-wtdeau.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-wtdeio.adb b/gcc/ada/libgnat/a-wtdeio.adb
index dbfdc92..d9fe77f 100644
--- a/gcc/ada/libgnat/a-wtdeio.adb
+++ b/gcc/ada/libgnat/a-wtdeio.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-wtdeio__128.adb b/gcc/ada/libgnat/a-wtdeio__128.adb
index eaa7b5f..c21a3a5 100644
--- a/gcc/ada/libgnat/a-wtdeio__128.adb
+++ b/gcc/ada/libgnat/a-wtdeio__128.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-wtedit.adb b/gcc/ada/libgnat/a-wtedit.adb
index 975cf6a..a976726 100644
--- a/gcc/ada/libgnat/a-wtedit.adb
+++ b/gcc/ada/libgnat/a-wtedit.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-wtedit.ads b/gcc/ada/libgnat/a-wtedit.ads
index 3be0daa..c329ff7 100644
--- a/gcc/ada/libgnat/a-wtedit.ads
+++ b/gcc/ada/libgnat/a-wtedit.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-wtenau.adb b/gcc/ada/libgnat/a-wtenau.adb
index 0e10646..55e17b6 100644
--- a/gcc/ada/libgnat/a-wtenau.adb
+++ b/gcc/ada/libgnat/a-wtenau.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-wtenau.ads b/gcc/ada/libgnat/a-wtenau.ads
index 181218c..d2d81c2 100644
--- a/gcc/ada/libgnat/a-wtenau.ads
+++ b/gcc/ada/libgnat/a-wtenau.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-wtenio.adb b/gcc/ada/libgnat/a-wtenio.adb
index 0fdeacb..00456c2 100644
--- a/gcc/ada/libgnat/a-wtenio.adb
+++ b/gcc/ada/libgnat/a-wtenio.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-wtfiau.adb b/gcc/ada/libgnat/a-wtfiau.adb
index 08e6251..c44dad8 100644
--- a/gcc/ada/libgnat/a-wtfiau.adb
+++ b/gcc/ada/libgnat/a-wtfiau.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-wtfiau.ads b/gcc/ada/libgnat/a-wtfiau.ads
index ec775ab..49a76fc 100644
--- a/gcc/ada/libgnat/a-wtfiau.ads
+++ b/gcc/ada/libgnat/a-wtfiau.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-wtfiio.adb b/gcc/ada/libgnat/a-wtfiio.adb
index 5d497be..195a695 100644
--- a/gcc/ada/libgnat/a-wtfiio.adb
+++ b/gcc/ada/libgnat/a-wtfiio.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-wtfiio__128.adb b/gcc/ada/libgnat/a-wtfiio__128.adb
index aa2a89d..5e07879 100644
--- a/gcc/ada/libgnat/a-wtfiio__128.adb
+++ b/gcc/ada/libgnat/a-wtfiio__128.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-wtflau.adb b/gcc/ada/libgnat/a-wtflau.adb
index cab1504..dcc8a75 100644
--- a/gcc/ada/libgnat/a-wtflau.adb
+++ b/gcc/ada/libgnat/a-wtflau.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-wtflau.ads b/gcc/ada/libgnat/a-wtflau.ads
index 81f637f..251cb27 100644
--- a/gcc/ada/libgnat/a-wtflau.ads
+++ b/gcc/ada/libgnat/a-wtflau.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-wtflio.adb b/gcc/ada/libgnat/a-wtflio.adb
index cbc3586..e482f15 100644
--- a/gcc/ada/libgnat/a-wtflio.adb
+++ b/gcc/ada/libgnat/a-wtflio.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-wtgeau.adb b/gcc/ada/libgnat/a-wtgeau.adb
index 82c653d..23dec1f 100644
--- a/gcc/ada/libgnat/a-wtgeau.adb
+++ b/gcc/ada/libgnat/a-wtgeau.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-wtgeau.ads b/gcc/ada/libgnat/a-wtgeau.ads
index f4795e4..8552ef7 100644
--- a/gcc/ada/libgnat/a-wtgeau.ads
+++ b/gcc/ada/libgnat/a-wtgeau.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-wtinau.adb b/gcc/ada/libgnat/a-wtinau.adb
index 5c16958..1254019 100644
--- a/gcc/ada/libgnat/a-wtinau.adb
+++ b/gcc/ada/libgnat/a-wtinau.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-wtinau.ads b/gcc/ada/libgnat/a-wtinau.ads
index 4a675e2..0aa7501 100644
--- a/gcc/ada/libgnat/a-wtinau.ads
+++ b/gcc/ada/libgnat/a-wtinau.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-wtinio.adb b/gcc/ada/libgnat/a-wtinio.adb
index 791b1ab..750f9b9 100644
--- a/gcc/ada/libgnat/a-wtinio.adb
+++ b/gcc/ada/libgnat/a-wtinio.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-wtinio__128.adb b/gcc/ada/libgnat/a-wtinio__128.adb
index 5aa1734..d31a232 100644
--- a/gcc/ada/libgnat/a-wtinio__128.adb
+++ b/gcc/ada/libgnat/a-wtinio__128.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-wtmoio.adb b/gcc/ada/libgnat/a-wtmoio.adb
index ac9bdba..6f50bf5 100644
--- a/gcc/ada/libgnat/a-wtmoio.adb
+++ b/gcc/ada/libgnat/a-wtmoio.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-wtmoio.ads b/gcc/ada/libgnat/a-wtmoio.ads
index ce05e67..750321c 100644
--- a/gcc/ada/libgnat/a-wtmoio.ads
+++ b/gcc/ada/libgnat/a-wtmoio.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely --
diff --git a/gcc/ada/libgnat/a-wtmoio__128.adb b/gcc/ada/libgnat/a-wtmoio__128.adb
index 56601ab..1a11aee 100644
--- a/gcc/ada/libgnat/a-wtmoio__128.adb
+++ b/gcc/ada/libgnat/a-wtmoio__128.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-wttest.adb b/gcc/ada/libgnat/a-wttest.adb
index e479609..08a83d2 100644
--- a/gcc/ada/libgnat/a-wttest.adb
+++ b/gcc/ada/libgnat/a-wttest.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-wwboio.adb b/gcc/ada/libgnat/a-wwboio.adb
index f434846..41053af 100644
--- a/gcc/ada/libgnat/a-wwboio.adb
+++ b/gcc/ada/libgnat/a-wwboio.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1997-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1997-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-zchhan.adb b/gcc/ada/libgnat/a-zchhan.adb
index 067873c..4e23eea 100644
--- a/gcc/ada/libgnat/a-zchhan.adb
+++ b/gcc/ada/libgnat/a-zchhan.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2010-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2010-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-zchuni.adb b/gcc/ada/libgnat/a-zchuni.adb
index 54e7acd..31f90c7 100644
--- a/gcc/ada/libgnat/a-zchuni.adb
+++ b/gcc/ada/libgnat/a-zchuni.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2005-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2005-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-zchuni.ads b/gcc/ada/libgnat/a-zchuni.ads
index 9c0aa67..3c1e1f0 100644
--- a/gcc/ada/libgnat/a-zchuni.ads
+++ b/gcc/ada/libgnat/a-zchuni.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2005-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2005-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-zrstfi.adb b/gcc/ada/libgnat/a-zrstfi.adb
index 734b4d7..71cba32 100644
--- a/gcc/ada/libgnat/a-zrstfi.adb
+++ b/gcc/ada/libgnat/a-zrstfi.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-zrstfi.ads b/gcc/ada/libgnat/a-zrstfi.ads
index 0416d67..5d07d5a 100644
--- a/gcc/ada/libgnat/a-zrstfi.ads
+++ b/gcc/ada/libgnat/a-zrstfi.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-ztcoau.adb b/gcc/ada/libgnat/a-ztcoau.adb
index 6372154..f2fcde3 100644
--- a/gcc/ada/libgnat/a-ztcoau.adb
+++ b/gcc/ada/libgnat/a-ztcoau.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-ztcoio.adb b/gcc/ada/libgnat/a-ztcoio.adb
index f971fe9..7461000 100644
--- a/gcc/ada/libgnat/a-ztcoio.adb
+++ b/gcc/ada/libgnat/a-ztcoio.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-ztcstr.adb b/gcc/ada/libgnat/a-ztcstr.adb
index ce2e16d..d604cc6 100644
--- a/gcc/ada/libgnat/a-ztcstr.adb
+++ b/gcc/ada/libgnat/a-ztcstr.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-ztcstr.ads b/gcc/ada/libgnat/a-ztcstr.ads
index 39ee8e2..05db65e 100644
--- a/gcc/ada/libgnat/a-ztcstr.ads
+++ b/gcc/ada/libgnat/a-ztcstr.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-ztdeau.adb b/gcc/ada/libgnat/a-ztdeau.adb
index 25f53d9..b50b246 100644
--- a/gcc/ada/libgnat/a-ztdeau.adb
+++ b/gcc/ada/libgnat/a-ztdeau.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-ztdeau.ads b/gcc/ada/libgnat/a-ztdeau.ads
index d46c688..1e39fe1 100644
--- a/gcc/ada/libgnat/a-ztdeau.ads
+++ b/gcc/ada/libgnat/a-ztdeau.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-ztdeio.adb b/gcc/ada/libgnat/a-ztdeio.adb
index 601b9d8..e548b04 100644
--- a/gcc/ada/libgnat/a-ztdeio.adb
+++ b/gcc/ada/libgnat/a-ztdeio.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-ztdeio__128.adb b/gcc/ada/libgnat/a-ztdeio__128.adb
index 6bf172b..899d3c4 100644
--- a/gcc/ada/libgnat/a-ztdeio__128.adb
+++ b/gcc/ada/libgnat/a-ztdeio__128.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-ztedit.adb b/gcc/ada/libgnat/a-ztedit.adb
index 23f8f63..356c4bd 100644
--- a/gcc/ada/libgnat/a-ztedit.adb
+++ b/gcc/ada/libgnat/a-ztedit.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-ztedit.ads b/gcc/ada/libgnat/a-ztedit.ads
index 696f3d1..b25121b 100644
--- a/gcc/ada/libgnat/a-ztedit.ads
+++ b/gcc/ada/libgnat/a-ztedit.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-ztenau.adb b/gcc/ada/libgnat/a-ztenau.adb
index 49cf283..a2c3f85 100644
--- a/gcc/ada/libgnat/a-ztenau.adb
+++ b/gcc/ada/libgnat/a-ztenau.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-ztenau.ads b/gcc/ada/libgnat/a-ztenau.ads
index 328dd76..0d66a7e 100644
--- a/gcc/ada/libgnat/a-ztenau.ads
+++ b/gcc/ada/libgnat/a-ztenau.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-ztenio.adb b/gcc/ada/libgnat/a-ztenio.adb
index e343553..4d3fbe3 100644
--- a/gcc/ada/libgnat/a-ztenio.adb
+++ b/gcc/ada/libgnat/a-ztenio.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-ztexio.adb b/gcc/ada/libgnat/a-ztexio.adb
index fe99754..c22d522 100644
--- a/gcc/ada/libgnat/a-ztexio.adb
+++ b/gcc/ada/libgnat/a-ztexio.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-ztexio.ads b/gcc/ada/libgnat/a-ztexio.ads
index af12d04..7ed5467 100644
--- a/gcc/ada/libgnat/a-ztexio.ads
+++ b/gcc/ada/libgnat/a-ztexio.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/a-ztfiau.adb b/gcc/ada/libgnat/a-ztfiau.adb
index 0246a12..d705c0d 100644
--- a/gcc/ada/libgnat/a-ztfiau.adb
+++ b/gcc/ada/libgnat/a-ztfiau.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-ztfiau.ads b/gcc/ada/libgnat/a-ztfiau.ads
index 45ed225..aeced12 100644
--- a/gcc/ada/libgnat/a-ztfiau.ads
+++ b/gcc/ada/libgnat/a-ztfiau.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-ztfiio.adb b/gcc/ada/libgnat/a-ztfiio.adb
index 381a030..011dc90 100644
--- a/gcc/ada/libgnat/a-ztfiio.adb
+++ b/gcc/ada/libgnat/a-ztfiio.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-ztfiio__128.adb b/gcc/ada/libgnat/a-ztfiio__128.adb
index ae5eebb..b0556ba 100644
--- a/gcc/ada/libgnat/a-ztfiio__128.adb
+++ b/gcc/ada/libgnat/a-ztfiio__128.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-ztflau.adb b/gcc/ada/libgnat/a-ztflau.adb
index f45e61c..75d4f72 100644
--- a/gcc/ada/libgnat/a-ztflau.adb
+++ b/gcc/ada/libgnat/a-ztflau.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-ztflau.ads b/gcc/ada/libgnat/a-ztflau.ads
index 435a310..95e40a6 100644
--- a/gcc/ada/libgnat/a-ztflau.ads
+++ b/gcc/ada/libgnat/a-ztflau.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-ztflio.adb b/gcc/ada/libgnat/a-ztflio.adb
index ea14d11..0ed941b 100644
--- a/gcc/ada/libgnat/a-ztflio.adb
+++ b/gcc/ada/libgnat/a-ztflio.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-ztgeau.adb b/gcc/ada/libgnat/a-ztgeau.adb
index 2609838..207c9ca 100644
--- a/gcc/ada/libgnat/a-ztgeau.adb
+++ b/gcc/ada/libgnat/a-ztgeau.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-ztgeau.ads b/gcc/ada/libgnat/a-ztgeau.ads
index 5baf18e..2f41392 100644
--- a/gcc/ada/libgnat/a-ztgeau.ads
+++ b/gcc/ada/libgnat/a-ztgeau.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-ztinau.adb b/gcc/ada/libgnat/a-ztinau.adb
index 388d130..e7af509 100644
--- a/gcc/ada/libgnat/a-ztinau.adb
+++ b/gcc/ada/libgnat/a-ztinau.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-ztinau.ads b/gcc/ada/libgnat/a-ztinau.ads
index be71d04..672c339 100644
--- a/gcc/ada/libgnat/a-ztinau.ads
+++ b/gcc/ada/libgnat/a-ztinau.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-ztinio.adb b/gcc/ada/libgnat/a-ztinio.adb
index f94e683..e4915ba 100644
--- a/gcc/ada/libgnat/a-ztinio.adb
+++ b/gcc/ada/libgnat/a-ztinio.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-ztinio__128.adb b/gcc/ada/libgnat/a-ztinio__128.adb
index b5d6b163..1419cd7 100644
--- a/gcc/ada/libgnat/a-ztinio__128.adb
+++ b/gcc/ada/libgnat/a-ztinio__128.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-ztmoio.adb b/gcc/ada/libgnat/a-ztmoio.adb
index 7c5d35a..512cd80 100644
--- a/gcc/ada/libgnat/a-ztmoio.adb
+++ b/gcc/ada/libgnat/a-ztmoio.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-ztmoio__128.adb b/gcc/ada/libgnat/a-ztmoio__128.adb
index aadc08b..b62a41d 100644
--- a/gcc/ada/libgnat/a-ztmoio__128.adb
+++ b/gcc/ada/libgnat/a-ztmoio__128.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-zttest.adb b/gcc/ada/libgnat/a-zttest.adb
index b44eadd..21c1660 100644
--- a/gcc/ada/libgnat/a-zttest.adb
+++ b/gcc/ada/libgnat/a-zttest.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/a-zzboio.adb b/gcc/ada/libgnat/a-zzboio.adb
index 0f113b4..8591142 100644
--- a/gcc/ada/libgnat/a-zzboio.adb
+++ b/gcc/ada/libgnat/a-zzboio.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1997-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1997-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-allein.ads b/gcc/ada/libgnat/g-allein.ads
index e3e7428..26dab71 100644
--- a/gcc/ada/libgnat/g-allein.ads
+++ b/gcc/ada/libgnat/g-allein.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-alleve.adb b/gcc/ada/libgnat/g-alleve.adb
index 91e3ddd..00c08ca 100644
--- a/gcc/ada/libgnat/g-alleve.adb
+++ b/gcc/ada/libgnat/g-alleve.adb
@@ -7,7 +7,7 @@
-- B o d y --
-- (Soft Binding Version) --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-alleve.ads b/gcc/ada/libgnat/g-alleve.ads
index 71d5c37..0f3ec36 100644
--- a/gcc/ada/libgnat/g-alleve.ads
+++ b/gcc/ada/libgnat/g-alleve.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (Soft Binding Version) --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-alleve__hard.adb b/gcc/ada/libgnat/g-alleve__hard.adb
index cf225b0..30b5707 100644
--- a/gcc/ada/libgnat/g-alleve__hard.adb
+++ b/gcc/ada/libgnat/g-alleve__hard.adb
@@ -7,7 +7,7 @@
-- B o d y --
-- (Hard Binding Version) --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-alleve__hard.ads b/gcc/ada/libgnat/g-alleve__hard.ads
index d5c76e7..5a311c7 100644
--- a/gcc/ada/libgnat/g-alleve__hard.ads
+++ b/gcc/ada/libgnat/g-alleve__hard.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (Hard Binding Version) --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-altcon.adb b/gcc/ada/libgnat/g-altcon.adb
index 76d7798..8085a89 100644
--- a/gcc/ada/libgnat/g-altcon.adb
+++ b/gcc/ada/libgnat/g-altcon.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2005-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2005-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-altcon.ads b/gcc/ada/libgnat/g-altcon.ads
index 29e9a0e..5dc53e3 100644
--- a/gcc/ada/libgnat/g-altcon.ads
+++ b/gcc/ada/libgnat/g-altcon.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-altive.ads b/gcc/ada/libgnat/g-altive.ads
index 328fe69..f6507a4 100644
--- a/gcc/ada/libgnat/g-altive.ads
+++ b/gcc/ada/libgnat/g-altive.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-alveop.adb b/gcc/ada/libgnat/g-alveop.adb
index 3036739..e9d7f26 100644
--- a/gcc/ada/libgnat/g-alveop.adb
+++ b/gcc/ada/libgnat/g-alveop.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-alveop.ads b/gcc/ada/libgnat/g-alveop.ads
index cd8cd0c..a883ce0 100644
--- a/gcc/ada/libgnat/g-alveop.ads
+++ b/gcc/ada/libgnat/g-alveop.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-alvety.ads b/gcc/ada/libgnat/g-alvety.ads
index 0a925c5..0ad7053 100644
--- a/gcc/ada/libgnat/g-alvety.ads
+++ b/gcc/ada/libgnat/g-alvety.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-alvevi.ads b/gcc/ada/libgnat/g-alvevi.ads
index 6de39b1..b2beac7 100644
--- a/gcc/ada/libgnat/g-alvevi.ads
+++ b/gcc/ada/libgnat/g-alvevi.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2005-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2005-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-arrspl.adb b/gcc/ada/libgnat/g-arrspl.adb
index eecbf55..2dd78ac 100644
--- a/gcc/ada/libgnat/g-arrspl.adb
+++ b/gcc/ada/libgnat/g-arrspl.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-arrspl.ads b/gcc/ada/libgnat/g-arrspl.ads
index 323a62a..b54780a 100644
--- a/gcc/ada/libgnat/g-arrspl.ads
+++ b/gcc/ada/libgnat/g-arrspl.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-awk.adb b/gcc/ada/libgnat/g-awk.adb
index 1261ac9..62856d9 100644
--- a/gcc/ada/libgnat/g-awk.adb
+++ b/gcc/ada/libgnat/g-awk.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2000-2023, AdaCore --
+-- Copyright (C) 2000-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-awk.ads b/gcc/ada/libgnat/g-awk.ads
index e8ef15a..55a5de9 100644
--- a/gcc/ada/libgnat/g-awk.ads
+++ b/gcc/ada/libgnat/g-awk.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2000-2023, AdaCore --
+-- Copyright (C) 2000-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-binenv.adb b/gcc/ada/libgnat/g-binenv.adb
index e724541..ac1b88f 100644
--- a/gcc/ada/libgnat/g-binenv.adb
+++ b/gcc/ada/libgnat/g-binenv.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2015-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2015-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-binenv.ads b/gcc/ada/libgnat/g-binenv.ads
index ba91c73..d7ed6b1 100644
--- a/gcc/ada/libgnat/g-binenv.ads
+++ b/gcc/ada/libgnat/g-binenv.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2015-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2015-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-binsea.adb b/gcc/ada/libgnat/g-binsea.adb
index ce62413..2a05428 100644
--- a/gcc/ada/libgnat/g-binsea.adb
+++ b/gcc/ada/libgnat/g-binsea.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2022-2023, AdaCore --
+-- Copyright (C) 2022-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-binsea.ads b/gcc/ada/libgnat/g-binsea.ads
index 0e049fd..89eb71a 100644
--- a/gcc/ada/libgnat/g-binsea.ads
+++ b/gcc/ada/libgnat/g-binsea.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2022-2023, AdaCore --
+-- Copyright (C) 2022-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-brapre.ads b/gcc/ada/libgnat/g-brapre.ads
index ce26e5e..21cfe46 100644
--- a/gcc/ada/libgnat/g-brapre.ads
+++ b/gcc/ada/libgnat/g-brapre.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2019-2023, AdaCore --
+-- Copyright (C) 2019-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-bubsor.adb b/gcc/ada/libgnat/g-bubsor.adb
index 46f253f..f6b0f99 100644
--- a/gcc/ada/libgnat/g-bubsor.adb
+++ b/gcc/ada/libgnat/g-bubsor.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1995-2023, AdaCore --
+-- Copyright (C) 1995-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-bubsor.ads b/gcc/ada/libgnat/g-bubsor.ads
index 7b86aa6..4f81a75 100644
--- a/gcc/ada/libgnat/g-bubsor.ads
+++ b/gcc/ada/libgnat/g-bubsor.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1995-2023, AdaCore --
+-- Copyright (C) 1995-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-busora.adb b/gcc/ada/libgnat/g-busora.adb
index 7f2f19b..77d7d57 100644
--- a/gcc/ada/libgnat/g-busora.adb
+++ b/gcc/ada/libgnat/g-busora.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1995-2023, AdaCore --
+-- Copyright (C) 1995-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-busora.ads b/gcc/ada/libgnat/g-busora.ads
index 3b8936f..9b3e9d0 100644
--- a/gcc/ada/libgnat/g-busora.ads
+++ b/gcc/ada/libgnat/g-busora.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1995-2023, AdaCore --
+-- Copyright (C) 1995-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-busorg.adb b/gcc/ada/libgnat/g-busorg.adb
index d43f8a4..7a78480 100644
--- a/gcc/ada/libgnat/g-busorg.adb
+++ b/gcc/ada/libgnat/g-busorg.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1995-2023, AdaCore --
+-- Copyright (C) 1995-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-busorg.ads b/gcc/ada/libgnat/g-busorg.ads
index 330d4ba..741edcd 100644
--- a/gcc/ada/libgnat/g-busorg.ads
+++ b/gcc/ada/libgnat/g-busorg.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1995-2023, AdaCore --
+-- Copyright (C) 1995-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-byorma.adb b/gcc/ada/libgnat/g-byorma.adb
index b020a9f..3471065 100644
--- a/gcc/ada/libgnat/g-byorma.adb
+++ b/gcc/ada/libgnat/g-byorma.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2006-2023, AdaCore --
+-- Copyright (C) 2006-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-byorma.ads b/gcc/ada/libgnat/g-byorma.ads
index e270181..3b43e96 100644
--- a/gcc/ada/libgnat/g-byorma.ads
+++ b/gcc/ada/libgnat/g-byorma.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2006-2023, AdaCore --
+-- Copyright (C) 2006-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-bytswa.adb b/gcc/ada/libgnat/g-bytswa.adb
index e4ebafb..dc2fa9c 100644
--- a/gcc/ada/libgnat/g-bytswa.adb
+++ b/gcc/ada/libgnat/g-bytswa.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2006-2023, AdaCore --
+-- Copyright (C) 2006-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-bytswa.ads b/gcc/ada/libgnat/g-bytswa.ads
index 7fa2313..9b5e637 100644
--- a/gcc/ada/libgnat/g-bytswa.ads
+++ b/gcc/ada/libgnat/g-bytswa.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2006-2023, AdaCore --
+-- Copyright (C) 2006-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-calend.adb b/gcc/ada/libgnat/g-calend.adb
index 24f3a6f..0a98eb2 100644
--- a/gcc/ada/libgnat/g-calend.adb
+++ b/gcc/ada/libgnat/g-calend.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1999-2023, AdaCore --
+-- Copyright (C) 1999-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-calend.ads b/gcc/ada/libgnat/g-calend.ads
index c52c603..b9dd15d 100644
--- a/gcc/ada/libgnat/g-calend.ads
+++ b/gcc/ada/libgnat/g-calend.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1999-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1999-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-casuti.adb b/gcc/ada/libgnat/g-casuti.adb
index 0c10929..07132db 100644
--- a/gcc/ada/libgnat/g-casuti.adb
+++ b/gcc/ada/libgnat/g-casuti.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1995-2023, AdaCore --
+-- Copyright (C) 1995-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-casuti.ads b/gcc/ada/libgnat/g-casuti.ads
index 912a1a5..f2c4460 100644
--- a/gcc/ada/libgnat/g-casuti.ads
+++ b/gcc/ada/libgnat/g-casuti.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1995-2023, AdaCore --
+-- Copyright (C) 1995-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-catiio.adb b/gcc/ada/libgnat/g-catiio.adb
index d80e6fc..3bd11d8 100644
--- a/gcc/ada/libgnat/g-catiio.adb
+++ b/gcc/ada/libgnat/g-catiio.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1999-2023, AdaCore --
+-- Copyright (C) 1999-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-catiio.ads b/gcc/ada/libgnat/g-catiio.ads
index 818d3fe..53a52cd 100644
--- a/gcc/ada/libgnat/g-catiio.ads
+++ b/gcc/ada/libgnat/g-catiio.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1999-2023, AdaCore --
+-- Copyright (C) 1999-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-cgi.adb b/gcc/ada/libgnat/g-cgi.adb
index 7567028..eb30b38 100644
--- a/gcc/ada/libgnat/g-cgi.adb
+++ b/gcc/ada/libgnat/g-cgi.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2023, AdaCore --
+-- Copyright (C) 2001-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-cgi.ads b/gcc/ada/libgnat/g-cgi.ads
index 32b32c9..1040d6d 100644
--- a/gcc/ada/libgnat/g-cgi.ads
+++ b/gcc/ada/libgnat/g-cgi.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2000-2023, AdaCore --
+-- Copyright (C) 2000-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-cgicoo.adb b/gcc/ada/libgnat/g-cgicoo.adb
index ebd5634..d09bb8d 100644
--- a/gcc/ada/libgnat/g-cgicoo.adb
+++ b/gcc/ada/libgnat/g-cgicoo.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2000-2023, AdaCore --
+-- Copyright (C) 2000-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-cgicoo.ads b/gcc/ada/libgnat/g-cgicoo.ads
index 476879f..e35c2d9 100644
--- a/gcc/ada/libgnat/g-cgicoo.ads
+++ b/gcc/ada/libgnat/g-cgicoo.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2000-2023, AdaCore --
+-- Copyright (C) 2000-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-cgideb.adb b/gcc/ada/libgnat/g-cgideb.adb
index e49fd4a..f87ebc1 100644
--- a/gcc/ada/libgnat/g-cgideb.adb
+++ b/gcc/ada/libgnat/g-cgideb.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2000-2023, AdaCore --
+-- Copyright (C) 2000-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-cgideb.ads b/gcc/ada/libgnat/g-cgideb.ads
index 2d95496..2ca0bba 100644
--- a/gcc/ada/libgnat/g-cgideb.ads
+++ b/gcc/ada/libgnat/g-cgideb.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2000-2023, AdaCore --
+-- Copyright (C) 2000-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-comlin.adb b/gcc/ada/libgnat/g-comlin.adb
index c7e9634..9928960 100644
--- a/gcc/ada/libgnat/g-comlin.adb
+++ b/gcc/ada/libgnat/g-comlin.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1999-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1999-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-comlin.ads b/gcc/ada/libgnat/g-comlin.ads
index 46cc7eb..c20cd5e 100644
--- a/gcc/ada/libgnat/g-comlin.ads
+++ b/gcc/ada/libgnat/g-comlin.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1999-2023, AdaCore --
+-- Copyright (C) 1999-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-comver.adb b/gcc/ada/libgnat/g-comver.adb
index af572fc..594bcf7 100644
--- a/gcc/ada/libgnat/g-comver.adb
+++ b/gcc/ada/libgnat/g-comver.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2002-2023, AdaCore --
+-- Copyright (C) 2002-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-comver.ads b/gcc/ada/libgnat/g-comver.ads
index 7f42fa0..021a553 100644
--- a/gcc/ada/libgnat/g-comver.ads
+++ b/gcc/ada/libgnat/g-comver.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2002-2023, AdaCore --
+-- Copyright (C) 2002-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-cppexc.adb b/gcc/ada/libgnat/g-cppexc.adb
index 61e7849..ddb2481 100644
--- a/gcc/ada/libgnat/g-cppexc.adb
+++ b/gcc/ada/libgnat/g-cppexc.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2013-2023, AdaCore --
+-- Copyright (C) 2013-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-cppexc.ads b/gcc/ada/libgnat/g-cppexc.ads
index 3496d05..d2a4356 100644
--- a/gcc/ada/libgnat/g-cppexc.ads
+++ b/gcc/ada/libgnat/g-cppexc.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2013-2023, AdaCore --
+-- Copyright (C) 2013-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-crc32.adb b/gcc/ada/libgnat/g-crc32.adb
index 297e955..ec3e291 100644
--- a/gcc/ada/libgnat/g-crc32.adb
+++ b/gcc/ada/libgnat/g-crc32.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2023, AdaCore --
+-- Copyright (C) 2001-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-crc32.ads b/gcc/ada/libgnat/g-crc32.ads
index b7a7e8f..ab70246 100644
--- a/gcc/ada/libgnat/g-crc32.ads
+++ b/gcc/ada/libgnat/g-crc32.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, AdaCore --
+-- Copyright (C) 2004-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-ctrl_c.adb b/gcc/ada/libgnat/g-ctrl_c.adb
index 9ab3618..41d5ac7 100644
--- a/gcc/ada/libgnat/g-ctrl_c.adb
+++ b/gcc/ada/libgnat/g-ctrl_c.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2002-2023, AdaCore --
+-- Copyright (C) 2002-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-ctrl_c.ads b/gcc/ada/libgnat/g-ctrl_c.ads
index f8b2cc2..e67b23a 100644
--- a/gcc/ada/libgnat/g-ctrl_c.ads
+++ b/gcc/ada/libgnat/g-ctrl_c.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2002-2023, AdaCore --
+-- Copyright (C) 2002-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-curexc.ads b/gcc/ada/libgnat/g-curexc.ads
index 5174365..6c8587a 100644
--- a/gcc/ada/libgnat/g-curexc.ads
+++ b/gcc/ada/libgnat/g-curexc.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1996-2023, AdaCore --
+-- Copyright (C) 1996-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-debpoo.adb b/gcc/ada/libgnat/g-debpoo.adb
index 93be9b1..0aabf8c 100644
--- a/gcc/ada/libgnat/g-debpoo.adb
+++ b/gcc/ada/libgnat/g-debpoo.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-debpoo.ads b/gcc/ada/libgnat/g-debpoo.ads
index dd8554a..93fddd3 100644
--- a/gcc/ada/libgnat/g-debpoo.ads
+++ b/gcc/ada/libgnat/g-debpoo.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-debuti.adb b/gcc/ada/libgnat/g-debuti.adb
index 07b6f3c..05fddc5 100644
--- a/gcc/ada/libgnat/g-debuti.adb
+++ b/gcc/ada/libgnat/g-debuti.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1997-2023, AdaCore --
+-- Copyright (C) 1997-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-debuti.ads b/gcc/ada/libgnat/g-debuti.ads
index 51a1b77..8760371 100644
--- a/gcc/ada/libgnat/g-debuti.ads
+++ b/gcc/ada/libgnat/g-debuti.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1995-2023, AdaCore --
+-- Copyright (C) 1995-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-decstr.adb b/gcc/ada/libgnat/g-decstr.adb
index 18d2a78..5a4cf5d 100644
--- a/gcc/ada/libgnat/g-decstr.adb
+++ b/gcc/ada/libgnat/g-decstr.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2007-2023, AdaCore --
+-- Copyright (C) 2007-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-decstr.ads b/gcc/ada/libgnat/g-decstr.ads
index 641b743..384e1b0 100644
--- a/gcc/ada/libgnat/g-decstr.ads
+++ b/gcc/ada/libgnat/g-decstr.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2007-2023, AdaCore --
+-- Copyright (C) 2007-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-deutst.ads b/gcc/ada/libgnat/g-deutst.ads
index 2595926..d2bbc67 100644
--- a/gcc/ada/libgnat/g-deutst.ads
+++ b/gcc/ada/libgnat/g-deutst.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2007-2023, AdaCore --
+-- Copyright (C) 2007-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-diopit.adb b/gcc/ada/libgnat/g-diopit.adb
index be27c55..57cca86 100644
--- a/gcc/ada/libgnat/g-diopit.adb
+++ b/gcc/ada/libgnat/g-diopit.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2023, AdaCore --
+-- Copyright (C) 2001-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-diopit.ads b/gcc/ada/libgnat/g-diopit.ads
index 63fd792..aee304b 100644
--- a/gcc/ada/libgnat/g-diopit.ads
+++ b/gcc/ada/libgnat/g-diopit.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2023, AdaCore --
+-- Copyright (C) 2001-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-dirope.adb b/gcc/ada/libgnat/g-dirope.adb
index 3cebc9f..c23aa68 100644
--- a/gcc/ada/libgnat/g-dirope.adb
+++ b/gcc/ada/libgnat/g-dirope.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1998-2023, AdaCore --
+-- Copyright (C) 1998-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-dirope.ads b/gcc/ada/libgnat/g-dirope.ads
index cdb99ff..1164ec2 100644
--- a/gcc/ada/libgnat/g-dirope.ads
+++ b/gcc/ada/libgnat/g-dirope.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1998-2023, AdaCore --
+-- Copyright (C) 1998-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-dynhta.adb b/gcc/ada/libgnat/g-dynhta.adb
index 7a62ac8..2e7ca7e 100644
--- a/gcc/ada/libgnat/g-dynhta.adb
+++ b/gcc/ada/libgnat/g-dynhta.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2002-2023, AdaCore --
+-- Copyright (C) 2002-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-dynhta.ads b/gcc/ada/libgnat/g-dynhta.ads
index cf29fd9..59caa53 100644
--- a/gcc/ada/libgnat/g-dynhta.ads
+++ b/gcc/ada/libgnat/g-dynhta.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1995-2023, AdaCore --
+-- Copyright (C) 1995-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-dyntab.adb b/gcc/ada/libgnat/g-dyntab.adb
index 09f50c9..207824a 100644
--- a/gcc/ada/libgnat/g-dyntab.adb
+++ b/gcc/ada/libgnat/g-dyntab.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2000-2023, AdaCore --
+-- Copyright (C) 2000-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-dyntab.ads b/gcc/ada/libgnat/g-dyntab.ads
index be94628..f9c14e5 100644
--- a/gcc/ada/libgnat/g-dyntab.ads
+++ b/gcc/ada/libgnat/g-dyntab.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2000-2023, AdaCore --
+-- Copyright (C) 2000-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-eacodu.adb b/gcc/ada/libgnat/g-eacodu.adb
index 6530c9e..0d7a38a 100644
--- a/gcc/ada/libgnat/g-eacodu.adb
+++ b/gcc/ada/libgnat/g-eacodu.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2003-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2003-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-encstr.adb b/gcc/ada/libgnat/g-encstr.adb
index 51cda92..d707812 100644
--- a/gcc/ada/libgnat/g-encstr.adb
+++ b/gcc/ada/libgnat/g-encstr.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2007-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2007-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-encstr.ads b/gcc/ada/libgnat/g-encstr.ads
index 64ea845..5594e36 100644
--- a/gcc/ada/libgnat/g-encstr.ads
+++ b/gcc/ada/libgnat/g-encstr.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2007-2023, AdaCore --
+-- Copyright (C) 2007-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-enutst.ads b/gcc/ada/libgnat/g-enutst.ads
index dd148ce..0d5619f 100644
--- a/gcc/ada/libgnat/g-enutst.ads
+++ b/gcc/ada/libgnat/g-enutst.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2007-2023, AdaCore --
+-- Copyright (C) 2007-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-excact.adb b/gcc/ada/libgnat/g-excact.adb
index d4abcc1..c442d79 100644
--- a/gcc/ada/libgnat/g-excact.adb
+++ b/gcc/ada/libgnat/g-excact.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-excact.ads b/gcc/ada/libgnat/g-excact.ads
index efa7fa2..f042868 100644
--- a/gcc/ada/libgnat/g-excact.ads
+++ b/gcc/ada/libgnat/g-excact.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-except.ads b/gcc/ada/libgnat/g-except.ads
index 0fe3162..9169f0f 100644
--- a/gcc/ada/libgnat/g-except.ads
+++ b/gcc/ada/libgnat/g-except.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2000-2023, AdaCore --
+-- Copyright (C) 2000-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-exctra.adb b/gcc/ada/libgnat/g-exctra.adb
index 5348ad1..b163fd9 100644
--- a/gcc/ada/libgnat/g-exctra.adb
+++ b/gcc/ada/libgnat/g-exctra.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2000-2023, AdaCore --
+-- Copyright (C) 2000-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-exctra.ads b/gcc/ada/libgnat/g-exctra.ads
index 432b49a..6f9dac6 100644
--- a/gcc/ada/libgnat/g-exctra.ads
+++ b/gcc/ada/libgnat/g-exctra.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2000-2023, AdaCore --
+-- Copyright (C) 2000-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-expect.adb b/gcc/ada/libgnat/g-expect.adb
index cac2b7b..d289b85 100644
--- a/gcc/ada/libgnat/g-expect.adb
+++ b/gcc/ada/libgnat/g-expect.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2000-2023, AdaCore --
+-- Copyright (C) 2000-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-expect.ads b/gcc/ada/libgnat/g-expect.ads
index 0fb3929..5dcfdd2 100644
--- a/gcc/ada/libgnat/g-expect.ads
+++ b/gcc/ada/libgnat/g-expect.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2000-2023, AdaCore --
+-- Copyright (C) 2000-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-exptty.adb b/gcc/ada/libgnat/g-exptty.adb
index bbbb65c..b14bc7a 100644
--- a/gcc/ada/libgnat/g-exptty.adb
+++ b/gcc/ada/libgnat/g-exptty.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2000-2023, AdaCore --
+-- Copyright (C) 2000-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-exptty.ads b/gcc/ada/libgnat/g-exptty.ads
index df218c3..2fcdcc6 100644
--- a/gcc/ada/libgnat/g-exptty.ads
+++ b/gcc/ada/libgnat/g-exptty.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2000-2023, AdaCore --
+-- Copyright (C) 2000-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-flocon.ads b/gcc/ada/libgnat/g-flocon.ads
index 9c1a891..303c96c 100644
--- a/gcc/ada/libgnat/g-flocon.ads
+++ b/gcc/ada/libgnat/g-flocon.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2000-2023, AdaCore --
+-- Copyright (C) 2000-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-forstr.adb b/gcc/ada/libgnat/g-forstr.adb
index 7e6cd6a..78a2934 100644
--- a/gcc/ada/libgnat/g-forstr.adb
+++ b/gcc/ada/libgnat/g-forstr.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2014-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2014-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-forstr.ads b/gcc/ada/libgnat/g-forstr.ads
index 3222c48..f36b3a0 100644
--- a/gcc/ada/libgnat/g-forstr.ads
+++ b/gcc/ada/libgnat/g-forstr.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2014-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2014-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-gfmafu.ads b/gcc/ada/libgnat/g-gfmafu.ads
index 0f6a3da..0d84f94 100644
--- a/gcc/ada/libgnat/g-gfmafu.ads
+++ b/gcc/ada/libgnat/g-gfmafu.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2022-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2022-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-graphs.adb b/gcc/ada/libgnat/g-graphs.adb
index 999b6f8..75750ba 100644
--- a/gcc/ada/libgnat/g-graphs.adb
+++ b/gcc/ada/libgnat/g-graphs.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2018-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2018-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-graphs.ads b/gcc/ada/libgnat/g-graphs.ads
index eb36af0..34d7c0b 100644
--- a/gcc/ada/libgnat/g-graphs.ads
+++ b/gcc/ada/libgnat/g-graphs.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2018-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2018-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-heasor.adb b/gcc/ada/libgnat/g-heasor.adb
index 0794385..24fd0aa 100644
--- a/gcc/ada/libgnat/g-heasor.adb
+++ b/gcc/ada/libgnat/g-heasor.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1995-2023, AdaCore --
+-- Copyright (C) 1995-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-heasor.ads b/gcc/ada/libgnat/g-heasor.ads
index 41f8070..6193d88 100644
--- a/gcc/ada/libgnat/g-heasor.ads
+++ b/gcc/ada/libgnat/g-heasor.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1995-2023, AdaCore --
+-- Copyright (C) 1995-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-hesora.adb b/gcc/ada/libgnat/g-hesora.adb
index 0cfd3e2..b2bbb70 100644
--- a/gcc/ada/libgnat/g-hesora.adb
+++ b/gcc/ada/libgnat/g-hesora.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1995-2023, AdaCore --
+-- Copyright (C) 1995-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-hesora.ads b/gcc/ada/libgnat/g-hesora.ads
index 3fd601f..a2b2d45 100644
--- a/gcc/ada/libgnat/g-hesora.ads
+++ b/gcc/ada/libgnat/g-hesora.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1995-2023, AdaCore --
+-- Copyright (C) 1995-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-hesorg.adb b/gcc/ada/libgnat/g-hesorg.adb
index a73fb95..c29b89e 100644
--- a/gcc/ada/libgnat/g-hesorg.adb
+++ b/gcc/ada/libgnat/g-hesorg.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1995-2023, AdaCore --
+-- Copyright (C) 1995-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-hesorg.ads b/gcc/ada/libgnat/g-hesorg.ads
index 018e4ae..2e3e92e 100644
--- a/gcc/ada/libgnat/g-hesorg.ads
+++ b/gcc/ada/libgnat/g-hesorg.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1995-2023, AdaCore --
+-- Copyright (C) 1995-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-htable.adb b/gcc/ada/libgnat/g-htable.adb
index 16d12ce..69bcfde 100644
--- a/gcc/ada/libgnat/g-htable.adb
+++ b/gcc/ada/libgnat/g-htable.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1995-2023, AdaCore --
+-- Copyright (C) 1995-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-htable.ads b/gcc/ada/libgnat/g-htable.ads
index e8ea643..ab4a004 100644
--- a/gcc/ada/libgnat/g-htable.ads
+++ b/gcc/ada/libgnat/g-htable.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1995-2023, AdaCore --
+-- Copyright (C) 1995-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-io.adb b/gcc/ada/libgnat/g-io.adb
index b626100..4091a5e 100644
--- a/gcc/ada/libgnat/g-io.adb
+++ b/gcc/ada/libgnat/g-io.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1995-2023, AdaCore --
+-- Copyright (C) 1995-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-io.ads b/gcc/ada/libgnat/g-io.ads
index 48252fc..de0ec16 100644
--- a/gcc/ada/libgnat/g-io.ads
+++ b/gcc/ada/libgnat/g-io.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1995-2023, AdaCore --
+-- Copyright (C) 1995-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-io_aux.adb b/gcc/ada/libgnat/g-io_aux.adb
index f33deba..4c71e38 100644
--- a/gcc/ada/libgnat/g-io_aux.adb
+++ b/gcc/ada/libgnat/g-io_aux.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1995-2023, AdaCore --
+-- Copyright (C) 1995-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-io_aux.ads b/gcc/ada/libgnat/g-io_aux.ads
index cd2fba8..c396c80 100644
--- a/gcc/ada/libgnat/g-io_aux.ads
+++ b/gcc/ada/libgnat/g-io_aux.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1995-2023, AdaCore --
+-- Copyright (C) 1995-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-lists.adb b/gcc/ada/libgnat/g-lists.adb
index 16d3881..cf118ab 100644
--- a/gcc/ada/libgnat/g-lists.adb
+++ b/gcc/ada/libgnat/g-lists.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2018-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2018-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-lists.ads b/gcc/ada/libgnat/g-lists.ads
index 10d261b..4745913 100644
--- a/gcc/ada/libgnat/g-lists.ads
+++ b/gcc/ada/libgnat/g-lists.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2018-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2018-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-locfil.adb b/gcc/ada/libgnat/g-locfil.adb
index 5b83b5b..fad89fe 100644
--- a/gcc/ada/libgnat/g-locfil.adb
+++ b/gcc/ada/libgnat/g-locfil.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1998-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1998-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-locfil.ads b/gcc/ada/libgnat/g-locfil.ads
index b85f501..e742d7a 100644
--- a/gcc/ada/libgnat/g-locfil.ads
+++ b/gcc/ada/libgnat/g-locfil.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1995-2023, AdaCore --
+-- Copyright (C) 1995-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-mbdira.adb b/gcc/ada/libgnat/g-mbdira.adb
index c1f6db1..09d2693 100644
--- a/gcc/ada/libgnat/g-mbdira.adb
+++ b/gcc/ada/libgnat/g-mbdira.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-mbdira.ads b/gcc/ada/libgnat/g-mbdira.ads
index 7789ffc..aa24ef5 100644
--- a/gcc/ada/libgnat/g-mbdira.ads
+++ b/gcc/ada/libgnat/g-mbdira.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/g-mbflra.adb b/gcc/ada/libgnat/g-mbflra.adb
index 40c686b..9c3c6e1 100644
--- a/gcc/ada/libgnat/g-mbflra.adb
+++ b/gcc/ada/libgnat/g-mbflra.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-mbflra.ads b/gcc/ada/libgnat/g-mbflra.ads
index 45952af..d941d70 100644
--- a/gcc/ada/libgnat/g-mbflra.ads
+++ b/gcc/ada/libgnat/g-mbflra.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/g-md5.adb b/gcc/ada/libgnat/g-md5.adb
index ee8b09d..78e804d 100644
--- a/gcc/ada/libgnat/g-md5.adb
+++ b/gcc/ada/libgnat/g-md5.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-md5.ads b/gcc/ada/libgnat/g-md5.ads
index 32e40b3..13a6b0c 100644
--- a/gcc/ada/libgnat/g-md5.ads
+++ b/gcc/ada/libgnat/g-md5.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-memdum.adb b/gcc/ada/libgnat/g-memdum.adb
index aa13b61..aa68663 100644
--- a/gcc/ada/libgnat/g-memdum.adb
+++ b/gcc/ada/libgnat/g-memdum.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2003-2023, AdaCore --
+-- Copyright (C) 2003-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-memdum.ads b/gcc/ada/libgnat/g-memdum.ads
index eb8a9e9..54001f0 100644
--- a/gcc/ada/libgnat/g-memdum.ads
+++ b/gcc/ada/libgnat/g-memdum.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2003-2023, AdaCore --
+-- Copyright (C) 2003-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-moreex.adb b/gcc/ada/libgnat/g-moreex.adb
index 5def2ae..e76140a 100644
--- a/gcc/ada/libgnat/g-moreex.adb
+++ b/gcc/ada/libgnat/g-moreex.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2000-2023, AdaCore --
+-- Copyright (C) 2000-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-moreex.ads b/gcc/ada/libgnat/g-moreex.ads
index 7ff4dd9..37302be 100644
--- a/gcc/ada/libgnat/g-moreex.ads
+++ b/gcc/ada/libgnat/g-moreex.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2000-2023, AdaCore --
+-- Copyright (C) 2000-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-os_lib.adb b/gcc/ada/libgnat/g-os_lib.adb
index 63b2b20..d7a4d56 100644
--- a/gcc/ada/libgnat/g-os_lib.adb
+++ b/gcc/ada/libgnat/g-os_lib.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1995-2023, AdaCore --
+-- Copyright (C) 1995-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-os_lib.ads b/gcc/ada/libgnat/g-os_lib.ads
index 70a9986..2ab34fc 100644
--- a/gcc/ada/libgnat/g-os_lib.ads
+++ b/gcc/ada/libgnat/g-os_lib.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1995-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1995-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-pehage.adb b/gcc/ada/libgnat/g-pehage.adb
index c12a0e1..4212653 100644
--- a/gcc/ada/libgnat/g-pehage.adb
+++ b/gcc/ada/libgnat/g-pehage.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2002-2023, AdaCore --
+-- Copyright (C) 2002-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-pehage.ads b/gcc/ada/libgnat/g-pehage.ads
index 3f3810b..8193540 100644
--- a/gcc/ada/libgnat/g-pehage.ads
+++ b/gcc/ada/libgnat/g-pehage.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2002-2023, AdaCore --
+-- Copyright (C) 2002-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-rannum.adb b/gcc/ada/libgnat/g-rannum.adb
index 8cfa1ec..8bfd6ad 100644
--- a/gcc/ada/libgnat/g-rannum.adb
+++ b/gcc/ada/libgnat/g-rannum.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2007-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2007-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-rannum.ads b/gcc/ada/libgnat/g-rannum.ads
index 7e198a0..b79d63d 100644
--- a/gcc/ada/libgnat/g-rannum.ads
+++ b/gcc/ada/libgnat/g-rannum.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2007-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2007-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-regexp.adb b/gcc/ada/libgnat/g-regexp.adb
index 2b83476..9f79ec8 100644
--- a/gcc/ada/libgnat/g-regexp.adb
+++ b/gcc/ada/libgnat/g-regexp.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1999-2023, AdaCore --
+-- Copyright (C) 1999-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-regexp.ads b/gcc/ada/libgnat/g-regexp.ads
index 63182ca..b0a578c 100644
--- a/gcc/ada/libgnat/g-regexp.ads
+++ b/gcc/ada/libgnat/g-regexp.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1998-2023, AdaCore --
+-- Copyright (C) 1998-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-regist.adb b/gcc/ada/libgnat/g-regist.adb
index fccb907..8d7e89d 100644
--- a/gcc/ada/libgnat/g-regist.adb
+++ b/gcc/ada/libgnat/g-regist.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-regist.ads b/gcc/ada/libgnat/g-regist.ads
index e465bf7..acc1050 100644
--- a/gcc/ada/libgnat/g-regist.ads
+++ b/gcc/ada/libgnat/g-regist.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-regpat.adb b/gcc/ada/libgnat/g-regpat.adb
index 08b89b9..3590f3d 100644
--- a/gcc/ada/libgnat/g-regpat.adb
+++ b/gcc/ada/libgnat/g-regpat.adb
@@ -7,7 +7,7 @@
-- B o d y --
-- --
-- Copyright (C) 1986 by University of Toronto. --
--- Copyright (C) 1999-2023, AdaCore --
+-- Copyright (C) 1999-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-regpat.ads b/gcc/ada/libgnat/g-regpat.ads
index d59434a..abee283 100644
--- a/gcc/ada/libgnat/g-regpat.ads
+++ b/gcc/ada/libgnat/g-regpat.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- --
-- Copyright (C) 1986 by University of Toronto. --
--- Copyright (C) 1996-2023, AdaCore --
+-- Copyright (C) 1996-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-rewdat.adb b/gcc/ada/libgnat/g-rewdat.adb
index fd3ab01..894bef9 100644
--- a/gcc/ada/libgnat/g-rewdat.adb
+++ b/gcc/ada/libgnat/g-rewdat.adb
@@ -5,7 +5,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2014-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2014-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-rewdat.ads b/gcc/ada/libgnat/g-rewdat.ads
index 8cf8841..47586fb 100644
--- a/gcc/ada/libgnat/g-rewdat.ads
+++ b/gcc/ada/libgnat/g-rewdat.ads
@@ -5,7 +5,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2014-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2014-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-sechas.adb b/gcc/ada/libgnat/g-sechas.adb
index aa55dcd..169c727 100644
--- a/gcc/ada/libgnat/g-sechas.adb
+++ b/gcc/ada/libgnat/g-sechas.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-sechas.ads b/gcc/ada/libgnat/g-sechas.ads
index 786957f..728f9a8 100644
--- a/gcc/ada/libgnat/g-sechas.ads
+++ b/gcc/ada/libgnat/g-sechas.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-sehamd.adb b/gcc/ada/libgnat/g-sehamd.adb
index 2d581b8..657157f 100644
--- a/gcc/ada/libgnat/g-sehamd.adb
+++ b/gcc/ada/libgnat/g-sehamd.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-sehamd.ads b/gcc/ada/libgnat/g-sehamd.ads
index 6f824d5..df32d99 100644
--- a/gcc/ada/libgnat/g-sehamd.ads
+++ b/gcc/ada/libgnat/g-sehamd.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-sehash.adb b/gcc/ada/libgnat/g-sehash.adb
index 02f40d2..18a2592 100644
--- a/gcc/ada/libgnat/g-sehash.adb
+++ b/gcc/ada/libgnat/g-sehash.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-sehash.ads b/gcc/ada/libgnat/g-sehash.ads
index b476dc2..d581af7 100644
--- a/gcc/ada/libgnat/g-sehash.ads
+++ b/gcc/ada/libgnat/g-sehash.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-sercom.adb b/gcc/ada/libgnat/g-sercom.adb
index cc60983..0aeefa7 100644
--- a/gcc/ada/libgnat/g-sercom.adb
+++ b/gcc/ada/libgnat/g-sercom.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2007-2023, AdaCore --
+-- Copyright (C) 2007-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-sercom.ads b/gcc/ada/libgnat/g-sercom.ads
index 1ef4f9d..94ce048 100644
--- a/gcc/ada/libgnat/g-sercom.ads
+++ b/gcc/ada/libgnat/g-sercom.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2007-2023, AdaCore --
+-- Copyright (C) 2007-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-sercom__linux.adb b/gcc/ada/libgnat/g-sercom__linux.adb
index 401ab85..c9a10e9 100644
--- a/gcc/ada/libgnat/g-sercom__linux.adb
+++ b/gcc/ada/libgnat/g-sercom__linux.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2007-2023, AdaCore --
+-- Copyright (C) 2007-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-sercom__mingw.adb b/gcc/ada/libgnat/g-sercom__mingw.adb
index d01d84d..d0da35b 100644
--- a/gcc/ada/libgnat/g-sercom__mingw.adb
+++ b/gcc/ada/libgnat/g-sercom__mingw.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2007-2023, AdaCore --
+-- Copyright (C) 2007-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-sestin.ads b/gcc/ada/libgnat/g-sestin.ads
index cd9df72..3df524f 100644
--- a/gcc/ada/libgnat/g-sestin.ads
+++ b/gcc/ada/libgnat/g-sestin.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, AdaCore --
+-- Copyright (C) 2004-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-sets.adb b/gcc/ada/libgnat/g-sets.adb
index 879f289..e68435b 100644
--- a/gcc/ada/libgnat/g-sets.adb
+++ b/gcc/ada/libgnat/g-sets.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2018-2023, AdaCore --
+-- Copyright (C) 2018-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-sets.ads b/gcc/ada/libgnat/g-sets.ads
index ccf4fba..5e654ba 100644
--- a/gcc/ada/libgnat/g-sets.ads
+++ b/gcc/ada/libgnat/g-sets.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2018-2023, AdaCore --
+-- Copyright (C) 2018-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-sha1.adb b/gcc/ada/libgnat/g-sha1.adb
index 3fb3291..85f01621 100644
--- a/gcc/ada/libgnat/g-sha1.adb
+++ b/gcc/ada/libgnat/g-sha1.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-sha1.ads b/gcc/ada/libgnat/g-sha1.ads
index b608441..b0b369f 100644
--- a/gcc/ada/libgnat/g-sha1.ads
+++ b/gcc/ada/libgnat/g-sha1.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-sha224.ads b/gcc/ada/libgnat/g-sha224.ads
index 8e4e6db..e49c82f 100644
--- a/gcc/ada/libgnat/g-sha224.ads
+++ b/gcc/ada/libgnat/g-sha224.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-sha256.ads b/gcc/ada/libgnat/g-sha256.ads
index 862e544..986e88b 100644
--- a/gcc/ada/libgnat/g-sha256.ads
+++ b/gcc/ada/libgnat/g-sha256.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-sha384.ads b/gcc/ada/libgnat/g-sha384.ads
index 3935ccf..b73c6286 100644
--- a/gcc/ada/libgnat/g-sha384.ads
+++ b/gcc/ada/libgnat/g-sha384.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-sha512.ads b/gcc/ada/libgnat/g-sha512.ads
index 8b3f25a..d8cead2 100644
--- a/gcc/ada/libgnat/g-sha512.ads
+++ b/gcc/ada/libgnat/g-sha512.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-shsh32.adb b/gcc/ada/libgnat/g-shsh32.adb
index ba1b7ba..5ad2854 100644
--- a/gcc/ada/libgnat/g-shsh32.adb
+++ b/gcc/ada/libgnat/g-shsh32.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-shsh32.ads b/gcc/ada/libgnat/g-shsh32.ads
index 1801ca994..2abfbfc 100644
--- a/gcc/ada/libgnat/g-shsh32.ads
+++ b/gcc/ada/libgnat/g-shsh32.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-shsh64.adb b/gcc/ada/libgnat/g-shsh64.adb
index f2852c7..648d610 100644
--- a/gcc/ada/libgnat/g-shsh64.adb
+++ b/gcc/ada/libgnat/g-shsh64.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-shsh64.ads b/gcc/ada/libgnat/g-shsh64.ads
index 9cb3bdd..9233bab 100644
--- a/gcc/ada/libgnat/g-shsh64.ads
+++ b/gcc/ada/libgnat/g-shsh64.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-shshco.adb b/gcc/ada/libgnat/g-shshco.adb
index faeb528..e6207e0 100644
--- a/gcc/ada/libgnat/g-shshco.adb
+++ b/gcc/ada/libgnat/g-shshco.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-shshco.ads b/gcc/ada/libgnat/g-shshco.ads
index fb4c40d..1cb3c34 100644
--- a/gcc/ada/libgnat/g-shshco.ads
+++ b/gcc/ada/libgnat/g-shshco.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-soccon.ads b/gcc/ada/libgnat/g-soccon.ads
index a300e5c..3a2e094 100644
--- a/gcc/ada/libgnat/g-soccon.ads
+++ b/gcc/ada/libgnat/g-soccon.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2000-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2000-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-socket.adb b/gcc/ada/libgnat/g-socket.adb
index c4e2907..e2f91b3 100644
--- a/gcc/ada/libgnat/g-socket.adb
+++ b/gcc/ada/libgnat/g-socket.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2023, AdaCore --
+-- Copyright (C) 2001-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-socket.ads b/gcc/ada/libgnat/g-socket.ads
index 90740ec..b223849 100644
--- a/gcc/ada/libgnat/g-socket.ads
+++ b/gcc/ada/libgnat/g-socket.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2023, AdaCore --
+-- Copyright (C) 2001-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-socket__dummy.adb b/gcc/ada/libgnat/g-socket__dummy.adb
index efd5fc6..b68abac 100644
--- a/gcc/ada/libgnat/g-socket__dummy.adb
+++ b/gcc/ada/libgnat/g-socket__dummy.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2023, AdaCore --
+-- Copyright (C) 2001-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-socket__dummy.ads b/gcc/ada/libgnat/g-socket__dummy.ads
index e903c7b..650fbdb 100644
--- a/gcc/ada/libgnat/g-socket__dummy.ads
+++ b/gcc/ada/libgnat/g-socket__dummy.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2023, AdaCore --
+-- Copyright (C) 2001-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-socpol.adb b/gcc/ada/libgnat/g-socpol.adb
index 5bd4653..e327b2e 100644
--- a/gcc/ada/libgnat/g-socpol.adb
+++ b/gcc/ada/libgnat/g-socpol.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2020-2023, AdaCore --
+-- Copyright (C) 2020-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-socpol.ads b/gcc/ada/libgnat/g-socpol.ads
index 728cb51..bfe5c17 100644
--- a/gcc/ada/libgnat/g-socpol.ads
+++ b/gcc/ada/libgnat/g-socpol.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, AdaCore --
+-- Copyright (C) 2020-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-socpol__dummy.adb b/gcc/ada/libgnat/g-socpol__dummy.adb
index 782a377..d63ac96 100644
--- a/gcc/ada/libgnat/g-socpol__dummy.adb
+++ b/gcc/ada/libgnat/g-socpol__dummy.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2020-2023, AdaCore --
+-- Copyright (C) 2020-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-socpol__dummy.ads b/gcc/ada/libgnat/g-socpol__dummy.ads
index b7731aa..8f6ae8e 100644
--- a/gcc/ada/libgnat/g-socpol__dummy.ads
+++ b/gcc/ada/libgnat/g-socpol__dummy.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, AdaCore --
+-- Copyright (C) 2020-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-socthi.adb b/gcc/ada/libgnat/g-socthi.adb
index 530ec24..dce2717 100644
--- a/gcc/ada/libgnat/g-socthi.adb
+++ b/gcc/ada/libgnat/g-socthi.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2023, AdaCore --
+-- Copyright (C) 2001-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-socthi.ads b/gcc/ada/libgnat/g-socthi.ads
index 4ff3d41..ef53e04 100644
--- a/gcc/ada/libgnat/g-socthi.ads
+++ b/gcc/ada/libgnat/g-socthi.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2023, AdaCore --
+-- Copyright (C) 2001-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-socthi__dummy.adb b/gcc/ada/libgnat/g-socthi__dummy.adb
index 7320db9..912d68f 100644
--- a/gcc/ada/libgnat/g-socthi__dummy.adb
+++ b/gcc/ada/libgnat/g-socthi__dummy.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2023, AdaCore --
+-- Copyright (C) 2001-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-socthi__dummy.ads b/gcc/ada/libgnat/g-socthi__dummy.ads
index dc9efab..3334fa2 100644
--- a/gcc/ada/libgnat/g-socthi__dummy.ads
+++ b/gcc/ada/libgnat/g-socthi__dummy.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2023, AdaCore --
+-- Copyright (C) 2001-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-socthi__mingw.adb b/gcc/ada/libgnat/g-socthi__mingw.adb
index b743acd..9aae6f6 100644
--- a/gcc/ada/libgnat/g-socthi__mingw.adb
+++ b/gcc/ada/libgnat/g-socthi__mingw.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2023, AdaCore --
+-- Copyright (C) 2001-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-socthi__mingw.ads b/gcc/ada/libgnat/g-socthi__mingw.ads
index 1bc90ef..01bbb96 100644
--- a/gcc/ada/libgnat/g-socthi__mingw.ads
+++ b/gcc/ada/libgnat/g-socthi__mingw.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2023, AdaCore --
+-- Copyright (C) 2001-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-socthi__vxworks.adb b/gcc/ada/libgnat/g-socthi__vxworks.adb
index 4be57bf..53ddc43 100644
--- a/gcc/ada/libgnat/g-socthi__vxworks.adb
+++ b/gcc/ada/libgnat/g-socthi__vxworks.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2002-2023, AdaCore --
+-- Copyright (C) 2002-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-socthi__vxworks.ads b/gcc/ada/libgnat/g-socthi__vxworks.ads
index f731a9e..5480efb 100644
--- a/gcc/ada/libgnat/g-socthi__vxworks.ads
+++ b/gcc/ada/libgnat/g-socthi__vxworks.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2002-2023, AdaCore --
+-- Copyright (C) 2002-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-soliop.ads b/gcc/ada/libgnat/g-soliop.ads
index 0fd3a3d..6895d35 100644
--- a/gcc/ada/libgnat/g-soliop.ads
+++ b/gcc/ada/libgnat/g-soliop.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2023, AdaCore --
+-- Copyright (C) 2001-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-soliop__lynxos.ads b/gcc/ada/libgnat/g-soliop__lynxos.ads
index 7565895..2c19af2 100644
--- a/gcc/ada/libgnat/g-soliop__lynxos.ads
+++ b/gcc/ada/libgnat/g-soliop__lynxos.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2023, AdaCore --
+-- Copyright (C) 2001-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-soliop__mingw.ads b/gcc/ada/libgnat/g-soliop__mingw.ads
index 0fb790a..b8ceb72 100644
--- a/gcc/ada/libgnat/g-soliop__mingw.ads
+++ b/gcc/ada/libgnat/g-soliop__mingw.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2023, AdaCore --
+-- Copyright (C) 2001-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-soliop__qnx.ads b/gcc/ada/libgnat/g-soliop__qnx.ads
index f73e725..c6a7ef7 100644
--- a/gcc/ada/libgnat/g-soliop__qnx.ads
+++ b/gcc/ada/libgnat/g-soliop__qnx.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2023, AdaCore --
+-- Copyright (C) 2001-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-soliop__solaris.ads b/gcc/ada/libgnat/g-soliop__solaris.ads
index 82abd2d..6bdb7d5 100644
--- a/gcc/ada/libgnat/g-soliop__solaris.ads
+++ b/gcc/ada/libgnat/g-soliop__solaris.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2023, AdaCore --
+-- Copyright (C) 2001-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-sopowa.adb b/gcc/ada/libgnat/g-sopowa.adb
index b8f5db4..79ddef0 100644
--- a/gcc/ada/libgnat/g-sopowa.adb
+++ b/gcc/ada/libgnat/g-sopowa.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2020-2023, AdaCore --
+-- Copyright (C) 2020-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-sopowa__mingw.adb b/gcc/ada/libgnat/g-sopowa__mingw.adb
index be8f639..50bb576 100644
--- a/gcc/ada/libgnat/g-sopowa__mingw.adb
+++ b/gcc/ada/libgnat/g-sopowa__mingw.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2020-2023, AdaCore --
+-- Copyright (C) 2020-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-sopowa__posix.adb b/gcc/ada/libgnat/g-sopowa__posix.adb
index 01f5cdb..6407a70 100644
--- a/gcc/ada/libgnat/g-sopowa__posix.adb
+++ b/gcc/ada/libgnat/g-sopowa__posix.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2020-2023, AdaCore --
+-- Copyright (C) 2020-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-sothco.adb b/gcc/ada/libgnat/g-sothco.adb
index 84cd40a..54ec344 100644
--- a/gcc/ada/libgnat/g-sothco.adb
+++ b/gcc/ada/libgnat/g-sothco.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2008-2023, AdaCore --
+-- Copyright (C) 2008-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-sothco.ads b/gcc/ada/libgnat/g-sothco.ads
index 60aae31..8c21933 100644
--- a/gcc/ada/libgnat/g-sothco.ads
+++ b/gcc/ada/libgnat/g-sothco.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2008-2023, AdaCore --
+-- Copyright (C) 2008-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-sothco__dummy.adb b/gcc/ada/libgnat/g-sothco__dummy.adb
index 99ec3dd..3a9bb01 100644
--- a/gcc/ada/libgnat/g-sothco__dummy.adb
+++ b/gcc/ada/libgnat/g-sothco__dummy.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2008-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2008-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-sothco__dummy.ads b/gcc/ada/libgnat/g-sothco__dummy.ads
index b6f42d3..04a9147 100644
--- a/gcc/ada/libgnat/g-sothco__dummy.ads
+++ b/gcc/ada/libgnat/g-sothco__dummy.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2008-2023, AdaCore --
+-- Copyright (C) 2008-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-souinf.ads b/gcc/ada/libgnat/g-souinf.ads
index ea65c73..4e8f37a 100644
--- a/gcc/ada/libgnat/g-souinf.ads
+++ b/gcc/ada/libgnat/g-souinf.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2000-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2000-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-spchge.adb b/gcc/ada/libgnat/g-spchge.adb
index a1cf668..96e39bb 100644
--- a/gcc/ada/libgnat/g-spchge.adb
+++ b/gcc/ada/libgnat/g-spchge.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1998-2023, AdaCore --
+-- Copyright (C) 1998-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-spchge.ads b/gcc/ada/libgnat/g-spchge.ads
index a69c0f7..441709f 100644
--- a/gcc/ada/libgnat/g-spchge.ads
+++ b/gcc/ada/libgnat/g-spchge.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1998-2023, AdaCore --
+-- Copyright (C) 1998-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-speche.adb b/gcc/ada/libgnat/g-speche.adb
index a3303b0..976f22a 100644
--- a/gcc/ada/libgnat/g-speche.adb
+++ b/gcc/ada/libgnat/g-speche.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1998-2023, AdaCore --
+-- Copyright (C) 1998-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-speche.ads b/gcc/ada/libgnat/g-speche.ads
index 380eddd..cb4f7a8 100644
--- a/gcc/ada/libgnat/g-speche.ads
+++ b/gcc/ada/libgnat/g-speche.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1998-2023, AdaCore --
+-- Copyright (C) 1998-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-spipat.adb b/gcc/ada/libgnat/g-spipat.adb
index ca42bd16..b520e8b 100644
--- a/gcc/ada/libgnat/g-spipat.adb
+++ b/gcc/ada/libgnat/g-spipat.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1998-2023, AdaCore --
+-- Copyright (C) 1998-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-spipat.ads b/gcc/ada/libgnat/g-spipat.ads
index 297afbf..eaea29c 100644
--- a/gcc/ada/libgnat/g-spipat.ads
+++ b/gcc/ada/libgnat/g-spipat.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1997-2023, AdaCore --
+-- Copyright (C) 1997-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-spitbo.adb b/gcc/ada/libgnat/g-spitbo.adb
index 7f2ad12..b84a29a 100644
--- a/gcc/ada/libgnat/g-spitbo.adb
+++ b/gcc/ada/libgnat/g-spitbo.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1998-2023, AdaCore --
+-- Copyright (C) 1998-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-spitbo.ads b/gcc/ada/libgnat/g-spitbo.ads
index 7d375be..daf701e 100644
--- a/gcc/ada/libgnat/g-spitbo.ads
+++ b/gcc/ada/libgnat/g-spitbo.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1997-2023, AdaCore --
+-- Copyright (C) 1997-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-spogwa.adb b/gcc/ada/libgnat/g-spogwa.adb
index cd3e977..c16674e 100644
--- a/gcc/ada/libgnat/g-spogwa.adb
+++ b/gcc/ada/libgnat/g-spogwa.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2020-2023, AdaCore --
+-- Copyright (C) 2020-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-spogwa.ads b/gcc/ada/libgnat/g-spogwa.ads
index 105d2a5..cab11fa 100644
--- a/gcc/ada/libgnat/g-spogwa.ads
+++ b/gcc/ada/libgnat/g-spogwa.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, AdaCore --
+-- Copyright (C) 2020-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-sptabo.ads b/gcc/ada/libgnat/g-sptabo.ads
index c8e1865..ef43c8a 100644
--- a/gcc/ada/libgnat/g-sptabo.ads
+++ b/gcc/ada/libgnat/g-sptabo.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1997-2023, AdaCore --
+-- Copyright (C) 1997-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-sptain.ads b/gcc/ada/libgnat/g-sptain.ads
index 251051d..913f0cf 100644
--- a/gcc/ada/libgnat/g-sptain.ads
+++ b/gcc/ada/libgnat/g-sptain.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1997-2023, AdaCore --
+-- Copyright (C) 1997-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-sptavs.ads b/gcc/ada/libgnat/g-sptavs.ads
index ca278e2..6080ec9bc 100644
--- a/gcc/ada/libgnat/g-sptavs.ads
+++ b/gcc/ada/libgnat/g-sptavs.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1997-2023, AdaCore --
+-- Copyright (C) 1997-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-sse.ads b/gcc/ada/libgnat/g-sse.ads
index 494e0f0..e5996c7 100644
--- a/gcc/ada/libgnat/g-sse.ads
+++ b/gcc/ada/libgnat/g-sse.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-ssvety.ads b/gcc/ada/libgnat/g-ssvety.ads
index 4d1f224..737776e 100644
--- a/gcc/ada/libgnat/g-ssvety.ads
+++ b/gcc/ada/libgnat/g-ssvety.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-sthcso.adb b/gcc/ada/libgnat/g-sthcso.adb
index a3ddee8..b08c310 100644
--- a/gcc/ada/libgnat/g-sthcso.adb
+++ b/gcc/ada/libgnat/g-sthcso.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2023, AdaCore --
+-- Copyright (C) 2001-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-stheme.adb b/gcc/ada/libgnat/g-stheme.adb
index 8bd36c1..1d31124 100644
--- a/gcc/ada/libgnat/g-stheme.adb
+++ b/gcc/ada/libgnat/g-stheme.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2007-2023, AdaCore --
+-- Copyright (C) 2007-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-strhas.ads b/gcc/ada/libgnat/g-strhas.ads
index 19f7e55..be0b973 100644
--- a/gcc/ada/libgnat/g-strhas.ads
+++ b/gcc/ada/libgnat/g-strhas.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2015-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2015-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-string.adb b/gcc/ada/libgnat/g-string.adb
index 3d98b4a..e97001e 100644
--- a/gcc/ada/libgnat/g-string.adb
+++ b/gcc/ada/libgnat/g-string.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1995-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1995-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-string.ads b/gcc/ada/libgnat/g-string.ads
index b3bcbb3..70cdff8 100644
--- a/gcc/ada/libgnat/g-string.ads
+++ b/gcc/ada/libgnat/g-string.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1995-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1995-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-strspl.ads b/gcc/ada/libgnat/g-strspl.ads
index a7d7686..e785cce 100644
--- a/gcc/ada/libgnat/g-strspl.ads
+++ b/gcc/ada/libgnat/g-strspl.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-stseme.adb b/gcc/ada/libgnat/g-stseme.adb
index 829ca19..43b88d1 100644
--- a/gcc/ada/libgnat/g-stseme.adb
+++ b/gcc/ada/libgnat/g-stseme.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2007-2023, AdaCore --
+-- Copyright (C) 2007-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-stsifd__sockets.adb b/gcc/ada/libgnat/g-stsifd__sockets.adb
index d01ba46..2e2a354 100644
--- a/gcc/ada/libgnat/g-stsifd__sockets.adb
+++ b/gcc/ada/libgnat/g-stsifd__sockets.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2023, AdaCore --
+-- Copyright (C) 2001-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-table.adb b/gcc/ada/libgnat/g-table.adb
index c128c0a..03ebc7e 100644
--- a/gcc/ada/libgnat/g-table.adb
+++ b/gcc/ada/libgnat/g-table.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1998-2023, AdaCore --
+-- Copyright (C) 1998-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-table.ads b/gcc/ada/libgnat/g-table.ads
index c98478c..68eb686 100644
--- a/gcc/ada/libgnat/g-table.ads
+++ b/gcc/ada/libgnat/g-table.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1998-2023, AdaCore --
+-- Copyright (C) 1998-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-tasloc.adb b/gcc/ada/libgnat/g-tasloc.adb
index 40e5174..7ebb40a 100644
--- a/gcc/ada/libgnat/g-tasloc.adb
+++ b/gcc/ada/libgnat/g-tasloc.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1997-2023, AdaCore --
+-- Copyright (C) 1997-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-tasloc.ads b/gcc/ada/libgnat/g-tasloc.ads
index b09c50f..c5b32dc 100644
--- a/gcc/ada/libgnat/g-tasloc.ads
+++ b/gcc/ada/libgnat/g-tasloc.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1998-2023, AdaCore --
+-- Copyright (C) 1998-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-timsta.adb b/gcc/ada/libgnat/g-timsta.adb
index 5f1396a..a2b9427 100644
--- a/gcc/ada/libgnat/g-timsta.adb
+++ b/gcc/ada/libgnat/g-timsta.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2008-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2008-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-timsta.ads b/gcc/ada/libgnat/g-timsta.ads
index 718a9d0..fe11c04 100644
--- a/gcc/ada/libgnat/g-timsta.ads
+++ b/gcc/ada/libgnat/g-timsta.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2008-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2008-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-traceb.adb b/gcc/ada/libgnat/g-traceb.adb
index 17c3459..f8b4ba9 100644
--- a/gcc/ada/libgnat/g-traceb.adb
+++ b/gcc/ada/libgnat/g-traceb.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1999-2023, AdaCore --
+-- Copyright (C) 1999-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-traceb.ads b/gcc/ada/libgnat/g-traceb.ads
index deddf44..75e21aa 100644
--- a/gcc/ada/libgnat/g-traceb.ads
+++ b/gcc/ada/libgnat/g-traceb.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1999-2023, AdaCore --
+-- Copyright (C) 1999-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-trasym.adb b/gcc/ada/libgnat/g-trasym.adb
index 8781a55..98779b0 100644
--- a/gcc/ada/libgnat/g-trasym.adb
+++ b/gcc/ada/libgnat/g-trasym.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1999-2023, AdaCore --
+-- Copyright (C) 1999-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-trasym.ads b/gcc/ada/libgnat/g-trasym.ads
index 4a04350..044de86 100644
--- a/gcc/ada/libgnat/g-trasym.ads
+++ b/gcc/ada/libgnat/g-trasym.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1999-2023, AdaCore --
+-- Copyright (C) 1999-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-tty.adb b/gcc/ada/libgnat/g-tty.adb
index 1c555d8..1966851 100644
--- a/gcc/ada/libgnat/g-tty.adb
+++ b/gcc/ada/libgnat/g-tty.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2002-2023, AdaCore --
+-- Copyright (C) 2002-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-tty.ads b/gcc/ada/libgnat/g-tty.ads
index 73a4fa0..5f5afad 100644
--- a/gcc/ada/libgnat/g-tty.ads
+++ b/gcc/ada/libgnat/g-tty.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2002-2023, AdaCore --
+-- Copyright (C) 2002-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-u3spch.adb b/gcc/ada/libgnat/g-u3spch.adb
index ba4809e..34acfe3 100644
--- a/gcc/ada/libgnat/g-u3spch.adb
+++ b/gcc/ada/libgnat/g-u3spch.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1998-2023, AdaCore --
+-- Copyright (C) 1998-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-u3spch.ads b/gcc/ada/libgnat/g-u3spch.ads
index c886ec8..2275194 100644
--- a/gcc/ada/libgnat/g-u3spch.ads
+++ b/gcc/ada/libgnat/g-u3spch.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1998-2023, AdaCore --
+-- Copyright (C) 1998-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-utf_32.adb b/gcc/ada/libgnat/g-utf_32.adb
index d0618fc..d3cbdf4 100644
--- a/gcc/ada/libgnat/g-utf_32.adb
+++ b/gcc/ada/libgnat/g-utf_32.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2005-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2005-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-utf_32.ads b/gcc/ada/libgnat/g-utf_32.ads
index 5da259b..7ec54a6 100644
--- a/gcc/ada/libgnat/g-utf_32.ads
+++ b/gcc/ada/libgnat/g-utf_32.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2005-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2005-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-wispch.adb b/gcc/ada/libgnat/g-wispch.adb
index 529c3d3..60a66e9 100644
--- a/gcc/ada/libgnat/g-wispch.adb
+++ b/gcc/ada/libgnat/g-wispch.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1998-2023, AdaCore --
+-- Copyright (C) 1998-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-wispch.ads b/gcc/ada/libgnat/g-wispch.ads
index ebbf0197..8e9367b 100644
--- a/gcc/ada/libgnat/g-wispch.ads
+++ b/gcc/ada/libgnat/g-wispch.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1998-2023, AdaCore --
+-- Copyright (C) 1998-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-wistsp.ads b/gcc/ada/libgnat/g-wistsp.ads
index 6a5d0dc..7235b46 100644
--- a/gcc/ada/libgnat/g-wistsp.ads
+++ b/gcc/ada/libgnat/g-wistsp.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-zspche.adb b/gcc/ada/libgnat/g-zspche.adb
index dd13992..e543647 100644
--- a/gcc/ada/libgnat/g-zspche.adb
+++ b/gcc/ada/libgnat/g-zspche.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1998-2023, AdaCore --
+-- Copyright (C) 1998-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-zspche.ads b/gcc/ada/libgnat/g-zspche.ads
index 2659920..e74cbe1 100644
--- a/gcc/ada/libgnat/g-zspche.ads
+++ b/gcc/ada/libgnat/g-zspche.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1998-2023, AdaCore --
+-- Copyright (C) 1998-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/g-zstspl.ads b/gcc/ada/libgnat/g-zstspl.ads
index 350e615..991d664 100644
--- a/gcc/ada/libgnat/g-zstspl.ads
+++ b/gcc/ada/libgnat/g-zstspl.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/gnat.ads b/gcc/ada/libgnat/gnat.ads
index c9d378d..3008954 100644
--- a/gcc/ada/libgnat/gnat.ads
+++ b/gcc/ada/libgnat/gnat.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, AdaCore --
+-- Copyright (C) 1992-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/i-c.adb b/gcc/ada/libgnat/i-c.adb
index 63aa2a2..dd5a135 100644
--- a/gcc/ada/libgnat/i-c.adb
+++ b/gcc/ada/libgnat/i-c.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/i-cexten.ads b/gcc/ada/libgnat/i-cexten.ads
index 0597e21..f88c632 100644
--- a/gcc/ada/libgnat/i-cexten.ads
+++ b/gcc/ada/libgnat/i-cexten.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/i-cexten__128.ads b/gcc/ada/libgnat/i-cexten__128.ads
index 84afd55..73a47ae 100644
--- a/gcc/ada/libgnat/i-cexten__128.ads
+++ b/gcc/ada/libgnat/i-cexten__128.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/i-cheri.adb b/gcc/ada/libgnat/i-cheri.adb
index 174fdcc..13c9eea 100644
--- a/gcc/ada/libgnat/i-cheri.adb
+++ b/gcc/ada/libgnat/i-cheri.adb
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2023, AdaCore --
+-- Copyright (C) 2023-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/i-cheri.ads b/gcc/ada/libgnat/i-cheri.ads
index 8098521..389583a 100644
--- a/gcc/ada/libgnat/i-cheri.ads
+++ b/gcc/ada/libgnat/i-cheri.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2023, AdaCore --
+-- Copyright (C) 2023-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/i-cobol.adb b/gcc/ada/libgnat/i-cobol.adb
index 17e14fe..67f2aa8 100644
--- a/gcc/ada/libgnat/i-cobol.adb
+++ b/gcc/ada/libgnat/i-cobol.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/i-cobol.ads b/gcc/ada/libgnat/i-cobol.ads
index 12ac6cc..8e32fa0 100644
--- a/gcc/ada/libgnat/i-cobol.ads
+++ b/gcc/ada/libgnat/i-cobol.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (ASCII Version) --
-- --
--- Copyright (C) 1993-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1993-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/i-cpoint.adb b/gcc/ada/libgnat/i-cpoint.adb
index e1805f4..54dc5e4 100644
--- a/gcc/ada/libgnat/i-cpoint.adb
+++ b/gcc/ada/libgnat/i-cpoint.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/i-cpoint.ads b/gcc/ada/libgnat/i-cpoint.ads
index dea1dce..4eaa074 100644
--- a/gcc/ada/libgnat/i-cpoint.ads
+++ b/gcc/ada/libgnat/i-cpoint.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1993-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1993-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/i-cstrea.adb b/gcc/ada/libgnat/i-cstrea.adb
index fe668e1..81de90f 100644
--- a/gcc/ada/libgnat/i-cstrea.adb
+++ b/gcc/ada/libgnat/i-cstrea.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1996-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1996-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/i-cstrea.ads b/gcc/ada/libgnat/i-cstrea.ads
index 67f10cf..756db48 100644
--- a/gcc/ada/libgnat/i-cstrea.ads
+++ b/gcc/ada/libgnat/i-cstrea.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1995-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1995-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/i-cstrin.adb b/gcc/ada/libgnat/i-cstrin.adb
index 73a0bc8..494b949 100644
--- a/gcc/ada/libgnat/i-cstrin.adb
+++ b/gcc/ada/libgnat/i-cstrin.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/i-cstrin.ads b/gcc/ada/libgnat/i-cstrin.ads
index 3f55ddf..b59d1c7 100644
--- a/gcc/ada/libgnat/i-cstrin.ads
+++ b/gcc/ada/libgnat/i-cstrin.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1993-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1993-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/i-fortra.adb b/gcc/ada/libgnat/i-fortra.adb
index 5f84faf..4a0f431 100644
--- a/gcc/ada/libgnat/i-fortra.adb
+++ b/gcc/ada/libgnat/i-fortra.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/i-pacdec.adb b/gcc/ada/libgnat/i-pacdec.adb
index 31a54b7..36f58f0 100644
--- a/gcc/ada/libgnat/i-pacdec.adb
+++ b/gcc/ada/libgnat/i-pacdec.adb
@@ -7,7 +7,7 @@
-- B o d y --
-- (Version for IBM Mainframe Packed Decimal Format) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/i-pacdec.ads b/gcc/ada/libgnat/i-pacdec.ads
index fb64395..1f33440 100644
--- a/gcc/ada/libgnat/i-pacdec.ads
+++ b/gcc/ada/libgnat/i-pacdec.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (Version for IBM Mainframe Packed Decimal Format) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/i-vxwoio.adb b/gcc/ada/libgnat/i-vxwoio.adb
index 2f867ed..beb99c6 100644
--- a/gcc/ada/libgnat/i-vxwoio.adb
+++ b/gcc/ada/libgnat/i-vxwoio.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/i-vxwoio.ads b/gcc/ada/libgnat/i-vxwoio.ads
index d47300a..eaec018 100644
--- a/gcc/ada/libgnat/i-vxwoio.ads
+++ b/gcc/ada/libgnat/i-vxwoio.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/i-vxwork.ads b/gcc/ada/libgnat/i-vxwork.ads
index a4ae3c0..322a61a 100644
--- a/gcc/ada/libgnat/i-vxwork.ads
+++ b/gcc/ada/libgnat/i-vxwork.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1999-2023, AdaCore --
+-- Copyright (C) 1999-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/i-vxwork__x86.ads b/gcc/ada/libgnat/i-vxwork__x86.ads
index e480433..ae1fe13 100644
--- a/gcc/ada/libgnat/i-vxwork__x86.ads
+++ b/gcc/ada/libgnat/i-vxwork__x86.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1999-2023, AdaCore --
+-- Copyright (C) 1999-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/interfac.ads b/gcc/ada/libgnat/interfac.ads
index bc37a8e..b57264d 100644
--- a/gcc/ada/libgnat/interfac.ads
+++ b/gcc/ada/libgnat/interfac.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/interfac__2020.ads b/gcc/ada/libgnat/interfac__2020.ads
index 70d82be..0b5cc7d 100644
--- a/gcc/ada/libgnat/interfac__2020.ads
+++ b/gcc/ada/libgnat/interfac__2020.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/memtrack.adb b/gcc/ada/libgnat/memtrack.adb
index f138901..0df9ada 100644
--- a/gcc/ada/libgnat/memtrack.adb
+++ b/gcc/ada/libgnat/memtrack.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-addima.adb b/gcc/ada/libgnat/s-addima.adb
index fee4bcf..61933ed 100644
--- a/gcc/ada/libgnat/s-addima.adb
+++ b/gcc/ada/libgnat/s-addima.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-addima.ads b/gcc/ada/libgnat/s-addima.ads
index 4faec9a..ec36a2f 100644
--- a/gcc/ada/libgnat/s-addima.ads
+++ b/gcc/ada/libgnat/s-addima.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-addope.adb b/gcc/ada/libgnat/s-addope.adb
index e6f3b99..17497a2 100644
--- a/gcc/ada/libgnat/s-addope.adb
+++ b/gcc/ada/libgnat/s-addope.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-addope.ads b/gcc/ada/libgnat/s-addope.ads
index 3cbcd34..f9625f8 100644
--- a/gcc/ada/libgnat/s-addope.ads
+++ b/gcc/ada/libgnat/s-addope.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-aoinar.adb b/gcc/ada/libgnat/s-aoinar.adb
index 59698ff..01c5050 100644
--- a/gcc/ada/libgnat/s-aoinar.adb
+++ b/gcc/ada/libgnat/s-aoinar.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2019-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2019-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-aoinar.ads b/gcc/ada/libgnat/s-aoinar.ads
index e03625c..c0bce94 100644
--- a/gcc/ada/libgnat/s-aoinar.ads
+++ b/gcc/ada/libgnat/s-aoinar.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2019-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2019-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/s-aomoar.adb b/gcc/ada/libgnat/s-aomoar.adb
index 6ba1cbe..015ec74 100644
--- a/gcc/ada/libgnat/s-aomoar.adb
+++ b/gcc/ada/libgnat/s-aomoar.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2019-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2019-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-aomoar.ads b/gcc/ada/libgnat/s-aomoar.ads
index ddfca7c..8dd0d91 100644
--- a/gcc/ada/libgnat/s-aomoar.ads
+++ b/gcc/ada/libgnat/s-aomoar.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2019-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2019-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/s-aotase.adb b/gcc/ada/libgnat/s-aotase.adb
index 55a69e0..82e69ba 100644
--- a/gcc/ada/libgnat/s-aotase.adb
+++ b/gcc/ada/libgnat/s-aotase.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2019-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2019-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-aotase.ads b/gcc/ada/libgnat/s-aotase.ads
index 6381882..61c162e 100644
--- a/gcc/ada/libgnat/s-aotase.ads
+++ b/gcc/ada/libgnat/s-aotase.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2019-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2019-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/s-aridou.adb b/gcc/ada/libgnat/s-aridou.adb
index 6bcce59..ac25e6a 100644
--- a/gcc/ada/libgnat/s-aridou.adb
+++ b/gcc/ada/libgnat/s-aridou.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-aridou.ads b/gcc/ada/libgnat/s-aridou.ads
index b22f0db..5597c7b 100644
--- a/gcc/ada/libgnat/s-aridou.ads
+++ b/gcc/ada/libgnat/s-aridou.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-arit128.adb b/gcc/ada/libgnat/s-arit128.adb
index 3ee3232..810fea5 100644
--- a/gcc/ada/libgnat/s-arit128.adb
+++ b/gcc/ada/libgnat/s-arit128.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-arit128.ads b/gcc/ada/libgnat/s-arit128.ads
index 3389e3f..3eb170f 100644
--- a/gcc/ada/libgnat/s-arit128.ads
+++ b/gcc/ada/libgnat/s-arit128.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-arit32.adb b/gcc/ada/libgnat/s-arit32.adb
index d19b9e1..59a6db0 100644
--- a/gcc/ada/libgnat/s-arit32.adb
+++ b/gcc/ada/libgnat/s-arit32.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-arit32.ads b/gcc/ada/libgnat/s-arit32.ads
index 58d9958..f12c7bf 100644
--- a/gcc/ada/libgnat/s-arit32.ads
+++ b/gcc/ada/libgnat/s-arit32.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-arit64.adb b/gcc/ada/libgnat/s-arit64.adb
index abbaca5..62f7f42 100644
--- a/gcc/ada/libgnat/s-arit64.adb
+++ b/gcc/ada/libgnat/s-arit64.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-arit64.ads b/gcc/ada/libgnat/s-arit64.ads
index 88c8a66..88f4677 100644
--- a/gcc/ada/libgnat/s-arit64.ads
+++ b/gcc/ada/libgnat/s-arit64.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-assert.adb b/gcc/ada/libgnat/s-assert.adb
index fb9b53b..40ca352 100644
--- a/gcc/ada/libgnat/s-assert.adb
+++ b/gcc/ada/libgnat/s-assert.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-assert.ads b/gcc/ada/libgnat/s-assert.ads
index ba6555e..11679ad 100644
--- a/gcc/ada/libgnat/s-assert.ads
+++ b/gcc/ada/libgnat/s-assert.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-atacco.adb b/gcc/ada/libgnat/s-atacco.adb
index 8c10681..ab6a6c6 100644
--- a/gcc/ada/libgnat/s-atacco.adb
+++ b/gcc/ada/libgnat/s-atacco.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-atacco.ads b/gcc/ada/libgnat/s-atacco.ads
index 157ca52..165464b 100644
--- a/gcc/ada/libgnat/s-atacco.ads
+++ b/gcc/ada/libgnat/s-atacco.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/s-atocou.adb b/gcc/ada/libgnat/s-atocou.adb
index 1345d52..199714e 100644
--- a/gcc/ada/libgnat/s-atocou.adb
+++ b/gcc/ada/libgnat/s-atocou.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-atocou.ads b/gcc/ada/libgnat/s-atocou.ads
index 970f5b7..c1e9f59 100644
--- a/gcc/ada/libgnat/s-atocou.ads
+++ b/gcc/ada/libgnat/s-atocou.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-atocou__builtin.adb b/gcc/ada/libgnat/s-atocou__builtin.adb
index 4917671..3a23455 100644
--- a/gcc/ada/libgnat/s-atocou__builtin.adb
+++ b/gcc/ada/libgnat/s-atocou__builtin.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-atoope.ads b/gcc/ada/libgnat/s-atoope.ads
index d2d02c4..0c76ced 100644
--- a/gcc/ada/libgnat/s-atoope.ads
+++ b/gcc/ada/libgnat/s-atoope.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2019-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2019-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/s-atopex.adb b/gcc/ada/libgnat/s-atopex.adb
index f16c13a..9ed490b 100644
--- a/gcc/ada/libgnat/s-atopex.adb
+++ b/gcc/ada/libgnat/s-atopex.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2019-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2019-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-atopex.ads b/gcc/ada/libgnat/s-atopex.ads
index 1710155..3394269 100644
--- a/gcc/ada/libgnat/s-atopex.ads
+++ b/gcc/ada/libgnat/s-atopex.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2019-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2019-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/s-atopri.adb b/gcc/ada/libgnat/s-atopri.adb
index 5fc2a12..887de08 100644
--- a/gcc/ada/libgnat/s-atopri.adb
+++ b/gcc/ada/libgnat/s-atopri.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2012-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2012-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-atopri.ads b/gcc/ada/libgnat/s-atopri.ads
index f742812..980e9fa 100644
--- a/gcc/ada/libgnat/s-atopri.ads
+++ b/gcc/ada/libgnat/s-atopri.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2012-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2012-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-atopri__32.ads b/gcc/ada/libgnat/s-atopri__32.ads
index 419ca17..3151159 100644
--- a/gcc/ada/libgnat/s-atopri__32.ads
+++ b/gcc/ada/libgnat/s-atopri__32.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2012-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2012-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-auxdec.adb b/gcc/ada/libgnat/s-auxdec.adb
index e9e1dfa..e2c551b 100644
--- a/gcc/ada/libgnat/s-auxdec.adb
+++ b/gcc/ada/libgnat/s-auxdec.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/Or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-auxdec.ads b/gcc/ada/libgnat/s-auxdec.ads
index 858418c..9074798 100644
--- a/gcc/ada/libgnat/s-auxdec.ads
+++ b/gcc/ada/libgnat/s-auxdec.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1996-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1996-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-bignum.adb b/gcc/ada/libgnat/s-bignum.adb
index 082ce1c..6d84bca 100644
--- a/gcc/ada/libgnat/s-bignum.adb
+++ b/gcc/ada/libgnat/s-bignum.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2012-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2012-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-bignum.ads b/gcc/ada/libgnat/s-bignum.ads
index d0aa0c0..41702b8 100644
--- a/gcc/ada/libgnat/s-bignum.ads
+++ b/gcc/ada/libgnat/s-bignum.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2012-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2012-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-bitfie.ads b/gcc/ada/libgnat/s-bitfie.ads
index 224fe47..9ac7ba8 100644
--- a/gcc/ada/libgnat/s-bitfie.ads
+++ b/gcc/ada/libgnat/s-bitfie.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2019-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2019-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-bitops.adb b/gcc/ada/libgnat/s-bitops.adb
index acddd52..1cbc2a2 100644
--- a/gcc/ada/libgnat/s-bitops.adb
+++ b/gcc/ada/libgnat/s-bitops.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1996-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1996-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-bitops.ads b/gcc/ada/libgnat/s-bitops.ads
index 6f24614..a78fc0d 100644
--- a/gcc/ada/libgnat/s-bitops.ads
+++ b/gcc/ada/libgnat/s-bitops.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-bituti.adb b/gcc/ada/libgnat/s-bituti.adb
index 28e41f3..e5a4ff8 100644
--- a/gcc/ada/libgnat/s-bituti.adb
+++ b/gcc/ada/libgnat/s-bituti.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2019-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2019-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-bituti.ads b/gcc/ada/libgnat/s-bituti.ads
index f296e2c..be448d3 100644
--- a/gcc/ada/libgnat/s-bituti.ads
+++ b/gcc/ada/libgnat/s-bituti.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2019-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2019-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-boarop.ads b/gcc/ada/libgnat/s-boarop.ads
index 8ab1d9d6..1bfb275 100644
--- a/gcc/ada/libgnat/s-boarop.ads
+++ b/gcc/ada/libgnat/s-boarop.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-boustr.adb b/gcc/ada/libgnat/s-boustr.adb
index 374bd0e..edb81df 100644
--- a/gcc/ada/libgnat/s-boustr.adb
+++ b/gcc/ada/libgnat/s-boustr.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2016-2023, AdaCore --
+-- Copyright (C) 2016-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-boustr.ads b/gcc/ada/libgnat/s-boustr.ads
index 27498bc..7505399 100644
--- a/gcc/ada/libgnat/s-boustr.ads
+++ b/gcc/ada/libgnat/s-boustr.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2016-2023, AdaCore --
+-- Copyright (C) 2016-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-bytswa.ads b/gcc/ada/libgnat/s-bytswa.ads
index 3f8c004..9e557ef 100644
--- a/gcc/ada/libgnat/s-bytswa.ads
+++ b/gcc/ada/libgnat/s-bytswa.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2006-2023, AdaCore --
+-- Copyright (C) 2006-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-carsi8.adb b/gcc/ada/libgnat/s-carsi8.adb
index 3946d47..2a6c532d 100644
--- a/gcc/ada/libgnat/s-carsi8.adb
+++ b/gcc/ada/libgnat/s-carsi8.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-carsi8.ads b/gcc/ada/libgnat/s-carsi8.ads
index 675edfc..206ec2f 100644
--- a/gcc/ada/libgnat/s-carsi8.ads
+++ b/gcc/ada/libgnat/s-carsi8.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-carun8.adb b/gcc/ada/libgnat/s-carun8.adb
index e6938de..27422e5 100644
--- a/gcc/ada/libgnat/s-carun8.adb
+++ b/gcc/ada/libgnat/s-carun8.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-carun8.ads b/gcc/ada/libgnat/s-carun8.ads
index 734b49a..2684fd6 100644
--- a/gcc/ada/libgnat/s-carun8.ads
+++ b/gcc/ada/libgnat/s-carun8.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-casi128.adb b/gcc/ada/libgnat/s-casi128.adb
index 91569e1..3d36141 100644
--- a/gcc/ada/libgnat/s-casi128.adb
+++ b/gcc/ada/libgnat/s-casi128.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-casi128.ads b/gcc/ada/libgnat/s-casi128.ads
index 4db9a5f..6f9511e 100644
--- a/gcc/ada/libgnat/s-casi128.ads
+++ b/gcc/ada/libgnat/s-casi128.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-casi16.adb b/gcc/ada/libgnat/s-casi16.adb
index 8aa5502..01771d1 100644
--- a/gcc/ada/libgnat/s-casi16.adb
+++ b/gcc/ada/libgnat/s-casi16.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-casi16.ads b/gcc/ada/libgnat/s-casi16.ads
index 73a17a2..843d088 100644
--- a/gcc/ada/libgnat/s-casi16.ads
+++ b/gcc/ada/libgnat/s-casi16.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-casi32.adb b/gcc/ada/libgnat/s-casi32.adb
index f42d5e0..24ad9ef 100644
--- a/gcc/ada/libgnat/s-casi32.adb
+++ b/gcc/ada/libgnat/s-casi32.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-casi32.ads b/gcc/ada/libgnat/s-casi32.ads
index 0c6dcdf..c6d7789 100644
--- a/gcc/ada/libgnat/s-casi32.ads
+++ b/gcc/ada/libgnat/s-casi32.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-casi64.adb b/gcc/ada/libgnat/s-casi64.adb
index d0c8f1c..bcadea1 100644
--- a/gcc/ada/libgnat/s-casi64.adb
+++ b/gcc/ada/libgnat/s-casi64.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-casi64.ads b/gcc/ada/libgnat/s-casi64.ads
index 77d35a3..ea4fd05 100644
--- a/gcc/ada/libgnat/s-casi64.ads
+++ b/gcc/ada/libgnat/s-casi64.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-casuti.adb b/gcc/ada/libgnat/s-casuti.adb
index 67ea908..0d274b3 100644
--- a/gcc/ada/libgnat/s-casuti.adb
+++ b/gcc/ada/libgnat/s-casuti.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1995-2023, AdaCore --
+-- Copyright (C) 1995-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-casuti.ads b/gcc/ada/libgnat/s-casuti.ads
index c793703..ab28d0b 100644
--- a/gcc/ada/libgnat/s-casuti.ads
+++ b/gcc/ada/libgnat/s-casuti.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1995-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1995-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-caun128.adb b/gcc/ada/libgnat/s-caun128.adb
index 85b350b..113c4d4 100644
--- a/gcc/ada/libgnat/s-caun128.adb
+++ b/gcc/ada/libgnat/s-caun128.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-caun128.ads b/gcc/ada/libgnat/s-caun128.ads
index ee51779..fc27867 100644
--- a/gcc/ada/libgnat/s-caun128.ads
+++ b/gcc/ada/libgnat/s-caun128.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-caun16.adb b/gcc/ada/libgnat/s-caun16.adb
index a082e61..82f9d5b 100644
--- a/gcc/ada/libgnat/s-caun16.adb
+++ b/gcc/ada/libgnat/s-caun16.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-caun16.ads b/gcc/ada/libgnat/s-caun16.ads
index 014a528..ac07d2e 100644
--- a/gcc/ada/libgnat/s-caun16.ads
+++ b/gcc/ada/libgnat/s-caun16.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-caun32.adb b/gcc/ada/libgnat/s-caun32.adb
index 72ac399..0be3a2d 100644
--- a/gcc/ada/libgnat/s-caun32.adb
+++ b/gcc/ada/libgnat/s-caun32.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-caun32.ads b/gcc/ada/libgnat/s-caun32.ads
index 7dfb823..881ae95 100644
--- a/gcc/ada/libgnat/s-caun32.ads
+++ b/gcc/ada/libgnat/s-caun32.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-caun64.adb b/gcc/ada/libgnat/s-caun64.adb
index e4246975..92d7d13 100644
--- a/gcc/ada/libgnat/s-caun64.adb
+++ b/gcc/ada/libgnat/s-caun64.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-caun64.ads b/gcc/ada/libgnat/s-caun64.ads
index 3213b79..f51a368 100644
--- a/gcc/ada/libgnat/s-caun64.ads
+++ b/gcc/ada/libgnat/s-caun64.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-chepoo.ads b/gcc/ada/libgnat/s-chepoo.ads
index d413ae5..ddacaf7 100644
--- a/gcc/ada/libgnat/s-chepoo.ads
+++ b/gcc/ada/libgnat/s-chepoo.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-commun.adb b/gcc/ada/libgnat/s-commun.adb
index a0cb71c..3c18b15 100644
--- a/gcc/ada/libgnat/s-commun.adb
+++ b/gcc/ada/libgnat/s-commun.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2023, AdaCore --
+-- Copyright (C) 2001-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-commun.ads b/gcc/ada/libgnat/s-commun.ads
index 9275f27..e68d9e9 100644
--- a/gcc/ada/libgnat/s-commun.ads
+++ b/gcc/ada/libgnat/s-commun.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2023, AdaCore --
+-- Copyright (C) 2001-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-conca2.adb b/gcc/ada/libgnat/s-conca2.adb
index ac1f5c4..38ce43c 100644
--- a/gcc/ada/libgnat/s-conca2.adb
+++ b/gcc/ada/libgnat/s-conca2.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2008-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2008-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-conca2.ads b/gcc/ada/libgnat/s-conca2.ads
index eff6a88..06a0410 100644
--- a/gcc/ada/libgnat/s-conca2.ads
+++ b/gcc/ada/libgnat/s-conca2.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2008-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2008-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-conca3.adb b/gcc/ada/libgnat/s-conca3.adb
index c6b8ccc..839cd12 100644
--- a/gcc/ada/libgnat/s-conca3.adb
+++ b/gcc/ada/libgnat/s-conca3.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2008-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2008-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-conca3.ads b/gcc/ada/libgnat/s-conca3.ads
index 2ec0a8c..ef2b9d6 100644
--- a/gcc/ada/libgnat/s-conca3.ads
+++ b/gcc/ada/libgnat/s-conca3.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2008-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2008-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-conca4.adb b/gcc/ada/libgnat/s-conca4.adb
index 85c1a0e..958d14a 100644
--- a/gcc/ada/libgnat/s-conca4.adb
+++ b/gcc/ada/libgnat/s-conca4.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2008-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2008-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-conca4.ads b/gcc/ada/libgnat/s-conca4.ads
index d403171..f4bc741 100644
--- a/gcc/ada/libgnat/s-conca4.ads
+++ b/gcc/ada/libgnat/s-conca4.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2008-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2008-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-conca5.adb b/gcc/ada/libgnat/s-conca5.adb
index fe9a6a9..979e816 100644
--- a/gcc/ada/libgnat/s-conca5.adb
+++ b/gcc/ada/libgnat/s-conca5.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2008-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2008-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-conca5.ads b/gcc/ada/libgnat/s-conca5.ads
index fc8f751..cb978f0 100644
--- a/gcc/ada/libgnat/s-conca5.ads
+++ b/gcc/ada/libgnat/s-conca5.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2008-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2008-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-conca6.adb b/gcc/ada/libgnat/s-conca6.adb
index 3c5d2a8..7b505ab 100644
--- a/gcc/ada/libgnat/s-conca6.adb
+++ b/gcc/ada/libgnat/s-conca6.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2008-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2008-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-conca6.ads b/gcc/ada/libgnat/s-conca6.ads
index e34c77c..9392d8d 100644
--- a/gcc/ada/libgnat/s-conca6.ads
+++ b/gcc/ada/libgnat/s-conca6.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2008-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2008-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-conca7.adb b/gcc/ada/libgnat/s-conca7.adb
index 080c4bb..38add40 100644
--- a/gcc/ada/libgnat/s-conca7.adb
+++ b/gcc/ada/libgnat/s-conca7.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2008-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2008-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-conca7.ads b/gcc/ada/libgnat/s-conca7.ads
index 6a896eb..54ec7fc 100644
--- a/gcc/ada/libgnat/s-conca7.ads
+++ b/gcc/ada/libgnat/s-conca7.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2008-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2008-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-conca8.adb b/gcc/ada/libgnat/s-conca8.adb
index f13d52d..ad4d098 100644
--- a/gcc/ada/libgnat/s-conca8.adb
+++ b/gcc/ada/libgnat/s-conca8.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2008-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2008-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-conca8.ads b/gcc/ada/libgnat/s-conca8.ads
index 69d9e55..0833fd5 100644
--- a/gcc/ada/libgnat/s-conca8.ads
+++ b/gcc/ada/libgnat/s-conca8.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2008-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2008-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-conca9.adb b/gcc/ada/libgnat/s-conca9.adb
index c8248d5..bf64629 100644
--- a/gcc/ada/libgnat/s-conca9.adb
+++ b/gcc/ada/libgnat/s-conca9.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2008-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2008-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-conca9.ads b/gcc/ada/libgnat/s-conca9.ads
index de46ff6..e0755e17 100644
--- a/gcc/ada/libgnat/s-conca9.ads
+++ b/gcc/ada/libgnat/s-conca9.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2008-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2008-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-crc32.adb b/gcc/ada/libgnat/s-crc32.adb
index 3ebf6be9..414503c 100644
--- a/gcc/ada/libgnat/s-crc32.adb
+++ b/gcc/ada/libgnat/s-crc32.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-crc32.ads b/gcc/ada/libgnat/s-crc32.ads
index 221d53f..c5c9935 100644
--- a/gcc/ada/libgnat/s-crc32.ads
+++ b/gcc/ada/libgnat/s-crc32.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-crtl.ads b/gcc/ada/libgnat/s-crtl.ads
index 56900a8..5c265e9 100644
--- a/gcc/ada/libgnat/s-crtl.ads
+++ b/gcc/ada/libgnat/s-crtl.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2003-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2003-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-dfmkio.ads b/gcc/ada/libgnat/s-dfmkio.ads
index 1a84166..75d39e6 100644
--- a/gcc/ada/libgnat/s-dfmkio.ads
+++ b/gcc/ada/libgnat/s-dfmkio.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2018-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2018-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-dfmopr.ads b/gcc/ada/libgnat/s-dfmopr.ads
index 849f10f..a946137 100644
--- a/gcc/ada/libgnat/s-dfmopr.ads
+++ b/gcc/ada/libgnat/s-dfmopr.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2018-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2018-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-dgmgop.ads b/gcc/ada/libgnat/s-dgmgop.ads
index 4ef5ede..989153c 100644
--- a/gcc/ada/libgnat/s-dgmgop.ads
+++ b/gcc/ada/libgnat/s-dgmgop.ads
@@ -7,7 +7,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-diflio.adb b/gcc/ada/libgnat/s-diflio.adb
index 0bcd221..4e6bba2 100644
--- a/gcc/ada/libgnat/s-diflio.adb
+++ b/gcc/ada/libgnat/s-diflio.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-diflio.ads b/gcc/ada/libgnat/s-diflio.ads
index 0e5fa40..4f6adb3 100644
--- a/gcc/ada/libgnat/s-diflio.ads
+++ b/gcc/ada/libgnat/s-diflio.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-diflmk.ads b/gcc/ada/libgnat/s-diflmk.ads
index d3b883b..742bda8 100644
--- a/gcc/ada/libgnat/s-diflmk.ads
+++ b/gcc/ada/libgnat/s-diflmk.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2018-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2018-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-digemk.ads b/gcc/ada/libgnat/s-digemk.ads
index 2a8423a..f79e78c 100644
--- a/gcc/ada/libgnat/s-digemk.ads
+++ b/gcc/ada/libgnat/s-digemk.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-diinio.adb b/gcc/ada/libgnat/s-diinio.adb
index 8c1036c..83539a3 100644
--- a/gcc/ada/libgnat/s-diinio.adb
+++ b/gcc/ada/libgnat/s-diinio.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-diinio.ads b/gcc/ada/libgnat/s-diinio.ads
index 6a2260a..bb1c31e 100644
--- a/gcc/ada/libgnat/s-diinio.ads
+++ b/gcc/ada/libgnat/s-diinio.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-dilomk.ads b/gcc/ada/libgnat/s-dilomk.ads
index 3d3079b..87f971c 100644
--- a/gcc/ada/libgnat/s-dilomk.ads
+++ b/gcc/ada/libgnat/s-dilomk.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2018-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2018-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-dim.ads b/gcc/ada/libgnat/s-dim.ads
index f062196..fe519e8 100644
--- a/gcc/ada/libgnat/s-dim.ads
+++ b/gcc/ada/libgnat/s-dim.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2012-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2012-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-dimkio.ads b/gcc/ada/libgnat/s-dimkio.ads
index 1b4c9ae..f79e036 100644
--- a/gcc/ada/libgnat/s-dimkio.ads
+++ b/gcc/ada/libgnat/s-dimkio.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-dimmks.ads b/gcc/ada/libgnat/s-dimmks.ads
index 88fc9d5..c7d4ed2 100644
--- a/gcc/ada/libgnat/s-dimmks.ads
+++ b/gcc/ada/libgnat/s-dimmks.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-direio.adb b/gcc/ada/libgnat/s-direio.adb
index 7ae4d23..be428c2 100644
--- a/gcc/ada/libgnat/s-direio.adb
+++ b/gcc/ada/libgnat/s-direio.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-direio.ads b/gcc/ada/libgnat/s-direio.ads
index f96d75e..95d909e 100644
--- a/gcc/ada/libgnat/s-direio.ads
+++ b/gcc/ada/libgnat/s-direio.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-dlmkio.ads b/gcc/ada/libgnat/s-dlmkio.ads
index 5d747c8..a8131ba 100644
--- a/gcc/ada/libgnat/s-dlmkio.ads
+++ b/gcc/ada/libgnat/s-dlmkio.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2018-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2018-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-dlmopr.ads b/gcc/ada/libgnat/s-dlmopr.ads
index fd3d357..7c70d18 100644
--- a/gcc/ada/libgnat/s-dlmopr.ads
+++ b/gcc/ada/libgnat/s-dlmopr.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2018-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2018-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-dmotpr.ads b/gcc/ada/libgnat/s-dmotpr.ads
index 0ba9b32..b3e5ab5 100644
--- a/gcc/ada/libgnat/s-dmotpr.ads
+++ b/gcc/ada/libgnat/s-dmotpr.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-dorepr.adb b/gcc/ada/libgnat/s-dorepr.adb
index a1b6c09..453e39d 100644
--- a/gcc/ada/libgnat/s-dorepr.adb
+++ b/gcc/ada/libgnat/s-dorepr.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2021-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2021-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-dorepr__fma.adb b/gcc/ada/libgnat/s-dorepr__fma.adb
index 87b3dae..1a91a9c 100644
--- a/gcc/ada/libgnat/s-dorepr__fma.adb
+++ b/gcc/ada/libgnat/s-dorepr__fma.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2021-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2021-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-dourea.adb b/gcc/ada/libgnat/s-dourea.adb
index fdb7844..d27e6f4 100644
--- a/gcc/ada/libgnat/s-dourea.adb
+++ b/gcc/ada/libgnat/s-dourea.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2021-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2021-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-dourea.ads b/gcc/ada/libgnat/s-dourea.ads
index 7684684..5112228 100644
--- a/gcc/ada/libgnat/s-dourea.ads
+++ b/gcc/ada/libgnat/s-dourea.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2021-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2021-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-dsaser.ads b/gcc/ada/libgnat/s-dsaser.ads
index bdb411e..ce0b26c 100644
--- a/gcc/ada/libgnat/s-dsaser.ads
+++ b/gcc/ada/libgnat/s-dsaser.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2006-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2006-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-dwalin.adb b/gcc/ada/libgnat/s-dwalin.adb
index 405b5d3..46a7d61 100644
--- a/gcc/ada/libgnat/s-dwalin.adb
+++ b/gcc/ada/libgnat/s-dwalin.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-dwalin.ads b/gcc/ada/libgnat/s-dwalin.ads
index 3b3fd40..1c42521 100644
--- a/gcc/ada/libgnat/s-dwalin.ads
+++ b/gcc/ada/libgnat/s-dwalin.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-elaall.adb b/gcc/ada/libgnat/s-elaall.adb
index 36558d2..0acc97b 100644
--- a/gcc/ada/libgnat/s-elaall.adb
+++ b/gcc/ada/libgnat/s-elaall.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2014-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2014-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-elaall.ads b/gcc/ada/libgnat/s-elaall.ads
index 2976406..2d5ab54 100644
--- a/gcc/ada/libgnat/s-elaall.ads
+++ b/gcc/ada/libgnat/s-elaall.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2014-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2014-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-excdeb.adb b/gcc/ada/libgnat/s-excdeb.adb
index 584c9df..80f63af 100644
--- a/gcc/ada/libgnat/s-excdeb.adb
+++ b/gcc/ada/libgnat/s-excdeb.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2006-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2006-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-excdeb.ads b/gcc/ada/libgnat/s-excdeb.ads
index c92f83f..b7759cb 100644
--- a/gcc/ada/libgnat/s-excdeb.ads
+++ b/gcc/ada/libgnat/s-excdeb.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2006-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2006-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-except.adb b/gcc/ada/libgnat/s-except.adb
index 6b2eb22..ccbaff2 100644
--- a/gcc/ada/libgnat/s-except.adb
+++ b/gcc/ada/libgnat/s-except.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2006-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2006-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-except.ads b/gcc/ada/libgnat/s-except.ads
index 20afec2..a32f322 100644
--- a/gcc/ada/libgnat/s-except.ads
+++ b/gcc/ada/libgnat/s-except.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2006-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2006-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-excmac__arm.adb b/gcc/ada/libgnat/s-excmac__arm.adb
index 730c6c3..9dac58f 100644
--- a/gcc/ada/libgnat/s-excmac__arm.adb
+++ b/gcc/ada/libgnat/s-excmac__arm.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2013-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2013-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-excmac__arm.ads b/gcc/ada/libgnat/s-excmac__arm.ads
index 7ad9f96..23d02f8 100644
--- a/gcc/ada/libgnat/s-excmac__arm.ads
+++ b/gcc/ada/libgnat/s-excmac__arm.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2013-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2013-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-excmac__gcc.adb b/gcc/ada/libgnat/s-excmac__gcc.adb
index 71ebe3e..dfcd65f 100644
--- a/gcc/ada/libgnat/s-excmac__gcc.adb
+++ b/gcc/ada/libgnat/s-excmac__gcc.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2013-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2013-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-excmac__gcc.ads b/gcc/ada/libgnat/s-excmac__gcc.ads
index f0d08d6..2489905 100644
--- a/gcc/ada/libgnat/s-excmac__gcc.ads
+++ b/gcc/ada/libgnat/s-excmac__gcc.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2013-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2013-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-exctab.adb b/gcc/ada/libgnat/s-exctab.adb
index 3cb36ab..50b4506 100644
--- a/gcc/ada/libgnat/s-exctab.adb
+++ b/gcc/ada/libgnat/s-exctab.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1996-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1996-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-exctab.ads b/gcc/ada/libgnat/s-exctab.ads
index f877c55..c06cc97 100644
--- a/gcc/ada/libgnat/s-exctab.ads
+++ b/gcc/ada/libgnat/s-exctab.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1996-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1996-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-exctra.adb b/gcc/ada/libgnat/s-exctra.adb
index 9216cf3..e356530 100644
--- a/gcc/ada/libgnat/s-exctra.adb
+++ b/gcc/ada/libgnat/s-exctra.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2000-2023, AdaCore --
+-- Copyright (C) 2000-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-exctra.ads b/gcc/ada/libgnat/s-exctra.ads
index 72ccfb8..0e53b6f 100644
--- a/gcc/ada/libgnat/s-exctra.ads
+++ b/gcc/ada/libgnat/s-exctra.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2000-2023, AdaCore --
+-- Copyright (C) 2000-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-exnflt.ads b/gcc/ada/libgnat/s-exnflt.ads
index 690e5d6..99af6ba 100644
--- a/gcc/ada/libgnat/s-exnflt.ads
+++ b/gcc/ada/libgnat/s-exnflt.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2021-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2021-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-exnint.adb b/gcc/ada/libgnat/s-exnint.adb
index 0872f3d..028e075 100644
--- a/gcc/ada/libgnat/s-exnint.adb
+++ b/gcc/ada/libgnat/s-exnint.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-exnint.ads b/gcc/ada/libgnat/s-exnint.ads
index d72febe..efee21b 100644
--- a/gcc/ada/libgnat/s-exnint.ads
+++ b/gcc/ada/libgnat/s-exnint.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-exnlfl.ads b/gcc/ada/libgnat/s-exnlfl.ads
index fae57c5..fee2139 100644
--- a/gcc/ada/libgnat/s-exnlfl.ads
+++ b/gcc/ada/libgnat/s-exnlfl.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2021-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2021-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-exnllf.adb b/gcc/ada/libgnat/s-exnllf.adb
index 44bab75..9e9517d 100644
--- a/gcc/ada/libgnat/s-exnllf.adb
+++ b/gcc/ada/libgnat/s-exnllf.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-exnllf.ads b/gcc/ada/libgnat/s-exnllf.ads
index 790e92c..d148940 100644
--- a/gcc/ada/libgnat/s-exnllf.ads
+++ b/gcc/ada/libgnat/s-exnllf.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-exnlli.adb b/gcc/ada/libgnat/s-exnlli.adb
index 12182f5..8f0603a 100644
--- a/gcc/ada/libgnat/s-exnlli.adb
+++ b/gcc/ada/libgnat/s-exnlli.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-exnlli.ads b/gcc/ada/libgnat/s-exnlli.ads
index f209094..27f37c2 100644
--- a/gcc/ada/libgnat/s-exnlli.ads
+++ b/gcc/ada/libgnat/s-exnlli.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-exnllli.ads b/gcc/ada/libgnat/s-exnllli.ads
index 3eba533..8e2aa60 100644
--- a/gcc/ada/libgnat/s-exnllli.ads
+++ b/gcc/ada/libgnat/s-exnllli.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-expint.adb b/gcc/ada/libgnat/s-expint.adb
index 16f4286..dfc922a 100644
--- a/gcc/ada/libgnat/s-expint.adb
+++ b/gcc/ada/libgnat/s-expint.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-expint.ads b/gcc/ada/libgnat/s-expint.ads
index c4a4be7..ad883ae 100644
--- a/gcc/ada/libgnat/s-expint.ads
+++ b/gcc/ada/libgnat/s-expint.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-explli.adb b/gcc/ada/libgnat/s-explli.adb
index 7bed0af..7ebba85 100644
--- a/gcc/ada/libgnat/s-explli.adb
+++ b/gcc/ada/libgnat/s-explli.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-explli.ads b/gcc/ada/libgnat/s-explli.ads
index 70b3bde..58571cc 100644
--- a/gcc/ada/libgnat/s-explli.ads
+++ b/gcc/ada/libgnat/s-explli.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-expllli.ads b/gcc/ada/libgnat/s-expllli.ads
index 94822d8..3d198c2 100644
--- a/gcc/ada/libgnat/s-expllli.ads
+++ b/gcc/ada/libgnat/s-expllli.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-explllu.ads b/gcc/ada/libgnat/s-explllu.ads
index 63df2ff..70b01db 100644
--- a/gcc/ada/libgnat/s-explllu.ads
+++ b/gcc/ada/libgnat/s-explllu.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-expllu.adb b/gcc/ada/libgnat/s-expllu.adb
index f53666d..736b6ec 100644
--- a/gcc/ada/libgnat/s-expllu.adb
+++ b/gcc/ada/libgnat/s-expllu.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-expllu.ads b/gcc/ada/libgnat/s-expllu.ads
index 9e5129e..e892b47 100644
--- a/gcc/ada/libgnat/s-expllu.ads
+++ b/gcc/ada/libgnat/s-expllu.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-expmod.adb b/gcc/ada/libgnat/s-expmod.adb
index aa6e9b4..c991bb7 100644
--- a/gcc/ada/libgnat/s-expmod.adb
+++ b/gcc/ada/libgnat/s-expmod.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-expmod.ads b/gcc/ada/libgnat/s-expmod.ads
index 0efbfcc..2cf5694 100644
--- a/gcc/ada/libgnat/s-expmod.ads
+++ b/gcc/ada/libgnat/s-expmod.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-exponn.adb b/gcc/ada/libgnat/s-exponn.adb
index a6b87ea..8a80532 100644
--- a/gcc/ada/libgnat/s-exponn.adb
+++ b/gcc/ada/libgnat/s-exponn.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-exponn.ads b/gcc/ada/libgnat/s-exponn.ads
index f71e61a..81445be 100644
--- a/gcc/ada/libgnat/s-exponn.ads
+++ b/gcc/ada/libgnat/s-exponn.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-exponr.adb b/gcc/ada/libgnat/s-exponr.adb
index 424dd1b..d3d9b41 100644
--- a/gcc/ada/libgnat/s-exponr.adb
+++ b/gcc/ada/libgnat/s-exponr.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2021-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2021-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-exponr.ads b/gcc/ada/libgnat/s-exponr.ads
index 2b2d359..abb6581 100644
--- a/gcc/ada/libgnat/s-exponr.ads
+++ b/gcc/ada/libgnat/s-exponr.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2021-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2021-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-expont.adb b/gcc/ada/libgnat/s-expont.adb
index e826061..264cb96 100644
--- a/gcc/ada/libgnat/s-expont.adb
+++ b/gcc/ada/libgnat/s-expont.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-expont.ads b/gcc/ada/libgnat/s-expont.ads
index 705a7cb..0947b67 100644
--- a/gcc/ada/libgnat/s-expont.ads
+++ b/gcc/ada/libgnat/s-expont.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-exponu.adb b/gcc/ada/libgnat/s-exponu.adb
index 8325f17..4fa36d8 100644
--- a/gcc/ada/libgnat/s-exponu.adb
+++ b/gcc/ada/libgnat/s-exponu.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-exponu.ads b/gcc/ada/libgnat/s-exponu.ads
index 3f5d13b..7e8babf 100644
--- a/gcc/ada/libgnat/s-exponu.ads
+++ b/gcc/ada/libgnat/s-exponu.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-expuns.adb b/gcc/ada/libgnat/s-expuns.adb
index 3467299..f318984 100644
--- a/gcc/ada/libgnat/s-expuns.adb
+++ b/gcc/ada/libgnat/s-expuns.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-expuns.ads b/gcc/ada/libgnat/s-expuns.ads
index aac079f..b36fffc 100644
--- a/gcc/ada/libgnat/s-expuns.ads
+++ b/gcc/ada/libgnat/s-expuns.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-fatflt.ads b/gcc/ada/libgnat/s-fatflt.ads
index 868945c..b486830 100644
--- a/gcc/ada/libgnat/s-fatflt.ads
+++ b/gcc/ada/libgnat/s-fatflt.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-fatgen.adb b/gcc/ada/libgnat/s-fatgen.adb
index 53e6c92..d01e008 100644
--- a/gcc/ada/libgnat/s-fatgen.adb
+++ b/gcc/ada/libgnat/s-fatgen.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-fatgen.ads b/gcc/ada/libgnat/s-fatgen.ads
index 234c194..b4b990b 100644
--- a/gcc/ada/libgnat/s-fatgen.ads
+++ b/gcc/ada/libgnat/s-fatgen.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-fatlfl.ads b/gcc/ada/libgnat/s-fatlfl.ads
index 387df51..2d5f433 100644
--- a/gcc/ada/libgnat/s-fatlfl.ads
+++ b/gcc/ada/libgnat/s-fatlfl.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-fatllf.ads b/gcc/ada/libgnat/s-fatllf.ads
index 5731b55..159d8a9 100644
--- a/gcc/ada/libgnat/s-fatllf.ads
+++ b/gcc/ada/libgnat/s-fatllf.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-ficobl.ads b/gcc/ada/libgnat/s-ficobl.ads
index ec76fa8..29560cb 100644
--- a/gcc/ada/libgnat/s-ficobl.ads
+++ b/gcc/ada/libgnat/s-ficobl.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-filatt.ads b/gcc/ada/libgnat/s-filatt.ads
index b61f13a..2905a03 100644
--- a/gcc/ada/libgnat/s-filatt.ads
+++ b/gcc/ada/libgnat/s-filatt.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2013-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2013-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-fileio.adb b/gcc/ada/libgnat/s-fileio.adb
index f55cdc7..3dea358 100644
--- a/gcc/ada/libgnat/s-fileio.adb
+++ b/gcc/ada/libgnat/s-fileio.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-fileio.ads b/gcc/ada/libgnat/s-fileio.ads
index d7cdf46..d25e610 100644
--- a/gcc/ada/libgnat/s-fileio.ads
+++ b/gcc/ada/libgnat/s-fileio.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-finmas.adb b/gcc/ada/libgnat/s-finmas.adb
index a231b6b..64b6344 100644
--- a/gcc/ada/libgnat/s-finmas.adb
+++ b/gcc/ada/libgnat/s-finmas.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2015-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2015-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-finmas.ads b/gcc/ada/libgnat/s-finmas.ads
index 404b671..7385a3a 100644
--- a/gcc/ada/libgnat/s-finmas.ads
+++ b/gcc/ada/libgnat/s-finmas.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-finroo.adb b/gcc/ada/libgnat/s-finroo.adb
index 8e049d0..62f71fa 100644
--- a/gcc/ada/libgnat/s-finroo.adb
+++ b/gcc/ada/libgnat/s-finroo.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-finroo.ads b/gcc/ada/libgnat/s-finroo.ads
index 4bc5bb2..2f34007 100644
--- a/gcc/ada/libgnat/s-finroo.ads
+++ b/gcc/ada/libgnat/s-finroo.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-flocon.adb b/gcc/ada/libgnat/s-flocon.adb
index a62b85e..98332fd 100644
--- a/gcc/ada/libgnat/s-flocon.adb
+++ b/gcc/ada/libgnat/s-flocon.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2011-2023, AdaCore --
+-- Copyright (C) 2011-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-flocon.ads b/gcc/ada/libgnat/s-flocon.ads
index deff1a5..d22aab2 100644
--- a/gcc/ada/libgnat/s-flocon.ads
+++ b/gcc/ada/libgnat/s-flocon.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2000-2023, AdaCore --
+-- Copyright (C) 2000-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-flocon__none.adb b/gcc/ada/libgnat/s-flocon__none.adb
index 05c82e3..da9084a 100644
--- a/gcc/ada/libgnat/s-flocon__none.adb
+++ b/gcc/ada/libgnat/s-flocon__none.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2011-2023, AdaCore --
+-- Copyright (C) 2011-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-fode128.ads b/gcc/ada/libgnat/s-fode128.ads
index 38e3c4e..b84851c 100644
--- a/gcc/ada/libgnat/s-fode128.ads
+++ b/gcc/ada/libgnat/s-fode128.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-fode32.ads b/gcc/ada/libgnat/s-fode32.ads
index 04b5d87..55e2f5a 100644
--- a/gcc/ada/libgnat/s-fode32.ads
+++ b/gcc/ada/libgnat/s-fode32.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-fode64.ads b/gcc/ada/libgnat/s-fode64.ads
index c32a4cc..44b47a4 100644
--- a/gcc/ada/libgnat/s-fode64.ads
+++ b/gcc/ada/libgnat/s-fode64.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-fofi128.ads b/gcc/ada/libgnat/s-fofi128.ads
index c507720..6a90446 100644
--- a/gcc/ada/libgnat/s-fofi128.ads
+++ b/gcc/ada/libgnat/s-fofi128.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-fofi32.ads b/gcc/ada/libgnat/s-fofi32.ads
index 73d3c9a..8271550 100644
--- a/gcc/ada/libgnat/s-fofi32.ads
+++ b/gcc/ada/libgnat/s-fofi32.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-fofi64.ads b/gcc/ada/libgnat/s-fofi64.ads
index ddcdb09..58d98cb 100644
--- a/gcc/ada/libgnat/s-fofi64.ads
+++ b/gcc/ada/libgnat/s-fofi64.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-fore_d.adb b/gcc/ada/libgnat/s-fore_d.adb
index 840b1ff..3399f03 100644
--- a/gcc/ada/libgnat/s-fore_d.adb
+++ b/gcc/ada/libgnat/s-fore_d.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-fore_d.ads b/gcc/ada/libgnat/s-fore_d.ads
index 5ae60c4..e6c33a8 100644
--- a/gcc/ada/libgnat/s-fore_d.ads
+++ b/gcc/ada/libgnat/s-fore_d.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-fore_f.adb b/gcc/ada/libgnat/s-fore_f.adb
index 40fafbd..91d45c0 100644
--- a/gcc/ada/libgnat/s-fore_f.adb
+++ b/gcc/ada/libgnat/s-fore_f.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-fore_f.ads b/gcc/ada/libgnat/s-fore_f.ads
index 640305c5..83dcae9 100644
--- a/gcc/ada/libgnat/s-fore_f.ads
+++ b/gcc/ada/libgnat/s-fore_f.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-forrea.adb b/gcc/ada/libgnat/s-forrea.adb
index 1ac2035..50b05ba 100644
--- a/gcc/ada/libgnat/s-forrea.adb
+++ b/gcc/ada/libgnat/s-forrea.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-forrea.ads b/gcc/ada/libgnat/s-forrea.ads
index b1c038f..5d26ff9 100644
--- a/gcc/ada/libgnat/s-forrea.ads
+++ b/gcc/ada/libgnat/s-forrea.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-gearop.adb b/gcc/ada/libgnat/s-gearop.adb
index 000e59c..8387d0c 100644
--- a/gcc/ada/libgnat/s-gearop.adb
+++ b/gcc/ada/libgnat/s-gearop.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2006-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2006-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-gearop.ads b/gcc/ada/libgnat/s-gearop.ads
index 1e7e9fe..8b0b097 100644
--- a/gcc/ada/libgnat/s-gearop.ads
+++ b/gcc/ada/libgnat/s-gearop.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2006-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2006-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-genbig.adb b/gcc/ada/libgnat/s-genbig.adb
index e1f2e5c..da03ff9 100644
--- a/gcc/ada/libgnat/s-genbig.adb
+++ b/gcc/ada/libgnat/s-genbig.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2012-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2012-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-genbig.ads b/gcc/ada/libgnat/s-genbig.ads
index 167f24f..bd27519 100644
--- a/gcc/ada/libgnat/s-genbig.ads
+++ b/gcc/ada/libgnat/s-genbig.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2012-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2012-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-geveop.adb b/gcc/ada/libgnat/s-geveop.adb
index 502ada2..2f679b4 100644
--- a/gcc/ada/libgnat/s-geveop.adb
+++ b/gcc/ada/libgnat/s-geveop.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-geveop.ads b/gcc/ada/libgnat/s-geveop.ads
index d5397c6..5b99c31 100644
--- a/gcc/ada/libgnat/s-geveop.ads
+++ b/gcc/ada/libgnat/s-geveop.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-gloloc.adb b/gcc/ada/libgnat/s-gloloc.adb
index b10321f..de3d103 100644
--- a/gcc/ada/libgnat/s-gloloc.adb
+++ b/gcc/ada/libgnat/s-gloloc.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1999-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1999-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-gloloc.ads b/gcc/ada/libgnat/s-gloloc.ads
index 47ac498..85aa90b 100644
--- a/gcc/ada/libgnat/s-gloloc.ads
+++ b/gcc/ada/libgnat/s-gloloc.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1999-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1999-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-gloloc__mingw.adb b/gcc/ada/libgnat/s-gloloc__mingw.adb
index e1e9941..4571ef1 100644
--- a/gcc/ada/libgnat/s-gloloc__mingw.adb
+++ b/gcc/ada/libgnat/s-gloloc__mingw.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1999-2023, AdaCore --
+-- Copyright (C) 1999-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-htable.adb b/gcc/ada/libgnat/s-htable.adb
index 179ebe0..3f3f88f 100644
--- a/gcc/ada/libgnat/s-htable.adb
+++ b/gcc/ada/libgnat/s-htable.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1995-2023, AdaCore --
+-- Copyright (C) 1995-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-htable.ads b/gcc/ada/libgnat/s-htable.ads
index d546d0b..b0a3646 100644
--- a/gcc/ada/libgnat/s-htable.ads
+++ b/gcc/ada/libgnat/s-htable.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1995-2023, AdaCore --
+-- Copyright (C) 1995-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imageb.adb b/gcc/ada/libgnat/s-imageb.adb
index 037f15b..bfccea5 100644
--- a/gcc/ada/libgnat/s-imageb.adb
+++ b/gcc/ada/libgnat/s-imageb.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imageb.ads b/gcc/ada/libgnat/s-imageb.ads
index bdd1387..296df8f 100644
--- a/gcc/ada/libgnat/s-imageb.ads
+++ b/gcc/ada/libgnat/s-imageb.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imaged.adb b/gcc/ada/libgnat/s-imaged.adb
index 0c6b902..800a8e4 100644
--- a/gcc/ada/libgnat/s-imaged.adb
+++ b/gcc/ada/libgnat/s-imaged.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imaged.ads b/gcc/ada/libgnat/s-imaged.ads
index 46eb26a..5fe8f82 100644
--- a/gcc/ada/libgnat/s-imaged.ads
+++ b/gcc/ada/libgnat/s-imaged.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imagef.adb b/gcc/ada/libgnat/s-imagef.adb
index 6194a31..46e7ab0 100644
--- a/gcc/ada/libgnat/s-imagef.adb
+++ b/gcc/ada/libgnat/s-imagef.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imagef.ads b/gcc/ada/libgnat/s-imagef.ads
index 2518cfd..1a33767 100644
--- a/gcc/ada/libgnat/s-imagef.ads
+++ b/gcc/ada/libgnat/s-imagef.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imagei.adb b/gcc/ada/libgnat/s-imagei.adb
index cbe03e7..e87593e 100644
--- a/gcc/ada/libgnat/s-imagei.adb
+++ b/gcc/ada/libgnat/s-imagei.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imagei.ads b/gcc/ada/libgnat/s-imagei.ads
index 7e39f86..aa70622 100644
--- a/gcc/ada/libgnat/s-imagei.ads
+++ b/gcc/ada/libgnat/s-imagei.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imagen.adb b/gcc/ada/libgnat/s-imagen.adb
index 8a3c7fb..185d16a 100644
--- a/gcc/ada/libgnat/s-imagen.adb
+++ b/gcc/ada/libgnat/s-imagen.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2021-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2021-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imagen.ads b/gcc/ada/libgnat/s-imagen.ads
index 43738ca..ce96c7e 100644
--- a/gcc/ada/libgnat/s-imagen.ads
+++ b/gcc/ada/libgnat/s-imagen.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2021-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2021-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imager.adb b/gcc/ada/libgnat/s-imager.adb
index d6821a9..c598cc9 100644
--- a/gcc/ada/libgnat/s-imager.adb
+++ b/gcc/ada/libgnat/s-imager.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imager.ads b/gcc/ada/libgnat/s-imager.ads
index d97cf1a..700582b 100644
--- a/gcc/ada/libgnat/s-imager.ads
+++ b/gcc/ada/libgnat/s-imager.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imageu.adb b/gcc/ada/libgnat/s-imageu.adb
index 919b401..c45dd5d 100644
--- a/gcc/ada/libgnat/s-imageu.adb
+++ b/gcc/ada/libgnat/s-imageu.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imageu.ads b/gcc/ada/libgnat/s-imageu.ads
index cec5263..4c746da 100644
--- a/gcc/ada/libgnat/s-imageu.ads
+++ b/gcc/ada/libgnat/s-imageu.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imagew.adb b/gcc/ada/libgnat/s-imagew.adb
index 28ba37c..c29337b 100644
--- a/gcc/ada/libgnat/s-imagew.adb
+++ b/gcc/ada/libgnat/s-imagew.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imagew.ads b/gcc/ada/libgnat/s-imagew.ads
index 61b0604..eb84eba 100644
--- a/gcc/ada/libgnat/s-imagew.ads
+++ b/gcc/ada/libgnat/s-imagew.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imde128.ads b/gcc/ada/libgnat/s-imde128.ads
index 2dc4fdb..ce165b4 100644
--- a/gcc/ada/libgnat/s-imde128.ads
+++ b/gcc/ada/libgnat/s-imde128.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imde32.ads b/gcc/ada/libgnat/s-imde32.ads
index df7346a..5951d91 100644
--- a/gcc/ada/libgnat/s-imde32.ads
+++ b/gcc/ada/libgnat/s-imde32.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imde64.ads b/gcc/ada/libgnat/s-imde64.ads
index bf83c08..5f39dca 100644
--- a/gcc/ada/libgnat/s-imde64.ads
+++ b/gcc/ada/libgnat/s-imde64.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imen16.ads b/gcc/ada/libgnat/s-imen16.ads
index 4e9cb44..cebd8b8 100644
--- a/gcc/ada/libgnat/s-imen16.ads
+++ b/gcc/ada/libgnat/s-imen16.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2021-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2021-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imen32.ads b/gcc/ada/libgnat/s-imen32.ads
index e8264c1..11d02e8 100644
--- a/gcc/ada/libgnat/s-imen32.ads
+++ b/gcc/ada/libgnat/s-imen32.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2021-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2021-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imenu8.ads b/gcc/ada/libgnat/s-imenu8.ads
index a9413df..65f8161 100644
--- a/gcc/ada/libgnat/s-imenu8.ads
+++ b/gcc/ada/libgnat/s-imenu8.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2021-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2021-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imfi128.ads b/gcc/ada/libgnat/s-imfi128.ads
index 6e9d7af..d64fb84 100644
--- a/gcc/ada/libgnat/s-imfi128.ads
+++ b/gcc/ada/libgnat/s-imfi128.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imfi32.ads b/gcc/ada/libgnat/s-imfi32.ads
index 5636862..e56b07a 100644
--- a/gcc/ada/libgnat/s-imfi32.ads
+++ b/gcc/ada/libgnat/s-imfi32.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imfi64.ads b/gcc/ada/libgnat/s-imfi64.ads
index 65d056a..a5d0464 100644
--- a/gcc/ada/libgnat/s-imfi64.ads
+++ b/gcc/ada/libgnat/s-imfi64.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imgbiu.adb b/gcc/ada/libgnat/s-imgbiu.adb
index fd1f578..14e3f0e 100644
--- a/gcc/ada/libgnat/s-imgbiu.adb
+++ b/gcc/ada/libgnat/s-imgbiu.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imgbiu.ads b/gcc/ada/libgnat/s-imgbiu.ads
index 4cb021b..078a0ce 100644
--- a/gcc/ada/libgnat/s-imgbiu.ads
+++ b/gcc/ada/libgnat/s-imgbiu.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imgboo.adb b/gcc/ada/libgnat/s-imgboo.adb
index 9a6340f..1d1ec72 100644
--- a/gcc/ada/libgnat/s-imgboo.adb
+++ b/gcc/ada/libgnat/s-imgboo.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imgboo.ads b/gcc/ada/libgnat/s-imgboo.ads
index 92cc7c3..c3beaf3 100644
--- a/gcc/ada/libgnat/s-imgboo.ads
+++ b/gcc/ada/libgnat/s-imgboo.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imgcha.adb b/gcc/ada/libgnat/s-imgcha.adb
index 7598aed..65b411d 100644
--- a/gcc/ada/libgnat/s-imgcha.adb
+++ b/gcc/ada/libgnat/s-imgcha.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imgcha.ads b/gcc/ada/libgnat/s-imgcha.ads
index 43871a6..650c745 100644
--- a/gcc/ada/libgnat/s-imgcha.ads
+++ b/gcc/ada/libgnat/s-imgcha.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imgflt.ads b/gcc/ada/libgnat/s-imgflt.ads
index 6ac5a3e..8282a2b 100644
--- a/gcc/ada/libgnat/s-imgflt.ads
+++ b/gcc/ada/libgnat/s-imgflt.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2021-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2021-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imgint.adb b/gcc/ada/libgnat/s-imgint.adb
index 88556f5..4075121 100644
--- a/gcc/ada/libgnat/s-imgint.adb
+++ b/gcc/ada/libgnat/s-imgint.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imgint.ads b/gcc/ada/libgnat/s-imgint.ads
index fe93899..f20f27f 100644
--- a/gcc/ada/libgnat/s-imgint.ads
+++ b/gcc/ada/libgnat/s-imgint.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imglfl.ads b/gcc/ada/libgnat/s-imglfl.ads
index 656a1d7..7a8745c 100644
--- a/gcc/ada/libgnat/s-imglfl.ads
+++ b/gcc/ada/libgnat/s-imglfl.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2021-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2021-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imgllb.adb b/gcc/ada/libgnat/s-imgllb.adb
index a8b1de5..15c4160 100644
--- a/gcc/ada/libgnat/s-imgllb.adb
+++ b/gcc/ada/libgnat/s-imgllb.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imgllb.ads b/gcc/ada/libgnat/s-imgllb.ads
index fa134a7..799b93a 100644
--- a/gcc/ada/libgnat/s-imgllb.ads
+++ b/gcc/ada/libgnat/s-imgllb.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imgllf.ads b/gcc/ada/libgnat/s-imgllf.ads
index ba215d9..109345e 100644
--- a/gcc/ada/libgnat/s-imgllf.ads
+++ b/gcc/ada/libgnat/s-imgllf.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2021-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2021-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imglli.adb b/gcc/ada/libgnat/s-imglli.adb
index c9a0b3f..5353d64 100644
--- a/gcc/ada/libgnat/s-imglli.adb
+++ b/gcc/ada/libgnat/s-imglli.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imglli.ads b/gcc/ada/libgnat/s-imglli.ads
index 809ca10..084a4d00 100644
--- a/gcc/ada/libgnat/s-imglli.ads
+++ b/gcc/ada/libgnat/s-imglli.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imglllb.ads b/gcc/ada/libgnat/s-imglllb.ads
index 8009b65..7587c6e 100644
--- a/gcc/ada/libgnat/s-imglllb.ads
+++ b/gcc/ada/libgnat/s-imglllb.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imgllli.ads b/gcc/ada/libgnat/s-imgllli.ads
index 727388f..2245e15 100644
--- a/gcc/ada/libgnat/s-imgllli.ads
+++ b/gcc/ada/libgnat/s-imgllli.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imglllu.ads b/gcc/ada/libgnat/s-imglllu.ads
index 09c8965..ddbe258 100644
--- a/gcc/ada/libgnat/s-imglllu.ads
+++ b/gcc/ada/libgnat/s-imglllu.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imglllw.ads b/gcc/ada/libgnat/s-imglllw.ads
index 53bd722..2efb934 100644
--- a/gcc/ada/libgnat/s-imglllw.ads
+++ b/gcc/ada/libgnat/s-imglllw.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imgllu.adb b/gcc/ada/libgnat/s-imgllu.adb
index 97f5409..a1d6ce9 100644
--- a/gcc/ada/libgnat/s-imgllu.adb
+++ b/gcc/ada/libgnat/s-imgllu.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imgllu.ads b/gcc/ada/libgnat/s-imgllu.ads
index 9709c96..9757e23 100644
--- a/gcc/ada/libgnat/s-imgllu.ads
+++ b/gcc/ada/libgnat/s-imgllu.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imgllw.adb b/gcc/ada/libgnat/s-imgllw.adb
index 4305040..4287b9d 100644
--- a/gcc/ada/libgnat/s-imgllw.adb
+++ b/gcc/ada/libgnat/s-imgllw.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imgllw.ads b/gcc/ada/libgnat/s-imgllw.ads
index fba4590..9b29b80 100644
--- a/gcc/ada/libgnat/s-imgllw.ads
+++ b/gcc/ada/libgnat/s-imgllw.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imgrea.adb b/gcc/ada/libgnat/s-imgrea.adb
index 022abcb..6481328 100644
--- a/gcc/ada/libgnat/s-imgrea.adb
+++ b/gcc/ada/libgnat/s-imgrea.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imgrea.ads b/gcc/ada/libgnat/s-imgrea.ads
index b98436d..7b67ac2 100644
--- a/gcc/ada/libgnat/s-imgrea.ads
+++ b/gcc/ada/libgnat/s-imgrea.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imguns.adb b/gcc/ada/libgnat/s-imguns.adb
index 6bdac0a..8130faa 100644
--- a/gcc/ada/libgnat/s-imguns.adb
+++ b/gcc/ada/libgnat/s-imguns.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imguns.ads b/gcc/ada/libgnat/s-imguns.ads
index 7c79a66..5e1bcb7 100644
--- a/gcc/ada/libgnat/s-imguns.ads
+++ b/gcc/ada/libgnat/s-imguns.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imguti.adb b/gcc/ada/libgnat/s-imguti.adb
index cb08110..c6d39b5 100644
--- a/gcc/ada/libgnat/s-imguti.adb
+++ b/gcc/ada/libgnat/s-imguti.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imguti.ads b/gcc/ada/libgnat/s-imguti.ads
index 10766d4..8a18105 100644
--- a/gcc/ada/libgnat/s-imguti.ads
+++ b/gcc/ada/libgnat/s-imguti.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imgwch.adb b/gcc/ada/libgnat/s-imgwch.adb
index 60ce444..95ccfc6 100644
--- a/gcc/ada/libgnat/s-imgwch.adb
+++ b/gcc/ada/libgnat/s-imgwch.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imgwch.ads b/gcc/ada/libgnat/s-imgwch.ads
index 56b0510..b2a517e 100644
--- a/gcc/ada/libgnat/s-imgwch.ads
+++ b/gcc/ada/libgnat/s-imgwch.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imgwiu.adb b/gcc/ada/libgnat/s-imgwiu.adb
index 8642bef..04de879 100644
--- a/gcc/ada/libgnat/s-imgwiu.adb
+++ b/gcc/ada/libgnat/s-imgwiu.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-imgwiu.ads b/gcc/ada/libgnat/s-imgwiu.ads
index f25c729..d6ec188 100644
--- a/gcc/ada/libgnat/s-imgwiu.ads
+++ b/gcc/ada/libgnat/s-imgwiu.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-io.adb b/gcc/ada/libgnat/s-io.adb
index 4dc0a59..be16719 100644
--- a/gcc/ada/libgnat/s-io.adb
+++ b/gcc/ada/libgnat/s-io.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-io.ads b/gcc/ada/libgnat/s-io.ads
index 108bbf7..4fa58a7 100644
--- a/gcc/ada/libgnat/s-io.ads
+++ b/gcc/ada/libgnat/s-io.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-llflex.ads b/gcc/ada/libgnat/s-llflex.ads
index 19deb68..d0bdf19 100644
--- a/gcc/ada/libgnat/s-llflex.ads
+++ b/gcc/ada/libgnat/s-llflex.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-maccod.ads b/gcc/ada/libgnat/s-maccod.ads
index af34d11..5a11d56 100644
--- a/gcc/ada/libgnat/s-maccod.ads
+++ b/gcc/ada/libgnat/s-maccod.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-mantis.adb b/gcc/ada/libgnat/s-mantis.adb
index a4b3779..fa58337 100644
--- a/gcc/ada/libgnat/s-mantis.adb
+++ b/gcc/ada/libgnat/s-mantis.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1996-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1996-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-mantis.ads b/gcc/ada/libgnat/s-mantis.ads
index 4cab5d9..97309a5 100644
--- a/gcc/ada/libgnat/s-mantis.ads
+++ b/gcc/ada/libgnat/s-mantis.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1996-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1996-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-mastop.adb b/gcc/ada/libgnat/s-mastop.adb
index 22fc972..7cf97f6 100644
--- a/gcc/ada/libgnat/s-mastop.adb
+++ b/gcc/ada/libgnat/s-mastop.adb
@@ -7,7 +7,7 @@
-- B o d y --
-- (Dummy version) --
-- --
--- Copyright (C) 1999-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1999-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-mastop.ads b/gcc/ada/libgnat/s-mastop.ads
index 87e3fce..91eb182 100644
--- a/gcc/ada/libgnat/s-mastop.ads
+++ b/gcc/ada/libgnat/s-mastop.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1999-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1999-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-memcop.ads b/gcc/ada/libgnat/s-memcop.ads
index cf603ca..c9b615f 100644
--- a/gcc/ada/libgnat/s-memcop.ads
+++ b/gcc/ada/libgnat/s-memcop.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/s-memory.adb b/gcc/ada/libgnat/s-memory.adb
index 10d6cea..9b17fb3 100644
--- a/gcc/ada/libgnat/s-memory.adb
+++ b/gcc/ada/libgnat/s-memory.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-memory.ads b/gcc/ada/libgnat/s-memory.ads
index 4f6dd3d2..466e410 100644
--- a/gcc/ada/libgnat/s-memory.ads
+++ b/gcc/ada/libgnat/s-memory.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-mmap.adb b/gcc/ada/libgnat/s-mmap.adb
index abb870e..75388e8 100644
--- a/gcc/ada/libgnat/s-mmap.adb
+++ b/gcc/ada/libgnat/s-mmap.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2007-2023, AdaCore --
+-- Copyright (C) 2007-2024, AdaCore --
-- --
-- This library is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
diff --git a/gcc/ada/libgnat/s-mmap.ads b/gcc/ada/libgnat/s-mmap.ads
index 6d2ebed..0c01292 100644
--- a/gcc/ada/libgnat/s-mmap.ads
+++ b/gcc/ada/libgnat/s-mmap.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2007-2023, AdaCore --
+-- Copyright (C) 2007-2024, AdaCore --
-- --
-- This library is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
diff --git a/gcc/ada/libgnat/s-mmauni__long.ads b/gcc/ada/libgnat/s-mmauni__long.ads
index b3057ff..bc998ea 100644
--- a/gcc/ada/libgnat/s-mmauni__long.ads
+++ b/gcc/ada/libgnat/s-mmauni__long.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2007-2023, AdaCore --
+-- Copyright (C) 2007-2024, AdaCore --
-- --
-- This library is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
diff --git a/gcc/ada/libgnat/s-mmosin__mingw.adb b/gcc/ada/libgnat/s-mmosin__mingw.adb
index 23e3fe8..4f18585 100644
--- a/gcc/ada/libgnat/s-mmosin__mingw.adb
+++ b/gcc/ada/libgnat/s-mmosin__mingw.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2007-2023, AdaCore --
+-- Copyright (C) 2007-2024, AdaCore --
-- --
-- This library is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
diff --git a/gcc/ada/libgnat/s-mmosin__mingw.ads b/gcc/ada/libgnat/s-mmosin__mingw.ads
index 086dc18..ad6d906 100644
--- a/gcc/ada/libgnat/s-mmosin__mingw.ads
+++ b/gcc/ada/libgnat/s-mmosin__mingw.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2007-2023, AdaCore --
+-- Copyright (C) 2007-2024, AdaCore --
-- --
-- This library is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
diff --git a/gcc/ada/libgnat/s-mmosin__unix.adb b/gcc/ada/libgnat/s-mmosin__unix.adb
index 9ae8589..fc7d934 100644
--- a/gcc/ada/libgnat/s-mmosin__unix.adb
+++ b/gcc/ada/libgnat/s-mmosin__unix.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2007-2023, AdaCore --
+-- Copyright (C) 2007-2024, AdaCore --
-- --
-- This library is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
diff --git a/gcc/ada/libgnat/s-mmosin__unix.ads b/gcc/ada/libgnat/s-mmosin__unix.ads
index 5513f27..0e261c9 100644
--- a/gcc/ada/libgnat/s-mmosin__unix.ads
+++ b/gcc/ada/libgnat/s-mmosin__unix.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2007-2023, AdaCore --
+-- Copyright (C) 2007-2024, AdaCore --
-- --
-- This library is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
diff --git a/gcc/ada/libgnat/s-multip.adb b/gcc/ada/libgnat/s-multip.adb
index 96177f9..1b76f8a 100644
--- a/gcc/ada/libgnat/s-multip.adb
+++ b/gcc/ada/libgnat/s-multip.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2010-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2010-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-objrea.adb b/gcc/ada/libgnat/s-objrea.adb
index 226e444..c4d69ab 100644
--- a/gcc/ada/libgnat/s-objrea.adb
+++ b/gcc/ada/libgnat/s-objrea.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-objrea.ads b/gcc/ada/libgnat/s-objrea.ads
index f6a38be..2c051ef 100644
--- a/gcc/ada/libgnat/s-objrea.ads
+++ b/gcc/ada/libgnat/s-objrea.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-optide.adb b/gcc/ada/libgnat/s-optide.adb
index 117f0a2..c73d44f 100644
--- a/gcc/ada/libgnat/s-optide.adb
+++ b/gcc/ada/libgnat/s-optide.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2012-2023, AdaCore --
+-- Copyright (C) 2012-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-os_lib.adb b/gcc/ada/libgnat/s-os_lib.adb
index 2647b98..20e109a 100644
--- a/gcc/ada/libgnat/s-os_lib.adb
+++ b/gcc/ada/libgnat/s-os_lib.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1995-2023, AdaCore --
+-- Copyright (C) 1995-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-os_lib.ads b/gcc/ada/libgnat/s-os_lib.ads
index 9be09b3..46e11f7 100644
--- a/gcc/ada/libgnat/s-os_lib.ads
+++ b/gcc/ada/libgnat/s-os_lib.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1995-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1995-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-osprim.ads b/gcc/ada/libgnat/s-osprim.ads
index 5fc17f8..c267953 100644
--- a/gcc/ada/libgnat/s-osprim.ads
+++ b/gcc/ada/libgnat/s-osprim.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1998-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1998-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-osprim__darwin.adb b/gcc/ada/libgnat/s-osprim__darwin.adb
index ba0411b..ce1ec3f 100644
--- a/gcc/ada/libgnat/s-osprim__darwin.adb
+++ b/gcc/ada/libgnat/s-osprim__darwin.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1998-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1998-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-osprim__lynxos.ads b/gcc/ada/libgnat/s-osprim__lynxos.ads
index 115ce21..6b9ae00 100644
--- a/gcc/ada/libgnat/s-osprim__lynxos.ads
+++ b/gcc/ada/libgnat/s-osprim__lynxos.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1998-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1998-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-osprim__mingw.adb b/gcc/ada/libgnat/s-osprim__mingw.adb
index a27b25f..7700776 100644
--- a/gcc/ada/libgnat/s-osprim__mingw.adb
+++ b/gcc/ada/libgnat/s-osprim__mingw.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1998-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1998-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-osprim__posix.adb b/gcc/ada/libgnat/s-osprim__posix.adb
index 2fa1960..ba61a0c 100644
--- a/gcc/ada/libgnat/s-osprim__posix.adb
+++ b/gcc/ada/libgnat/s-osprim__posix.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1998-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1998-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-osprim__posix2008.adb b/gcc/ada/libgnat/s-osprim__posix2008.adb
index bbb4f14..d819858 100644
--- a/gcc/ada/libgnat/s-osprim__posix2008.adb
+++ b/gcc/ada/libgnat/s-osprim__posix2008.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1998-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1998-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-osprim__rtems.adb b/gcc/ada/libgnat/s-osprim__rtems.adb
index 1096dcd..2d1302c 100644
--- a/gcc/ada/libgnat/s-osprim__rtems.adb
+++ b/gcc/ada/libgnat/s-osprim__rtems.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1998-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1998-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-osprim__solaris.adb b/gcc/ada/libgnat/s-osprim__solaris.adb
index 38c6c4d..e41d074 100644
--- a/gcc/ada/libgnat/s-osprim__solaris.adb
+++ b/gcc/ada/libgnat/s-osprim__solaris.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1998-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1998-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-osprim__unix.adb b/gcc/ada/libgnat/s-osprim__unix.adb
index b2d7937..e7a66aa 100644
--- a/gcc/ada/libgnat/s-osprim__unix.adb
+++ b/gcc/ada/libgnat/s-osprim__unix.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1998-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1998-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-osprim__x32.adb b/gcc/ada/libgnat/s-osprim__x32.adb
index c3564c8..2340866 100644
--- a/gcc/ada/libgnat/s-osprim__x32.adb
+++ b/gcc/ada/libgnat/s-osprim__x32.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2013-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2013-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack03.adb b/gcc/ada/libgnat/s-pack03.adb
index 85e18a2..73f54db 100644
--- a/gcc/ada/libgnat/s-pack03.adb
+++ b/gcc/ada/libgnat/s-pack03.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack03.ads b/gcc/ada/libgnat/s-pack03.ads
index 31d6658..a3c97ae 100644
--- a/gcc/ada/libgnat/s-pack03.ads
+++ b/gcc/ada/libgnat/s-pack03.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack05.adb b/gcc/ada/libgnat/s-pack05.adb
index 6ed9f98..48db669 100644
--- a/gcc/ada/libgnat/s-pack05.adb
+++ b/gcc/ada/libgnat/s-pack05.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack05.ads b/gcc/ada/libgnat/s-pack05.ads
index ea5e9f5..19dd7cc 100644
--- a/gcc/ada/libgnat/s-pack05.ads
+++ b/gcc/ada/libgnat/s-pack05.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack06.adb b/gcc/ada/libgnat/s-pack06.adb
index 9e5b594..c27412c 100644
--- a/gcc/ada/libgnat/s-pack06.adb
+++ b/gcc/ada/libgnat/s-pack06.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack06.ads b/gcc/ada/libgnat/s-pack06.ads
index c904317..0ff9cc3 100644
--- a/gcc/ada/libgnat/s-pack06.ads
+++ b/gcc/ada/libgnat/s-pack06.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack07.adb b/gcc/ada/libgnat/s-pack07.adb
index 222d864..159fb21 100644
--- a/gcc/ada/libgnat/s-pack07.adb
+++ b/gcc/ada/libgnat/s-pack07.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack07.ads b/gcc/ada/libgnat/s-pack07.ads
index ccba478..439d468 100644
--- a/gcc/ada/libgnat/s-pack07.ads
+++ b/gcc/ada/libgnat/s-pack07.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack09.adb b/gcc/ada/libgnat/s-pack09.adb
index 7643e8a..a1fb415 100644
--- a/gcc/ada/libgnat/s-pack09.adb
+++ b/gcc/ada/libgnat/s-pack09.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack09.ads b/gcc/ada/libgnat/s-pack09.ads
index 2f4e1d3..f8b8f44 100644
--- a/gcc/ada/libgnat/s-pack09.ads
+++ b/gcc/ada/libgnat/s-pack09.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack10.adb b/gcc/ada/libgnat/s-pack10.adb
index 1b42cfd..42e1c3a 100644
--- a/gcc/ada/libgnat/s-pack10.adb
+++ b/gcc/ada/libgnat/s-pack10.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack10.ads b/gcc/ada/libgnat/s-pack10.ads
index d2d72ad..e0e6b25 100644
--- a/gcc/ada/libgnat/s-pack10.ads
+++ b/gcc/ada/libgnat/s-pack10.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack100.adb b/gcc/ada/libgnat/s-pack100.adb
index 3318f2e..8429daf 100644
--- a/gcc/ada/libgnat/s-pack100.adb
+++ b/gcc/ada/libgnat/s-pack100.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack100.ads b/gcc/ada/libgnat/s-pack100.ads
index ea54725..25d56bd 100644
--- a/gcc/ada/libgnat/s-pack100.ads
+++ b/gcc/ada/libgnat/s-pack100.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack101.adb b/gcc/ada/libgnat/s-pack101.adb
index 947ace2..eb22abd 100644
--- a/gcc/ada/libgnat/s-pack101.adb
+++ b/gcc/ada/libgnat/s-pack101.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack101.ads b/gcc/ada/libgnat/s-pack101.ads
index 18f98fd..dc770dc 100644
--- a/gcc/ada/libgnat/s-pack101.ads
+++ b/gcc/ada/libgnat/s-pack101.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack102.adb b/gcc/ada/libgnat/s-pack102.adb
index 6f91469..6ac093c 100644
--- a/gcc/ada/libgnat/s-pack102.adb
+++ b/gcc/ada/libgnat/s-pack102.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack102.ads b/gcc/ada/libgnat/s-pack102.ads
index 8044d4b..07f99cd 100644
--- a/gcc/ada/libgnat/s-pack102.ads
+++ b/gcc/ada/libgnat/s-pack102.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack103.adb b/gcc/ada/libgnat/s-pack103.adb
index fa014b3..a51ba94 100644
--- a/gcc/ada/libgnat/s-pack103.adb
+++ b/gcc/ada/libgnat/s-pack103.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack103.ads b/gcc/ada/libgnat/s-pack103.ads
index 569375b..13724b5 100644
--- a/gcc/ada/libgnat/s-pack103.ads
+++ b/gcc/ada/libgnat/s-pack103.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack104.adb b/gcc/ada/libgnat/s-pack104.adb
index d699ae2..24f5fb4 100644
--- a/gcc/ada/libgnat/s-pack104.adb
+++ b/gcc/ada/libgnat/s-pack104.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack104.ads b/gcc/ada/libgnat/s-pack104.ads
index d0a7cef..a4ba3ae 100644
--- a/gcc/ada/libgnat/s-pack104.ads
+++ b/gcc/ada/libgnat/s-pack104.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack105.adb b/gcc/ada/libgnat/s-pack105.adb
index 694315e..5397947 100644
--- a/gcc/ada/libgnat/s-pack105.adb
+++ b/gcc/ada/libgnat/s-pack105.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack105.ads b/gcc/ada/libgnat/s-pack105.ads
index f0ae1bf..7de6f84 100644
--- a/gcc/ada/libgnat/s-pack105.ads
+++ b/gcc/ada/libgnat/s-pack105.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack106.adb b/gcc/ada/libgnat/s-pack106.adb
index 5d50459..bd1631e 100644
--- a/gcc/ada/libgnat/s-pack106.adb
+++ b/gcc/ada/libgnat/s-pack106.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack106.ads b/gcc/ada/libgnat/s-pack106.ads
index e25a78d..d82f267 100644
--- a/gcc/ada/libgnat/s-pack106.ads
+++ b/gcc/ada/libgnat/s-pack106.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack107.adb b/gcc/ada/libgnat/s-pack107.adb
index d3f3aa1..b2e84ac 100644
--- a/gcc/ada/libgnat/s-pack107.adb
+++ b/gcc/ada/libgnat/s-pack107.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack107.ads b/gcc/ada/libgnat/s-pack107.ads
index b667989..97db1d9 100644
--- a/gcc/ada/libgnat/s-pack107.ads
+++ b/gcc/ada/libgnat/s-pack107.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack108.adb b/gcc/ada/libgnat/s-pack108.adb
index 711442d..2f37e0c 100644
--- a/gcc/ada/libgnat/s-pack108.adb
+++ b/gcc/ada/libgnat/s-pack108.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack108.ads b/gcc/ada/libgnat/s-pack108.ads
index 6a5e653..ea2bf3a 100644
--- a/gcc/ada/libgnat/s-pack108.ads
+++ b/gcc/ada/libgnat/s-pack108.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack109.adb b/gcc/ada/libgnat/s-pack109.adb
index 5751a62..a227b27 100644
--- a/gcc/ada/libgnat/s-pack109.adb
+++ b/gcc/ada/libgnat/s-pack109.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack109.ads b/gcc/ada/libgnat/s-pack109.ads
index 47bc8e5..33490ce 100644
--- a/gcc/ada/libgnat/s-pack109.ads
+++ b/gcc/ada/libgnat/s-pack109.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack11.adb b/gcc/ada/libgnat/s-pack11.adb
index d16fe8e..4b227e9 100644
--- a/gcc/ada/libgnat/s-pack11.adb
+++ b/gcc/ada/libgnat/s-pack11.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack11.ads b/gcc/ada/libgnat/s-pack11.ads
index 548907c..c2b4d5c 100644
--- a/gcc/ada/libgnat/s-pack11.ads
+++ b/gcc/ada/libgnat/s-pack11.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack110.adb b/gcc/ada/libgnat/s-pack110.adb
index 2d70d48..a6ae71b 100644
--- a/gcc/ada/libgnat/s-pack110.adb
+++ b/gcc/ada/libgnat/s-pack110.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack110.ads b/gcc/ada/libgnat/s-pack110.ads
index 6bc8b5e..cb89aeb 100644
--- a/gcc/ada/libgnat/s-pack110.ads
+++ b/gcc/ada/libgnat/s-pack110.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack111.adb b/gcc/ada/libgnat/s-pack111.adb
index 7ee3803..d0068d2 100644
--- a/gcc/ada/libgnat/s-pack111.adb
+++ b/gcc/ada/libgnat/s-pack111.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack111.ads b/gcc/ada/libgnat/s-pack111.ads
index c89959f..eb9480b 100644
--- a/gcc/ada/libgnat/s-pack111.ads
+++ b/gcc/ada/libgnat/s-pack111.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack112.adb b/gcc/ada/libgnat/s-pack112.adb
index 56447c1..fe3b6080 100644
--- a/gcc/ada/libgnat/s-pack112.adb
+++ b/gcc/ada/libgnat/s-pack112.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack112.ads b/gcc/ada/libgnat/s-pack112.ads
index 1fff8a0..127f415 100644
--- a/gcc/ada/libgnat/s-pack112.ads
+++ b/gcc/ada/libgnat/s-pack112.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack113.adb b/gcc/ada/libgnat/s-pack113.adb
index e456f81..7430264 100644
--- a/gcc/ada/libgnat/s-pack113.adb
+++ b/gcc/ada/libgnat/s-pack113.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack113.ads b/gcc/ada/libgnat/s-pack113.ads
index 2fe2750..e62533e 100644
--- a/gcc/ada/libgnat/s-pack113.ads
+++ b/gcc/ada/libgnat/s-pack113.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack114.adb b/gcc/ada/libgnat/s-pack114.adb
index 9f48f4b..f0bdba2 100644
--- a/gcc/ada/libgnat/s-pack114.adb
+++ b/gcc/ada/libgnat/s-pack114.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack114.ads b/gcc/ada/libgnat/s-pack114.ads
index e4f7cd0..a1a8f43 100644
--- a/gcc/ada/libgnat/s-pack114.ads
+++ b/gcc/ada/libgnat/s-pack114.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack115.adb b/gcc/ada/libgnat/s-pack115.adb
index 0cf3318..ba6448a 100644
--- a/gcc/ada/libgnat/s-pack115.adb
+++ b/gcc/ada/libgnat/s-pack115.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack115.ads b/gcc/ada/libgnat/s-pack115.ads
index 3b48d36..388b600 100644
--- a/gcc/ada/libgnat/s-pack115.ads
+++ b/gcc/ada/libgnat/s-pack115.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack116.adb b/gcc/ada/libgnat/s-pack116.adb
index 8bfc5b9..9fa7645 100644
--- a/gcc/ada/libgnat/s-pack116.adb
+++ b/gcc/ada/libgnat/s-pack116.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack116.ads b/gcc/ada/libgnat/s-pack116.ads
index bdcd444..b7af39e 100644
--- a/gcc/ada/libgnat/s-pack116.ads
+++ b/gcc/ada/libgnat/s-pack116.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack117.adb b/gcc/ada/libgnat/s-pack117.adb
index b4afc61..e9be244 100644
--- a/gcc/ada/libgnat/s-pack117.adb
+++ b/gcc/ada/libgnat/s-pack117.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack117.ads b/gcc/ada/libgnat/s-pack117.ads
index 26ff357..a61655b 100644
--- a/gcc/ada/libgnat/s-pack117.ads
+++ b/gcc/ada/libgnat/s-pack117.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack118.adb b/gcc/ada/libgnat/s-pack118.adb
index 4e0fd5e..4290e0d 100644
--- a/gcc/ada/libgnat/s-pack118.adb
+++ b/gcc/ada/libgnat/s-pack118.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack118.ads b/gcc/ada/libgnat/s-pack118.ads
index f365c89..2547361 100644
--- a/gcc/ada/libgnat/s-pack118.ads
+++ b/gcc/ada/libgnat/s-pack118.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack119.adb b/gcc/ada/libgnat/s-pack119.adb
index 0e42d14..dd27b4c 100644
--- a/gcc/ada/libgnat/s-pack119.adb
+++ b/gcc/ada/libgnat/s-pack119.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack119.ads b/gcc/ada/libgnat/s-pack119.ads
index 1c83e45..7018096 100644
--- a/gcc/ada/libgnat/s-pack119.ads
+++ b/gcc/ada/libgnat/s-pack119.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack12.adb b/gcc/ada/libgnat/s-pack12.adb
index 41d36a6..8ae52d2 100644
--- a/gcc/ada/libgnat/s-pack12.adb
+++ b/gcc/ada/libgnat/s-pack12.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack12.ads b/gcc/ada/libgnat/s-pack12.ads
index 7b32965..da0a553 100644
--- a/gcc/ada/libgnat/s-pack12.ads
+++ b/gcc/ada/libgnat/s-pack12.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack120.adb b/gcc/ada/libgnat/s-pack120.adb
index 5fdde24..fdea3af 100644
--- a/gcc/ada/libgnat/s-pack120.adb
+++ b/gcc/ada/libgnat/s-pack120.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack120.ads b/gcc/ada/libgnat/s-pack120.ads
index e1e0f4a..193ea85 100644
--- a/gcc/ada/libgnat/s-pack120.ads
+++ b/gcc/ada/libgnat/s-pack120.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack121.adb b/gcc/ada/libgnat/s-pack121.adb
index 4c7ad22..706801e 100644
--- a/gcc/ada/libgnat/s-pack121.adb
+++ b/gcc/ada/libgnat/s-pack121.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack121.ads b/gcc/ada/libgnat/s-pack121.ads
index ef68e30..29f3e04 100644
--- a/gcc/ada/libgnat/s-pack121.ads
+++ b/gcc/ada/libgnat/s-pack121.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack122.adb b/gcc/ada/libgnat/s-pack122.adb
index 45cb06b..7ee763f 100644
--- a/gcc/ada/libgnat/s-pack122.adb
+++ b/gcc/ada/libgnat/s-pack122.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack122.ads b/gcc/ada/libgnat/s-pack122.ads
index 502a61a..bcdf23e 100644
--- a/gcc/ada/libgnat/s-pack122.ads
+++ b/gcc/ada/libgnat/s-pack122.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack123.adb b/gcc/ada/libgnat/s-pack123.adb
index b524cac..a26123e 100644
--- a/gcc/ada/libgnat/s-pack123.adb
+++ b/gcc/ada/libgnat/s-pack123.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack123.ads b/gcc/ada/libgnat/s-pack123.ads
index 2d358a5..498e388 100644
--- a/gcc/ada/libgnat/s-pack123.ads
+++ b/gcc/ada/libgnat/s-pack123.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack124.adb b/gcc/ada/libgnat/s-pack124.adb
index 328d7dc..e3f1ae3 100644
--- a/gcc/ada/libgnat/s-pack124.adb
+++ b/gcc/ada/libgnat/s-pack124.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack124.ads b/gcc/ada/libgnat/s-pack124.ads
index f0ff6b0..59a47e3 100644
--- a/gcc/ada/libgnat/s-pack124.ads
+++ b/gcc/ada/libgnat/s-pack124.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack125.adb b/gcc/ada/libgnat/s-pack125.adb
index 93fb70f..86137f6 100644
--- a/gcc/ada/libgnat/s-pack125.adb
+++ b/gcc/ada/libgnat/s-pack125.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack125.ads b/gcc/ada/libgnat/s-pack125.ads
index 1351ba0..c38722c 100644
--- a/gcc/ada/libgnat/s-pack125.ads
+++ b/gcc/ada/libgnat/s-pack125.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack126.adb b/gcc/ada/libgnat/s-pack126.adb
index abaab52..a984639 100644
--- a/gcc/ada/libgnat/s-pack126.adb
+++ b/gcc/ada/libgnat/s-pack126.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack126.ads b/gcc/ada/libgnat/s-pack126.ads
index 0f71c4e..72ae14a 100644
--- a/gcc/ada/libgnat/s-pack126.ads
+++ b/gcc/ada/libgnat/s-pack126.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack127.adb b/gcc/ada/libgnat/s-pack127.adb
index f45d8b3..2cc7040 100644
--- a/gcc/ada/libgnat/s-pack127.adb
+++ b/gcc/ada/libgnat/s-pack127.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack127.ads b/gcc/ada/libgnat/s-pack127.ads
index ccddc8c..3ba368d 100644
--- a/gcc/ada/libgnat/s-pack127.ads
+++ b/gcc/ada/libgnat/s-pack127.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack13.adb b/gcc/ada/libgnat/s-pack13.adb
index aa40ef9..3cb510b 100644
--- a/gcc/ada/libgnat/s-pack13.adb
+++ b/gcc/ada/libgnat/s-pack13.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack13.ads b/gcc/ada/libgnat/s-pack13.ads
index 5145085..3bae073 100644
--- a/gcc/ada/libgnat/s-pack13.ads
+++ b/gcc/ada/libgnat/s-pack13.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack14.adb b/gcc/ada/libgnat/s-pack14.adb
index c458e41..56e8ab9 100644
--- a/gcc/ada/libgnat/s-pack14.adb
+++ b/gcc/ada/libgnat/s-pack14.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack14.ads b/gcc/ada/libgnat/s-pack14.ads
index e44ff77..5199629 100644
--- a/gcc/ada/libgnat/s-pack14.ads
+++ b/gcc/ada/libgnat/s-pack14.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack15.adb b/gcc/ada/libgnat/s-pack15.adb
index e08cb96..f4dcc74 100644
--- a/gcc/ada/libgnat/s-pack15.adb
+++ b/gcc/ada/libgnat/s-pack15.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack15.ads b/gcc/ada/libgnat/s-pack15.ads
index e7b90c0..76ab39b 100644
--- a/gcc/ada/libgnat/s-pack15.ads
+++ b/gcc/ada/libgnat/s-pack15.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack17.adb b/gcc/ada/libgnat/s-pack17.adb
index db109ef..fbecd15 100644
--- a/gcc/ada/libgnat/s-pack17.adb
+++ b/gcc/ada/libgnat/s-pack17.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack17.ads b/gcc/ada/libgnat/s-pack17.ads
index ccc6b24..a888f13 100644
--- a/gcc/ada/libgnat/s-pack17.ads
+++ b/gcc/ada/libgnat/s-pack17.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack18.adb b/gcc/ada/libgnat/s-pack18.adb
index 4c04564..0a19393 100644
--- a/gcc/ada/libgnat/s-pack18.adb
+++ b/gcc/ada/libgnat/s-pack18.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack18.ads b/gcc/ada/libgnat/s-pack18.ads
index 7392f79..ef95214 100644
--- a/gcc/ada/libgnat/s-pack18.ads
+++ b/gcc/ada/libgnat/s-pack18.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack19.adb b/gcc/ada/libgnat/s-pack19.adb
index 9a0b3e5..2fc2c69 100644
--- a/gcc/ada/libgnat/s-pack19.adb
+++ b/gcc/ada/libgnat/s-pack19.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack19.ads b/gcc/ada/libgnat/s-pack19.ads
index 91f43c7..75a7aeb 100644
--- a/gcc/ada/libgnat/s-pack19.ads
+++ b/gcc/ada/libgnat/s-pack19.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack20.adb b/gcc/ada/libgnat/s-pack20.adb
index c11b043..678931d 100644
--- a/gcc/ada/libgnat/s-pack20.adb
+++ b/gcc/ada/libgnat/s-pack20.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack20.ads b/gcc/ada/libgnat/s-pack20.ads
index 6d3a220..e4d6570 100644
--- a/gcc/ada/libgnat/s-pack20.ads
+++ b/gcc/ada/libgnat/s-pack20.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack21.adb b/gcc/ada/libgnat/s-pack21.adb
index 429aa13..b55e835 100644
--- a/gcc/ada/libgnat/s-pack21.adb
+++ b/gcc/ada/libgnat/s-pack21.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack21.ads b/gcc/ada/libgnat/s-pack21.ads
index 03e3841..c67bf22 100644
--- a/gcc/ada/libgnat/s-pack21.ads
+++ b/gcc/ada/libgnat/s-pack21.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack22.adb b/gcc/ada/libgnat/s-pack22.adb
index f50fa15..91cd46f 100644
--- a/gcc/ada/libgnat/s-pack22.adb
+++ b/gcc/ada/libgnat/s-pack22.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack22.ads b/gcc/ada/libgnat/s-pack22.ads
index 5cc8f8c..6241bb2 100644
--- a/gcc/ada/libgnat/s-pack22.ads
+++ b/gcc/ada/libgnat/s-pack22.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack23.adb b/gcc/ada/libgnat/s-pack23.adb
index 8f5cf54..9dc2450 100644
--- a/gcc/ada/libgnat/s-pack23.adb
+++ b/gcc/ada/libgnat/s-pack23.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack23.ads b/gcc/ada/libgnat/s-pack23.ads
index ccfe3ad..48aaeb5 100644
--- a/gcc/ada/libgnat/s-pack23.ads
+++ b/gcc/ada/libgnat/s-pack23.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack24.adb b/gcc/ada/libgnat/s-pack24.adb
index 504e1ce..27c3c9d 100644
--- a/gcc/ada/libgnat/s-pack24.adb
+++ b/gcc/ada/libgnat/s-pack24.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack24.ads b/gcc/ada/libgnat/s-pack24.ads
index 601e259..4177131 100644
--- a/gcc/ada/libgnat/s-pack24.ads
+++ b/gcc/ada/libgnat/s-pack24.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack25.adb b/gcc/ada/libgnat/s-pack25.adb
index ee12a4b..2a6ce35 100644
--- a/gcc/ada/libgnat/s-pack25.adb
+++ b/gcc/ada/libgnat/s-pack25.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack25.ads b/gcc/ada/libgnat/s-pack25.ads
index f4cf1de..68d4d65 100644
--- a/gcc/ada/libgnat/s-pack25.ads
+++ b/gcc/ada/libgnat/s-pack25.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack26.adb b/gcc/ada/libgnat/s-pack26.adb
index 9d54c92..f764b48 100644
--- a/gcc/ada/libgnat/s-pack26.adb
+++ b/gcc/ada/libgnat/s-pack26.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack26.ads b/gcc/ada/libgnat/s-pack26.ads
index 274f022..d32aabb 100644
--- a/gcc/ada/libgnat/s-pack26.ads
+++ b/gcc/ada/libgnat/s-pack26.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack27.adb b/gcc/ada/libgnat/s-pack27.adb
index 9609a2b..23d12b0 100644
--- a/gcc/ada/libgnat/s-pack27.adb
+++ b/gcc/ada/libgnat/s-pack27.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack27.ads b/gcc/ada/libgnat/s-pack27.ads
index 1e46ade..4955757 100644
--- a/gcc/ada/libgnat/s-pack27.ads
+++ b/gcc/ada/libgnat/s-pack27.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack28.adb b/gcc/ada/libgnat/s-pack28.adb
index 883932f..d2c2efb 100644
--- a/gcc/ada/libgnat/s-pack28.adb
+++ b/gcc/ada/libgnat/s-pack28.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack28.ads b/gcc/ada/libgnat/s-pack28.ads
index a93c97f..75f7de4 100644
--- a/gcc/ada/libgnat/s-pack28.ads
+++ b/gcc/ada/libgnat/s-pack28.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack29.adb b/gcc/ada/libgnat/s-pack29.adb
index c531f1a..0212843 100644
--- a/gcc/ada/libgnat/s-pack29.adb
+++ b/gcc/ada/libgnat/s-pack29.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack29.ads b/gcc/ada/libgnat/s-pack29.ads
index cc5689c..2404df2 100644
--- a/gcc/ada/libgnat/s-pack29.ads
+++ b/gcc/ada/libgnat/s-pack29.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack30.adb b/gcc/ada/libgnat/s-pack30.adb
index ca5ead7..0f313f3 100644
--- a/gcc/ada/libgnat/s-pack30.adb
+++ b/gcc/ada/libgnat/s-pack30.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack30.ads b/gcc/ada/libgnat/s-pack30.ads
index 60c2bf1..3bde862 100644
--- a/gcc/ada/libgnat/s-pack30.ads
+++ b/gcc/ada/libgnat/s-pack30.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack31.adb b/gcc/ada/libgnat/s-pack31.adb
index 537b5d2..958bca7 100644
--- a/gcc/ada/libgnat/s-pack31.adb
+++ b/gcc/ada/libgnat/s-pack31.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack31.ads b/gcc/ada/libgnat/s-pack31.ads
index 050a66c..5fedc77 100644
--- a/gcc/ada/libgnat/s-pack31.ads
+++ b/gcc/ada/libgnat/s-pack31.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack33.adb b/gcc/ada/libgnat/s-pack33.adb
index 815b5bb..6cf9d5c 100644
--- a/gcc/ada/libgnat/s-pack33.adb
+++ b/gcc/ada/libgnat/s-pack33.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack33.ads b/gcc/ada/libgnat/s-pack33.ads
index 9fcb6d1..dfdc372 100644
--- a/gcc/ada/libgnat/s-pack33.ads
+++ b/gcc/ada/libgnat/s-pack33.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack34.adb b/gcc/ada/libgnat/s-pack34.adb
index 8a8ceea..a63451b 100644
--- a/gcc/ada/libgnat/s-pack34.adb
+++ b/gcc/ada/libgnat/s-pack34.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack34.ads b/gcc/ada/libgnat/s-pack34.ads
index 0fee7be..39799ac 100644
--- a/gcc/ada/libgnat/s-pack34.ads
+++ b/gcc/ada/libgnat/s-pack34.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack35.adb b/gcc/ada/libgnat/s-pack35.adb
index 7f3ce98..36d011f 100644
--- a/gcc/ada/libgnat/s-pack35.adb
+++ b/gcc/ada/libgnat/s-pack35.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack35.ads b/gcc/ada/libgnat/s-pack35.ads
index e7721a1..83c97ae 100644
--- a/gcc/ada/libgnat/s-pack35.ads
+++ b/gcc/ada/libgnat/s-pack35.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack36.adb b/gcc/ada/libgnat/s-pack36.adb
index 75963d1..a137c3b 100644
--- a/gcc/ada/libgnat/s-pack36.adb
+++ b/gcc/ada/libgnat/s-pack36.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack36.ads b/gcc/ada/libgnat/s-pack36.ads
index f9ddd0a..ed7f6d7 100644
--- a/gcc/ada/libgnat/s-pack36.ads
+++ b/gcc/ada/libgnat/s-pack36.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack37.adb b/gcc/ada/libgnat/s-pack37.adb
index 2fe4d7c..72ec4c6 100644
--- a/gcc/ada/libgnat/s-pack37.adb
+++ b/gcc/ada/libgnat/s-pack37.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack37.ads b/gcc/ada/libgnat/s-pack37.ads
index f641653..17ce508 100644
--- a/gcc/ada/libgnat/s-pack37.ads
+++ b/gcc/ada/libgnat/s-pack37.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack38.adb b/gcc/ada/libgnat/s-pack38.adb
index 5aa4d07..6ea9a67 100644
--- a/gcc/ada/libgnat/s-pack38.adb
+++ b/gcc/ada/libgnat/s-pack38.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack38.ads b/gcc/ada/libgnat/s-pack38.ads
index ae7c7fa..515f35c 100644
--- a/gcc/ada/libgnat/s-pack38.ads
+++ b/gcc/ada/libgnat/s-pack38.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack39.adb b/gcc/ada/libgnat/s-pack39.adb
index 4777267..75747c5 100644
--- a/gcc/ada/libgnat/s-pack39.adb
+++ b/gcc/ada/libgnat/s-pack39.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack39.ads b/gcc/ada/libgnat/s-pack39.ads
index ce536fe..7835a22 100644
--- a/gcc/ada/libgnat/s-pack39.ads
+++ b/gcc/ada/libgnat/s-pack39.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack40.adb b/gcc/ada/libgnat/s-pack40.adb
index 35281d4..383c54e 100644
--- a/gcc/ada/libgnat/s-pack40.adb
+++ b/gcc/ada/libgnat/s-pack40.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack40.ads b/gcc/ada/libgnat/s-pack40.ads
index 50312db..d4f9942 100644
--- a/gcc/ada/libgnat/s-pack40.ads
+++ b/gcc/ada/libgnat/s-pack40.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack41.adb b/gcc/ada/libgnat/s-pack41.adb
index 7fe4568..23849be 100644
--- a/gcc/ada/libgnat/s-pack41.adb
+++ b/gcc/ada/libgnat/s-pack41.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack41.ads b/gcc/ada/libgnat/s-pack41.ads
index 99760bf..62cfbfa 100644
--- a/gcc/ada/libgnat/s-pack41.ads
+++ b/gcc/ada/libgnat/s-pack41.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack42.adb b/gcc/ada/libgnat/s-pack42.adb
index ee099e4..b90fe03 100644
--- a/gcc/ada/libgnat/s-pack42.adb
+++ b/gcc/ada/libgnat/s-pack42.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack42.ads b/gcc/ada/libgnat/s-pack42.ads
index 5a5fc91..dccb448 100644
--- a/gcc/ada/libgnat/s-pack42.ads
+++ b/gcc/ada/libgnat/s-pack42.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack43.adb b/gcc/ada/libgnat/s-pack43.adb
index bd46efb..f97e2a5 100644
--- a/gcc/ada/libgnat/s-pack43.adb
+++ b/gcc/ada/libgnat/s-pack43.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack43.ads b/gcc/ada/libgnat/s-pack43.ads
index a0a76e3..33e7cbd 100644
--- a/gcc/ada/libgnat/s-pack43.ads
+++ b/gcc/ada/libgnat/s-pack43.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack44.adb b/gcc/ada/libgnat/s-pack44.adb
index fa6390e..4f61909 100644
--- a/gcc/ada/libgnat/s-pack44.adb
+++ b/gcc/ada/libgnat/s-pack44.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack44.ads b/gcc/ada/libgnat/s-pack44.ads
index ac7e64b..375e21b 100644
--- a/gcc/ada/libgnat/s-pack44.ads
+++ b/gcc/ada/libgnat/s-pack44.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack45.adb b/gcc/ada/libgnat/s-pack45.adb
index 798c1ea..d67fbae 100644
--- a/gcc/ada/libgnat/s-pack45.adb
+++ b/gcc/ada/libgnat/s-pack45.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack45.ads b/gcc/ada/libgnat/s-pack45.ads
index 76d4cd5..e006560 100644
--- a/gcc/ada/libgnat/s-pack45.ads
+++ b/gcc/ada/libgnat/s-pack45.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack46.adb b/gcc/ada/libgnat/s-pack46.adb
index a3e637f..e5b86bd 100644
--- a/gcc/ada/libgnat/s-pack46.adb
+++ b/gcc/ada/libgnat/s-pack46.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack46.ads b/gcc/ada/libgnat/s-pack46.ads
index d895016..c86e301 100644
--- a/gcc/ada/libgnat/s-pack46.ads
+++ b/gcc/ada/libgnat/s-pack46.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack47.adb b/gcc/ada/libgnat/s-pack47.adb
index 14b8efd..c77105c 100644
--- a/gcc/ada/libgnat/s-pack47.adb
+++ b/gcc/ada/libgnat/s-pack47.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack47.ads b/gcc/ada/libgnat/s-pack47.ads
index 8768950..863fa8a 100644
--- a/gcc/ada/libgnat/s-pack47.ads
+++ b/gcc/ada/libgnat/s-pack47.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack48.adb b/gcc/ada/libgnat/s-pack48.adb
index 4ae6cff..ca6a594 100644
--- a/gcc/ada/libgnat/s-pack48.adb
+++ b/gcc/ada/libgnat/s-pack48.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack48.ads b/gcc/ada/libgnat/s-pack48.ads
index 2e74c54..1026d0e 100644
--- a/gcc/ada/libgnat/s-pack48.ads
+++ b/gcc/ada/libgnat/s-pack48.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack49.adb b/gcc/ada/libgnat/s-pack49.adb
index a3df22a..14b47b4 100644
--- a/gcc/ada/libgnat/s-pack49.adb
+++ b/gcc/ada/libgnat/s-pack49.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack49.ads b/gcc/ada/libgnat/s-pack49.ads
index 7c0e3f4..f59357f 100644
--- a/gcc/ada/libgnat/s-pack49.ads
+++ b/gcc/ada/libgnat/s-pack49.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack50.adb b/gcc/ada/libgnat/s-pack50.adb
index b0910b7..c748e2b 100644
--- a/gcc/ada/libgnat/s-pack50.adb
+++ b/gcc/ada/libgnat/s-pack50.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack50.ads b/gcc/ada/libgnat/s-pack50.ads
index c1cbcf7..48283e2 100644
--- a/gcc/ada/libgnat/s-pack50.ads
+++ b/gcc/ada/libgnat/s-pack50.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack51.adb b/gcc/ada/libgnat/s-pack51.adb
index 3f65265..5c203fa 100644
--- a/gcc/ada/libgnat/s-pack51.adb
+++ b/gcc/ada/libgnat/s-pack51.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack51.ads b/gcc/ada/libgnat/s-pack51.ads
index 5fa85ca..ee62a74 100644
--- a/gcc/ada/libgnat/s-pack51.ads
+++ b/gcc/ada/libgnat/s-pack51.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack52.adb b/gcc/ada/libgnat/s-pack52.adb
index 0fb5d41..2aeb2f9 100644
--- a/gcc/ada/libgnat/s-pack52.adb
+++ b/gcc/ada/libgnat/s-pack52.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack52.ads b/gcc/ada/libgnat/s-pack52.ads
index fe63441..6952ad4 100644
--- a/gcc/ada/libgnat/s-pack52.ads
+++ b/gcc/ada/libgnat/s-pack52.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack53.adb b/gcc/ada/libgnat/s-pack53.adb
index 8fbbb28..18e12e2 100644
--- a/gcc/ada/libgnat/s-pack53.adb
+++ b/gcc/ada/libgnat/s-pack53.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack53.ads b/gcc/ada/libgnat/s-pack53.ads
index 0aefd2e..5490316 100644
--- a/gcc/ada/libgnat/s-pack53.ads
+++ b/gcc/ada/libgnat/s-pack53.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack54.adb b/gcc/ada/libgnat/s-pack54.adb
index 06fe56a..23ec58e 100644
--- a/gcc/ada/libgnat/s-pack54.adb
+++ b/gcc/ada/libgnat/s-pack54.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack54.ads b/gcc/ada/libgnat/s-pack54.ads
index 1c972de..0399557 100644
--- a/gcc/ada/libgnat/s-pack54.ads
+++ b/gcc/ada/libgnat/s-pack54.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack55.adb b/gcc/ada/libgnat/s-pack55.adb
index 85e0114..3734f1a 100644
--- a/gcc/ada/libgnat/s-pack55.adb
+++ b/gcc/ada/libgnat/s-pack55.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack55.ads b/gcc/ada/libgnat/s-pack55.ads
index 0169d27..a4799ca 100644
--- a/gcc/ada/libgnat/s-pack55.ads
+++ b/gcc/ada/libgnat/s-pack55.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack56.adb b/gcc/ada/libgnat/s-pack56.adb
index 9346f9f..821f206 100644
--- a/gcc/ada/libgnat/s-pack56.adb
+++ b/gcc/ada/libgnat/s-pack56.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack56.ads b/gcc/ada/libgnat/s-pack56.ads
index 390c18e..690752a 100644
--- a/gcc/ada/libgnat/s-pack56.ads
+++ b/gcc/ada/libgnat/s-pack56.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack57.adb b/gcc/ada/libgnat/s-pack57.adb
index 1ff0cd8..e490b4d 100644
--- a/gcc/ada/libgnat/s-pack57.adb
+++ b/gcc/ada/libgnat/s-pack57.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack57.ads b/gcc/ada/libgnat/s-pack57.ads
index 6d45d44..72afa08 100644
--- a/gcc/ada/libgnat/s-pack57.ads
+++ b/gcc/ada/libgnat/s-pack57.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack58.adb b/gcc/ada/libgnat/s-pack58.adb
index c8fd967..383a278 100644
--- a/gcc/ada/libgnat/s-pack58.adb
+++ b/gcc/ada/libgnat/s-pack58.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack58.ads b/gcc/ada/libgnat/s-pack58.ads
index 85dc09c..72654ee 100644
--- a/gcc/ada/libgnat/s-pack58.ads
+++ b/gcc/ada/libgnat/s-pack58.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack59.adb b/gcc/ada/libgnat/s-pack59.adb
index 970b7ed..56fb681 100644
--- a/gcc/ada/libgnat/s-pack59.adb
+++ b/gcc/ada/libgnat/s-pack59.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack59.ads b/gcc/ada/libgnat/s-pack59.ads
index 0c999bf..8996db9 100644
--- a/gcc/ada/libgnat/s-pack59.ads
+++ b/gcc/ada/libgnat/s-pack59.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack60.adb b/gcc/ada/libgnat/s-pack60.adb
index 1b7bb6b..d7c0bbf 100644
--- a/gcc/ada/libgnat/s-pack60.adb
+++ b/gcc/ada/libgnat/s-pack60.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack60.ads b/gcc/ada/libgnat/s-pack60.ads
index 0656c9f..fb811db 100644
--- a/gcc/ada/libgnat/s-pack60.ads
+++ b/gcc/ada/libgnat/s-pack60.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack61.adb b/gcc/ada/libgnat/s-pack61.adb
index 1a43169..ad15710 100644
--- a/gcc/ada/libgnat/s-pack61.adb
+++ b/gcc/ada/libgnat/s-pack61.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack61.ads b/gcc/ada/libgnat/s-pack61.ads
index ef6b062..fc611ba 100644
--- a/gcc/ada/libgnat/s-pack61.ads
+++ b/gcc/ada/libgnat/s-pack61.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack62.adb b/gcc/ada/libgnat/s-pack62.adb
index 1d8e62b..51064af 100644
--- a/gcc/ada/libgnat/s-pack62.adb
+++ b/gcc/ada/libgnat/s-pack62.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack62.ads b/gcc/ada/libgnat/s-pack62.ads
index 47eadf8..4e9fe0c 100644
--- a/gcc/ada/libgnat/s-pack62.ads
+++ b/gcc/ada/libgnat/s-pack62.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack63.adb b/gcc/ada/libgnat/s-pack63.adb
index 905cacf..27f2332 100644
--- a/gcc/ada/libgnat/s-pack63.adb
+++ b/gcc/ada/libgnat/s-pack63.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack63.ads b/gcc/ada/libgnat/s-pack63.ads
index 71d85f0..1744724 100644
--- a/gcc/ada/libgnat/s-pack63.ads
+++ b/gcc/ada/libgnat/s-pack63.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack65.adb b/gcc/ada/libgnat/s-pack65.adb
index c9a3b5a..00e7021 100644
--- a/gcc/ada/libgnat/s-pack65.adb
+++ b/gcc/ada/libgnat/s-pack65.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack65.ads b/gcc/ada/libgnat/s-pack65.ads
index 6763ee1..748a73c 100644
--- a/gcc/ada/libgnat/s-pack65.ads
+++ b/gcc/ada/libgnat/s-pack65.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack66.adb b/gcc/ada/libgnat/s-pack66.adb
index 8655191..20cebc9 100644
--- a/gcc/ada/libgnat/s-pack66.adb
+++ b/gcc/ada/libgnat/s-pack66.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack66.ads b/gcc/ada/libgnat/s-pack66.ads
index 529dfe2..5fa8258 100644
--- a/gcc/ada/libgnat/s-pack66.ads
+++ b/gcc/ada/libgnat/s-pack66.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack67.adb b/gcc/ada/libgnat/s-pack67.adb
index d8db3b5..9b5accf 100644
--- a/gcc/ada/libgnat/s-pack67.adb
+++ b/gcc/ada/libgnat/s-pack67.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack67.ads b/gcc/ada/libgnat/s-pack67.ads
index 3053077..c0663fa 100644
--- a/gcc/ada/libgnat/s-pack67.ads
+++ b/gcc/ada/libgnat/s-pack67.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack68.adb b/gcc/ada/libgnat/s-pack68.adb
index 46fb4c2..b23bf88 100644
--- a/gcc/ada/libgnat/s-pack68.adb
+++ b/gcc/ada/libgnat/s-pack68.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack68.ads b/gcc/ada/libgnat/s-pack68.ads
index d385fc6..5422154 100644
--- a/gcc/ada/libgnat/s-pack68.ads
+++ b/gcc/ada/libgnat/s-pack68.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack69.adb b/gcc/ada/libgnat/s-pack69.adb
index f9edfeb..e4ab9e5 100644
--- a/gcc/ada/libgnat/s-pack69.adb
+++ b/gcc/ada/libgnat/s-pack69.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack69.ads b/gcc/ada/libgnat/s-pack69.ads
index 4e9ad80..42e9882 100644
--- a/gcc/ada/libgnat/s-pack69.ads
+++ b/gcc/ada/libgnat/s-pack69.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack70.adb b/gcc/ada/libgnat/s-pack70.adb
index 284d431..9432384 100644
--- a/gcc/ada/libgnat/s-pack70.adb
+++ b/gcc/ada/libgnat/s-pack70.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack70.ads b/gcc/ada/libgnat/s-pack70.ads
index cd414c8..4d2af24 100644
--- a/gcc/ada/libgnat/s-pack70.ads
+++ b/gcc/ada/libgnat/s-pack70.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack71.adb b/gcc/ada/libgnat/s-pack71.adb
index 5e2a2d0..bfc75d2 100644
--- a/gcc/ada/libgnat/s-pack71.adb
+++ b/gcc/ada/libgnat/s-pack71.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack71.ads b/gcc/ada/libgnat/s-pack71.ads
index 020afd4..303bc06 100644
--- a/gcc/ada/libgnat/s-pack71.ads
+++ b/gcc/ada/libgnat/s-pack71.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack72.adb b/gcc/ada/libgnat/s-pack72.adb
index 968dcf6..1b22c6b 100644
--- a/gcc/ada/libgnat/s-pack72.adb
+++ b/gcc/ada/libgnat/s-pack72.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack72.ads b/gcc/ada/libgnat/s-pack72.ads
index e52e051..c2afd04 100644
--- a/gcc/ada/libgnat/s-pack72.ads
+++ b/gcc/ada/libgnat/s-pack72.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack73.adb b/gcc/ada/libgnat/s-pack73.adb
index a775196..a2e7345 100644
--- a/gcc/ada/libgnat/s-pack73.adb
+++ b/gcc/ada/libgnat/s-pack73.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack73.ads b/gcc/ada/libgnat/s-pack73.ads
index 0ccea35..b4c00ca 100644
--- a/gcc/ada/libgnat/s-pack73.ads
+++ b/gcc/ada/libgnat/s-pack73.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack74.adb b/gcc/ada/libgnat/s-pack74.adb
index b7af422..d1f772f 100644
--- a/gcc/ada/libgnat/s-pack74.adb
+++ b/gcc/ada/libgnat/s-pack74.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack74.ads b/gcc/ada/libgnat/s-pack74.ads
index 922b192..b891392 100644
--- a/gcc/ada/libgnat/s-pack74.ads
+++ b/gcc/ada/libgnat/s-pack74.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack75.adb b/gcc/ada/libgnat/s-pack75.adb
index 9990b25..af38ad3 100644
--- a/gcc/ada/libgnat/s-pack75.adb
+++ b/gcc/ada/libgnat/s-pack75.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack75.ads b/gcc/ada/libgnat/s-pack75.ads
index 8658190..a8dc38c 100644
--- a/gcc/ada/libgnat/s-pack75.ads
+++ b/gcc/ada/libgnat/s-pack75.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack76.adb b/gcc/ada/libgnat/s-pack76.adb
index 5f66fe3..d043013 100644
--- a/gcc/ada/libgnat/s-pack76.adb
+++ b/gcc/ada/libgnat/s-pack76.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack76.ads b/gcc/ada/libgnat/s-pack76.ads
index 9b262f7..e177237 100644
--- a/gcc/ada/libgnat/s-pack76.ads
+++ b/gcc/ada/libgnat/s-pack76.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack77.adb b/gcc/ada/libgnat/s-pack77.adb
index 1b0971a..28a971a 100644
--- a/gcc/ada/libgnat/s-pack77.adb
+++ b/gcc/ada/libgnat/s-pack77.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack77.ads b/gcc/ada/libgnat/s-pack77.ads
index e2ce542..369f735 100644
--- a/gcc/ada/libgnat/s-pack77.ads
+++ b/gcc/ada/libgnat/s-pack77.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack78.adb b/gcc/ada/libgnat/s-pack78.adb
index 7859a0f..6cbb11f 100644
--- a/gcc/ada/libgnat/s-pack78.adb
+++ b/gcc/ada/libgnat/s-pack78.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack78.ads b/gcc/ada/libgnat/s-pack78.ads
index c215195..14c1ab4 100644
--- a/gcc/ada/libgnat/s-pack78.ads
+++ b/gcc/ada/libgnat/s-pack78.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack79.adb b/gcc/ada/libgnat/s-pack79.adb
index 6f002e1..0653f4a 100644
--- a/gcc/ada/libgnat/s-pack79.adb
+++ b/gcc/ada/libgnat/s-pack79.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack79.ads b/gcc/ada/libgnat/s-pack79.ads
index e26cc58..a7e4e2f 100644
--- a/gcc/ada/libgnat/s-pack79.ads
+++ b/gcc/ada/libgnat/s-pack79.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack80.adb b/gcc/ada/libgnat/s-pack80.adb
index 2b5a8a6..8df62be 100644
--- a/gcc/ada/libgnat/s-pack80.adb
+++ b/gcc/ada/libgnat/s-pack80.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack80.ads b/gcc/ada/libgnat/s-pack80.ads
index dab9471..1823ab0 100644
--- a/gcc/ada/libgnat/s-pack80.ads
+++ b/gcc/ada/libgnat/s-pack80.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack81.adb b/gcc/ada/libgnat/s-pack81.adb
index bc7420a..e1c308d 100644
--- a/gcc/ada/libgnat/s-pack81.adb
+++ b/gcc/ada/libgnat/s-pack81.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack81.ads b/gcc/ada/libgnat/s-pack81.ads
index 7d726b6..355412a 100644
--- a/gcc/ada/libgnat/s-pack81.ads
+++ b/gcc/ada/libgnat/s-pack81.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack82.adb b/gcc/ada/libgnat/s-pack82.adb
index 8883d05..c87a867 100644
--- a/gcc/ada/libgnat/s-pack82.adb
+++ b/gcc/ada/libgnat/s-pack82.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack82.ads b/gcc/ada/libgnat/s-pack82.ads
index c0c09d3..c60767b 100644
--- a/gcc/ada/libgnat/s-pack82.ads
+++ b/gcc/ada/libgnat/s-pack82.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack83.adb b/gcc/ada/libgnat/s-pack83.adb
index 2eb74e7..12e67be 100644
--- a/gcc/ada/libgnat/s-pack83.adb
+++ b/gcc/ada/libgnat/s-pack83.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack83.ads b/gcc/ada/libgnat/s-pack83.ads
index e2fe09c..c86223a 100644
--- a/gcc/ada/libgnat/s-pack83.ads
+++ b/gcc/ada/libgnat/s-pack83.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack84.adb b/gcc/ada/libgnat/s-pack84.adb
index 4518402..996ab78 100644
--- a/gcc/ada/libgnat/s-pack84.adb
+++ b/gcc/ada/libgnat/s-pack84.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack84.ads b/gcc/ada/libgnat/s-pack84.ads
index 169de3e..7c7e4e1 100644
--- a/gcc/ada/libgnat/s-pack84.ads
+++ b/gcc/ada/libgnat/s-pack84.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack85.adb b/gcc/ada/libgnat/s-pack85.adb
index b383072..9d62d1c 100644
--- a/gcc/ada/libgnat/s-pack85.adb
+++ b/gcc/ada/libgnat/s-pack85.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack85.ads b/gcc/ada/libgnat/s-pack85.ads
index 5238cf7..32d48ce 100644
--- a/gcc/ada/libgnat/s-pack85.ads
+++ b/gcc/ada/libgnat/s-pack85.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack86.adb b/gcc/ada/libgnat/s-pack86.adb
index d302c18..b34b58b 100644
--- a/gcc/ada/libgnat/s-pack86.adb
+++ b/gcc/ada/libgnat/s-pack86.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack86.ads b/gcc/ada/libgnat/s-pack86.ads
index 6b17fd0..7c687c1 100644
--- a/gcc/ada/libgnat/s-pack86.ads
+++ b/gcc/ada/libgnat/s-pack86.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack87.adb b/gcc/ada/libgnat/s-pack87.adb
index 0a40c2f..37b0e34 100644
--- a/gcc/ada/libgnat/s-pack87.adb
+++ b/gcc/ada/libgnat/s-pack87.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack87.ads b/gcc/ada/libgnat/s-pack87.ads
index 478897e..5e7463c8 100644
--- a/gcc/ada/libgnat/s-pack87.ads
+++ b/gcc/ada/libgnat/s-pack87.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack88.adb b/gcc/ada/libgnat/s-pack88.adb
index 936dc64..0bda159 100644
--- a/gcc/ada/libgnat/s-pack88.adb
+++ b/gcc/ada/libgnat/s-pack88.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack88.ads b/gcc/ada/libgnat/s-pack88.ads
index 76d7ca0..3644139 100644
--- a/gcc/ada/libgnat/s-pack88.ads
+++ b/gcc/ada/libgnat/s-pack88.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack89.adb b/gcc/ada/libgnat/s-pack89.adb
index f1da5b9..7d5a924 100644
--- a/gcc/ada/libgnat/s-pack89.adb
+++ b/gcc/ada/libgnat/s-pack89.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack89.ads b/gcc/ada/libgnat/s-pack89.ads
index 3fa1310..f6817f25 100644
--- a/gcc/ada/libgnat/s-pack89.ads
+++ b/gcc/ada/libgnat/s-pack89.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack90.adb b/gcc/ada/libgnat/s-pack90.adb
index d808da8..03a4022 100644
--- a/gcc/ada/libgnat/s-pack90.adb
+++ b/gcc/ada/libgnat/s-pack90.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack90.ads b/gcc/ada/libgnat/s-pack90.ads
index c146925..e3cb374 100644
--- a/gcc/ada/libgnat/s-pack90.ads
+++ b/gcc/ada/libgnat/s-pack90.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack91.adb b/gcc/ada/libgnat/s-pack91.adb
index 6bf3bc7..b6ccbbf 100644
--- a/gcc/ada/libgnat/s-pack91.adb
+++ b/gcc/ada/libgnat/s-pack91.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack91.ads b/gcc/ada/libgnat/s-pack91.ads
index acce1517..ad4886a 100644
--- a/gcc/ada/libgnat/s-pack91.ads
+++ b/gcc/ada/libgnat/s-pack91.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack92.adb b/gcc/ada/libgnat/s-pack92.adb
index 1b0d97d..e783869 100644
--- a/gcc/ada/libgnat/s-pack92.adb
+++ b/gcc/ada/libgnat/s-pack92.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack92.ads b/gcc/ada/libgnat/s-pack92.ads
index c4eea42..4d2f595 100644
--- a/gcc/ada/libgnat/s-pack92.ads
+++ b/gcc/ada/libgnat/s-pack92.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack93.adb b/gcc/ada/libgnat/s-pack93.adb
index 23ed563..83be850 100644
--- a/gcc/ada/libgnat/s-pack93.adb
+++ b/gcc/ada/libgnat/s-pack93.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack93.ads b/gcc/ada/libgnat/s-pack93.ads
index 9bcca8b..b313da9 100644
--- a/gcc/ada/libgnat/s-pack93.ads
+++ b/gcc/ada/libgnat/s-pack93.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack94.adb b/gcc/ada/libgnat/s-pack94.adb
index cb5bc1c..1ad7e54 100644
--- a/gcc/ada/libgnat/s-pack94.adb
+++ b/gcc/ada/libgnat/s-pack94.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack94.ads b/gcc/ada/libgnat/s-pack94.ads
index 6850fff..5d3dd6c 100644
--- a/gcc/ada/libgnat/s-pack94.ads
+++ b/gcc/ada/libgnat/s-pack94.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack95.adb b/gcc/ada/libgnat/s-pack95.adb
index 824adf1..aeca0c6 100644
--- a/gcc/ada/libgnat/s-pack95.adb
+++ b/gcc/ada/libgnat/s-pack95.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack95.ads b/gcc/ada/libgnat/s-pack95.ads
index 30f57a2..3d5c694 100644
--- a/gcc/ada/libgnat/s-pack95.ads
+++ b/gcc/ada/libgnat/s-pack95.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack96.adb b/gcc/ada/libgnat/s-pack96.adb
index 531fb97..4ed75c7 100644
--- a/gcc/ada/libgnat/s-pack96.adb
+++ b/gcc/ada/libgnat/s-pack96.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack96.ads b/gcc/ada/libgnat/s-pack96.ads
index 564b386..301e12f 100644
--- a/gcc/ada/libgnat/s-pack96.ads
+++ b/gcc/ada/libgnat/s-pack96.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack97.adb b/gcc/ada/libgnat/s-pack97.adb
index b6c766b..316780e 100644
--- a/gcc/ada/libgnat/s-pack97.adb
+++ b/gcc/ada/libgnat/s-pack97.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack97.ads b/gcc/ada/libgnat/s-pack97.ads
index 713c4cb..9e0aca5 100644
--- a/gcc/ada/libgnat/s-pack97.ads
+++ b/gcc/ada/libgnat/s-pack97.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack98.adb b/gcc/ada/libgnat/s-pack98.adb
index 9814119..b1c9074 100644
--- a/gcc/ada/libgnat/s-pack98.adb
+++ b/gcc/ada/libgnat/s-pack98.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack98.ads b/gcc/ada/libgnat/s-pack98.ads
index 9131f73..3425e1b 100644
--- a/gcc/ada/libgnat/s-pack98.ads
+++ b/gcc/ada/libgnat/s-pack98.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack99.adb b/gcc/ada/libgnat/s-pack99.adb
index 2c89be8..08e0726 100644
--- a/gcc/ada/libgnat/s-pack99.adb
+++ b/gcc/ada/libgnat/s-pack99.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pack99.ads b/gcc/ada/libgnat/s-pack99.ads
index edafbf3..2fbc3e2 100644
--- a/gcc/ada/libgnat/s-pack99.ads
+++ b/gcc/ada/libgnat/s-pack99.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-parame.adb b/gcc/ada/libgnat/s-parame.adb
index 6bd9f03..55155bc 100644
--- a/gcc/ada/libgnat/s-parame.adb
+++ b/gcc/ada/libgnat/s-parame.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1995-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1995-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-parame.ads b/gcc/ada/libgnat/s-parame.ads
index 72e7238..e5ed7bf 100644
--- a/gcc/ada/libgnat/s-parame.ads
+++ b/gcc/ada/libgnat/s-parame.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-parame__hpux.ads b/gcc/ada/libgnat/s-parame__hpux.ads
index 243f8c3..cd98dc7 100644
--- a/gcc/ada/libgnat/s-parame__hpux.ads
+++ b/gcc/ada/libgnat/s-parame__hpux.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-parame__posix2008.ads b/gcc/ada/libgnat/s-parame__posix2008.ads
index 16555e1..2652e56 100644
--- a/gcc/ada/libgnat/s-parame__posix2008.ads
+++ b/gcc/ada/libgnat/s-parame__posix2008.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-parame__qnx.adb b/gcc/ada/libgnat/s-parame__qnx.adb
index 8a7dfaf..47a0859 100644
--- a/gcc/ada/libgnat/s-parame__qnx.adb
+++ b/gcc/ada/libgnat/s-parame__qnx.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1995-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1995-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-parame__rtems.adb b/gcc/ada/libgnat/s-parame__rtems.adb
index 1d51ae9..3323fb9 100644
--- a/gcc/ada/libgnat/s-parame__rtems.adb
+++ b/gcc/ada/libgnat/s-parame__rtems.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1997-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1997-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-parame__vxworks.adb b/gcc/ada/libgnat/s-parame__vxworks.adb
index 38fe022..3cf357f 100644
--- a/gcc/ada/libgnat/s-parame__vxworks.adb
+++ b/gcc/ada/libgnat/s-parame__vxworks.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1995-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1995-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-parame__vxworks.ads b/gcc/ada/libgnat/s-parame__vxworks.ads
index 6cf32ca..802357e 100644
--- a/gcc/ada/libgnat/s-parame__vxworks.ads
+++ b/gcc/ada/libgnat/s-parame__vxworks.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-parint.adb b/gcc/ada/libgnat/s-parint.adb
index 61d5c04..3829d55 100644
--- a/gcc/ada/libgnat/s-parint.adb
+++ b/gcc/ada/libgnat/s-parint.adb
@@ -7,7 +7,7 @@
-- B o d y --
-- (Dummy body for non-distributed case) --
-- --
--- Copyright (C) 1995-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1995-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-parint.ads b/gcc/ada/libgnat/s-parint.ads
index 2f0d84f..a2ed766 100644
--- a/gcc/ada/libgnat/s-parint.ads
+++ b/gcc/ada/libgnat/s-parint.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1995-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1995-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pehage.adb b/gcc/ada/libgnat/s-pehage.adb
index c903632..6b81399 100644
--- a/gcc/ada/libgnat/s-pehage.adb
+++ b/gcc/ada/libgnat/s-pehage.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2002-2023, AdaCore --
+-- Copyright (C) 2002-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pehage.ads b/gcc/ada/libgnat/s-pehage.ads
index 2b31dbf..10c3ba6 100644
--- a/gcc/ada/libgnat/s-pehage.ads
+++ b/gcc/ada/libgnat/s-pehage.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2002-2023, AdaCore --
+-- Copyright (C) 2002-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pooglo.adb b/gcc/ada/libgnat/s-pooglo.adb
index eaefab1..dea3de1 100644
--- a/gcc/ada/libgnat/s-pooglo.adb
+++ b/gcc/ada/libgnat/s-pooglo.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pooglo.ads b/gcc/ada/libgnat/s-pooglo.ads
index 037531c..fd1689c 100644
--- a/gcc/ada/libgnat/s-pooglo.ads
+++ b/gcc/ada/libgnat/s-pooglo.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pooloc.adb b/gcc/ada/libgnat/s-pooloc.adb
index 2c2aa51..8c006d7 100644
--- a/gcc/ada/libgnat/s-pooloc.adb
+++ b/gcc/ada/libgnat/s-pooloc.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-pooloc.ads b/gcc/ada/libgnat/s-pooloc.ads
index d6e4e21..32614a0 100644
--- a/gcc/ada/libgnat/s-pooloc.ads
+++ b/gcc/ada/libgnat/s-pooloc.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-poosiz.adb b/gcc/ada/libgnat/s-poosiz.adb
index 0b2baec..e9b3837 100644
--- a/gcc/ada/libgnat/s-poosiz.adb
+++ b/gcc/ada/libgnat/s-poosiz.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-poosiz.ads b/gcc/ada/libgnat/s-poosiz.ads
index 2e378b5..6a20dfa 100644
--- a/gcc/ada/libgnat/s-poosiz.ads
+++ b/gcc/ada/libgnat/s-poosiz.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-powflt.ads b/gcc/ada/libgnat/s-powflt.ads
index a927234..eadea7f 100644
--- a/gcc/ada/libgnat/s-powflt.ads
+++ b/gcc/ada/libgnat/s-powflt.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-powlfl.ads b/gcc/ada/libgnat/s-powlfl.ads
index fc6bf4e..13630fc 100644
--- a/gcc/ada/libgnat/s-powlfl.ads
+++ b/gcc/ada/libgnat/s-powlfl.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-powllf.ads b/gcc/ada/libgnat/s-powllf.ads
index 82912f1..b470ae0 100644
--- a/gcc/ada/libgnat/s-powllf.ads
+++ b/gcc/ada/libgnat/s-powllf.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-purexc.ads b/gcc/ada/libgnat/s-purexc.ads
index edc7c22..4872aaa 100644
--- a/gcc/ada/libgnat/s-purexc.ads
+++ b/gcc/ada/libgnat/s-purexc.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2000-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2000-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-putima.adb b/gcc/ada/libgnat/s-putima.adb
index bcc7af2..a3fd415 100644
--- a/gcc/ada/libgnat/s-putima.adb
+++ b/gcc/ada/libgnat/s-putima.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-putima.ads b/gcc/ada/libgnat/s-putima.ads
index 15bf4cd..49f93be 100644
--- a/gcc/ada/libgnat/s-putima.ads
+++ b/gcc/ada/libgnat/s-putima.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-rannum.adb b/gcc/ada/libgnat/s-rannum.adb
index 75c87239..2f2fd66 100644
--- a/gcc/ada/libgnat/s-rannum.adb
+++ b/gcc/ada/libgnat/s-rannum.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2007-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2007-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-rannum.ads b/gcc/ada/libgnat/s-rannum.ads
index 04f6e9a..262390b 100644
--- a/gcc/ada/libgnat/s-rannum.ads
+++ b/gcc/ada/libgnat/s-rannum.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2007-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2007-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-ransee.adb b/gcc/ada/libgnat/s-ransee.adb
index f0426ed..afc9849 100644
--- a/gcc/ada/libgnat/s-ransee.adb
+++ b/gcc/ada/libgnat/s-ransee.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-ransee.ads b/gcc/ada/libgnat/s-ransee.ads
index 40c270e..5659fdd 100644
--- a/gcc/ada/libgnat/s-ransee.ads
+++ b/gcc/ada/libgnat/s-ransee.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-regexp.adb b/gcc/ada/libgnat/s-regexp.adb
index 7af6b16..f86a182 100644
--- a/gcc/ada/libgnat/s-regexp.adb
+++ b/gcc/ada/libgnat/s-regexp.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1999-2023, AdaCore --
+-- Copyright (C) 1999-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-regexp.ads b/gcc/ada/libgnat/s-regexp.ads
index e235d96..ed85e53 100644
--- a/gcc/ada/libgnat/s-regexp.ads
+++ b/gcc/ada/libgnat/s-regexp.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1998-2023, AdaCore --
+-- Copyright (C) 1998-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-regpat.adb b/gcc/ada/libgnat/s-regpat.adb
index 80f7a8f..3a0ba14 100644
--- a/gcc/ada/libgnat/s-regpat.adb
+++ b/gcc/ada/libgnat/s-regpat.adb
@@ -7,7 +7,7 @@
-- B o d y --
-- --
-- Copyright (C) 1986 by University of Toronto. --
--- Copyright (C) 1999-2023, AdaCore --
+-- Copyright (C) 1999-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-regpat.ads b/gcc/ada/libgnat/s-regpat.ads
index 2c04362..084b1b5 100644
--- a/gcc/ada/libgnat/s-regpat.ads
+++ b/gcc/ada/libgnat/s-regpat.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- --
-- Copyright (C) 1986 by University of Toronto. --
--- Copyright (C) 1996-2023, AdaCore --
+-- Copyright (C) 1996-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-resfil.adb b/gcc/ada/libgnat/s-resfil.adb
index 380f515..21530ee 100644
--- a/gcc/ada/libgnat/s-resfil.adb
+++ b/gcc/ada/libgnat/s-resfil.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2007-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2007-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-resfil.ads b/gcc/ada/libgnat/s-resfil.ads
index 77bb5d8..b80058c 100644
--- a/gcc/ada/libgnat/s-resfil.ads
+++ b/gcc/ada/libgnat/s-resfil.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2007-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2007-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-restri.adb b/gcc/ada/libgnat/s-restri.adb
index 2477255..f389df6 100644
--- a/gcc/ada/libgnat/s-restri.adb
+++ b/gcc/ada/libgnat/s-restri.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-restri.ads b/gcc/ada/libgnat/s-restri.ads
index 77a8168..9c987b9 100644
--- a/gcc/ada/libgnat/s-restri.ads
+++ b/gcc/ada/libgnat/s-restri.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-retsta.ads b/gcc/ada/libgnat/s-retsta.ads
index a4b8d81..bac994e 100644
--- a/gcc/ada/libgnat/s-retsta.ads
+++ b/gcc/ada/libgnat/s-retsta.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2022-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2022-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-rident.ads b/gcc/ada/libgnat/s-rident.ads
index d280cfc..a9e7edc 100644
--- a/gcc/ada/libgnat/s-rident.ads
+++ b/gcc/ada/libgnat/s-rident.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-rpc.adb b/gcc/ada/libgnat/s-rpc.adb
index d5bafbb..812c162 100644
--- a/gcc/ada/libgnat/s-rpc.adb
+++ b/gcc/ada/libgnat/s-rpc.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-rpc.ads b/gcc/ada/libgnat/s-rpc.ads
index 2ad1454..fcad5fd 100644
--- a/gcc/ada/libgnat/s-rpc.ads
+++ b/gcc/ada/libgnat/s-rpc.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/s-scaval.adb b/gcc/ada/libgnat/s-scaval.adb
index aed6eb93..9d34485 100644
--- a/gcc/ada/libgnat/s-scaval.adb
+++ b/gcc/ada/libgnat/s-scaval.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2003-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2003-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-scaval.ads b/gcc/ada/libgnat/s-scaval.ads
index afdbd1b..6a407ec 100644
--- a/gcc/ada/libgnat/s-scaval.ads
+++ b/gcc/ada/libgnat/s-scaval.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-scaval__128.adb b/gcc/ada/libgnat/s-scaval__128.adb
index 0ae7015..df6cbe0 100644
--- a/gcc/ada/libgnat/s-scaval__128.adb
+++ b/gcc/ada/libgnat/s-scaval__128.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2003-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2003-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-scaval__128.ads b/gcc/ada/libgnat/s-scaval__128.ads
index 39fb583..97217cf 100644
--- a/gcc/ada/libgnat/s-scaval__128.ads
+++ b/gcc/ada/libgnat/s-scaval__128.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-secsta.adb b/gcc/ada/libgnat/s-secsta.adb
index 4f10411..be9591d 100644
--- a/gcc/ada/libgnat/s-secsta.adb
+++ b/gcc/ada/libgnat/s-secsta.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-secsta.ads b/gcc/ada/libgnat/s-secsta.ads
index 62e1c0b..8c3df1f 100644
--- a/gcc/ada/libgnat/s-secsta.ads
+++ b/gcc/ada/libgnat/s-secsta.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-sequio.adb b/gcc/ada/libgnat/s-sequio.adb
index 2cd4721..c180042 100644
--- a/gcc/ada/libgnat/s-sequio.adb
+++ b/gcc/ada/libgnat/s-sequio.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-sequio.ads b/gcc/ada/libgnat/s-sequio.ads
index 6a510a2..babefcb 100644
--- a/gcc/ada/libgnat/s-sequio.ads
+++ b/gcc/ada/libgnat/s-sequio.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-shabig.ads b/gcc/ada/libgnat/s-shabig.ads
index 8d9f8d1..a2ec3d6 100644
--- a/gcc/ada/libgnat/s-shabig.ads
+++ b/gcc/ada/libgnat/s-shabig.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2012-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2012-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-shasto.adb b/gcc/ada/libgnat/s-shasto.adb
index be2f20b..0ce08f3 100644
--- a/gcc/ada/libgnat/s-shasto.adb
+++ b/gcc/ada/libgnat/s-shasto.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1998-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1998-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-shasto.ads b/gcc/ada/libgnat/s-shasto.ads
index d45d8d8..75f9cbf 100644
--- a/gcc/ada/libgnat/s-shasto.ads
+++ b/gcc/ada/libgnat/s-shasto.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1998-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1998-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-soflin.adb b/gcc/ada/libgnat/s-soflin.adb
index e1bc63a..a3913e8 100644
--- a/gcc/ada/libgnat/s-soflin.adb
+++ b/gcc/ada/libgnat/s-soflin.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-soflin.ads b/gcc/ada/libgnat/s-soflin.ads
index 2656957..5cf5a8b 100644
--- a/gcc/ada/libgnat/s-soflin.ads
+++ b/gcc/ada/libgnat/s-soflin.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-soliin.adb b/gcc/ada/libgnat/s-soliin.adb
index 4a43dca..74a503a 100644
--- a/gcc/ada/libgnat/s-soliin.adb
+++ b/gcc/ada/libgnat/s-soliin.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2017-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2017-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-soliin.ads b/gcc/ada/libgnat/s-soliin.ads
index 8e35a19..6e0e77d 100644
--- a/gcc/ada/libgnat/s-soliin.ads
+++ b/gcc/ada/libgnat/s-soliin.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2017-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2017-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-spark.ads b/gcc/ada/libgnat/s-spark.ads
index b4441d5..f38e996 100644
--- a/gcc/ada/libgnat/s-spark.ads
+++ b/gcc/ada/libgnat/s-spark.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2022-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2022-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-spcuop.adb b/gcc/ada/libgnat/s-spcuop.adb
index afc4cff..9e3d941 100644
--- a/gcc/ada/libgnat/s-spcuop.adb
+++ b/gcc/ada/libgnat/s-spcuop.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2022-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2022-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-spcuop.ads b/gcc/ada/libgnat/s-spcuop.ads
index 642ded7..ceaaa54 100644
--- a/gcc/ada/libgnat/s-spcuop.ads
+++ b/gcc/ada/libgnat/s-spcuop.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2022-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2022-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-spsufi.adb b/gcc/ada/libgnat/s-spsufi.adb
index 0a85165..a59548b 100644
--- a/gcc/ada/libgnat/s-spsufi.adb
+++ b/gcc/ada/libgnat/s-spsufi.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-spsufi.ads b/gcc/ada/libgnat/s-spsufi.ads
index e90462a..097fb18 100644
--- a/gcc/ada/libgnat/s-spsufi.ads
+++ b/gcc/ada/libgnat/s-spsufi.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-stache.adb b/gcc/ada/libgnat/s-stache.adb
index f28a1f3..5f5fe9c 100644
--- a/gcc/ada/libgnat/s-stache.adb
+++ b/gcc/ada/libgnat/s-stache.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1999-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1999-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-stache.ads b/gcc/ada/libgnat/s-stache.ads
index 26c63ed..5a56a50 100644
--- a/gcc/ada/libgnat/s-stache.ads
+++ b/gcc/ada/libgnat/s-stache.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1999-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1999-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-stalib.adb b/gcc/ada/libgnat/s-stalib.adb
index e3cd74f..4e33422 100644
--- a/gcc/ada/libgnat/s-stalib.adb
+++ b/gcc/ada/libgnat/s-stalib.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1995-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1995-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-stalib.ads b/gcc/ada/libgnat/s-stalib.ads
index 0675165..7ab03d5 100644
--- a/gcc/ada/libgnat/s-stalib.ads
+++ b/gcc/ada/libgnat/s-stalib.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-statxd.adb b/gcc/ada/libgnat/s-statxd.adb
index 69412b8..5732c52 100644
--- a/gcc/ada/libgnat/s-statxd.adb
+++ b/gcc/ada/libgnat/s-statxd.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1996-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1996-2024, Free Software Foundation, Inc. --
-- --
-- GARLIC is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-statxd.ads b/gcc/ada/libgnat/s-statxd.ads
index 132abab..739cd45 100644
--- a/gcc/ada/libgnat/s-statxd.ads
+++ b/gcc/ada/libgnat/s-statxd.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-stausa.adb b/gcc/ada/libgnat/s-stausa.adb
index dde5200..51bddf0 100644
--- a/gcc/ada/libgnat/s-stausa.adb
+++ b/gcc/ada/libgnat/s-stausa.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-stausa.ads b/gcc/ada/libgnat/s-stausa.ads
index b6eb8ba..90b3683 100644
--- a/gcc/ada/libgnat/s-stausa.ads
+++ b/gcc/ada/libgnat/s-stausa.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-stchop.adb b/gcc/ada/libgnat/s-stchop.adb
index e0efcef..8cb13d9 100644
--- a/gcc/ada/libgnat/s-stchop.adb
+++ b/gcc/ada/libgnat/s-stchop.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1999-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1999-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-stchop.ads b/gcc/ada/libgnat/s-stchop.ads
index d41ba91..be54d4f 100644
--- a/gcc/ada/libgnat/s-stchop.ads
+++ b/gcc/ada/libgnat/s-stchop.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1999-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1999-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-stchop__limit.ads b/gcc/ada/libgnat/s-stchop__limit.ads
index 9af7b84..4361e81 100644
--- a/gcc/ada/libgnat/s-stchop__limit.ads
+++ b/gcc/ada/libgnat/s-stchop__limit.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1999-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1999-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-stchop__vxworks.adb b/gcc/ada/libgnat/s-stchop__vxworks.adb
index 1408c8c..12d29d6 100644
--- a/gcc/ada/libgnat/s-stchop__vxworks.adb
+++ b/gcc/ada/libgnat/s-stchop__vxworks.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1999-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1999-2024, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-stoele.adb b/gcc/ada/libgnat/s-stoele.adb
index dfd1ba3..94ed680 100644
--- a/gcc/ada/libgnat/s-stoele.adb
+++ b/gcc/ada/libgnat/s-stoele.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-stoele.ads b/gcc/ada/libgnat/s-stoele.ads
index d5d7042..f7e3630 100644
--- a/gcc/ada/libgnat/s-stoele.ads
+++ b/gcc/ada/libgnat/s-stoele.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/s-stopoo.adb b/gcc/ada/libgnat/s-stopoo.adb
index 2c1b095..bea85d9 100644
--- a/gcc/ada/libgnat/s-stopoo.adb
+++ b/gcc/ada/libgnat/s-stopoo.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-stopoo.ads b/gcc/ada/libgnat/s-stopoo.ads
index ec645f1..dcab6d5 100644
--- a/gcc/ada/libgnat/s-stopoo.ads
+++ b/gcc/ada/libgnat/s-stopoo.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/s-stposu.adb b/gcc/ada/libgnat/s-stposu.adb
index bdc399d..7ed30b8 100644
--- a/gcc/ada/libgnat/s-stposu.adb
+++ b/gcc/ada/libgnat/s-stposu.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-stposu.ads b/gcc/ada/libgnat/s-stposu.ads
index cefa3ce..823f5e5 100644
--- a/gcc/ada/libgnat/s-stposu.ads
+++ b/gcc/ada/libgnat/s-stposu.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/s-stratt.adb b/gcc/ada/libgnat/s-stratt.adb
index 25b4ebe..650f45e 100644
--- a/gcc/ada/libgnat/s-stratt.adb
+++ b/gcc/ada/libgnat/s-stratt.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-stratt.ads b/gcc/ada/libgnat/s-stratt.ads
index 1a3fb60..1d4c82d 100644
--- a/gcc/ada/libgnat/s-stratt.ads
+++ b/gcc/ada/libgnat/s-stratt.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-stratt__cheri.adb b/gcc/ada/libgnat/s-stratt__cheri.adb
index f753cf3..292268f 100644
--- a/gcc/ada/libgnat/s-stratt__cheri.adb
+++ b/gcc/ada/libgnat/s-stratt__cheri.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-strcom.adb b/gcc/ada/libgnat/s-strcom.adb
index a2354f3..da2b1fb 100644
--- a/gcc/ada/libgnat/s-strcom.adb
+++ b/gcc/ada/libgnat/s-strcom.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-strcom.ads b/gcc/ada/libgnat/s-strcom.ads
index 8fa9d92..48aefe2 100644
--- a/gcc/ada/libgnat/s-strcom.ads
+++ b/gcc/ada/libgnat/s-strcom.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-strhas.adb b/gcc/ada/libgnat/s-strhas.adb
index 5a595d3..d0091c6 100644
--- a/gcc/ada/libgnat/s-strhas.adb
+++ b/gcc/ada/libgnat/s-strhas.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-strhas.ads b/gcc/ada/libgnat/s-strhas.ads
index 60ae10f..2ab5454 100644
--- a/gcc/ada/libgnat/s-strhas.ads
+++ b/gcc/ada/libgnat/s-strhas.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-string.adb b/gcc/ada/libgnat/s-string.adb
index 7a943ba..e6db607 100644
--- a/gcc/ada/libgnat/s-string.adb
+++ b/gcc/ada/libgnat/s-string.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1995-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1995-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-string.ads b/gcc/ada/libgnat/s-string.ads
index a8be13d..b3bf898 100644
--- a/gcc/ada/libgnat/s-string.ads
+++ b/gcc/ada/libgnat/s-string.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1995-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1995-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-ststop.adb b/gcc/ada/libgnat/s-ststop.adb
index 12260b1..11c60fa 100644
--- a/gcc/ada/libgnat/s-ststop.adb
+++ b/gcc/ada/libgnat/s-ststop.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2008-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2008-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-ststop.ads b/gcc/ada/libgnat/s-ststop.ads
index 66202db..7827ae1 100644
--- a/gcc/ada/libgnat/s-ststop.ads
+++ b/gcc/ada/libgnat/s-ststop.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-tasloc.adb b/gcc/ada/libgnat/s-tasloc.adb
index 6b26c29..6497036 100644
--- a/gcc/ada/libgnat/s-tasloc.adb
+++ b/gcc/ada/libgnat/s-tasloc.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1997-2023, AdaCore --
+-- Copyright (C) 1997-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-tasloc.ads b/gcc/ada/libgnat/s-tasloc.ads
index 1a9007d..6075b07 100644
--- a/gcc/ada/libgnat/s-tasloc.ads
+++ b/gcc/ada/libgnat/s-tasloc.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1998-2023, AdaCore --
+-- Copyright (C) 1998-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-traceb.adb b/gcc/ada/libgnat/s-traceb.adb
index 5afdcab..237676d 100644
--- a/gcc/ada/libgnat/s-traceb.adb
+++ b/gcc/ada/libgnat/s-traceb.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1999-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1999-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-traceb.ads b/gcc/ada/libgnat/s-traceb.ads
index 646643d..54e7682 100644
--- a/gcc/ada/libgnat/s-traceb.ads
+++ b/gcc/ada/libgnat/s-traceb.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1999-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1999-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-traceb__hpux.adb b/gcc/ada/libgnat/s-traceb__hpux.adb
index be84da8..e4e923a 100644
--- a/gcc/ada/libgnat/s-traceb__hpux.adb
+++ b/gcc/ada/libgnat/s-traceb__hpux.adb
@@ -7,7 +7,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-traceb__mastop.adb b/gcc/ada/libgnat/s-traceb__mastop.adb
index 8b40cb4..05caa0b 100644
--- a/gcc/ada/libgnat/s-traceb__mastop.adb
+++ b/gcc/ada/libgnat/s-traceb__mastop.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1999-2023, AdaCore --
+-- Copyright (C) 1999-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-traent.adb b/gcc/ada/libgnat/s-traent.adb
index ea5a9ae..cec4ec1 100644
--- a/gcc/ada/libgnat/s-traent.adb
+++ b/gcc/ada/libgnat/s-traent.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2003-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2003-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-traent.ads b/gcc/ada/libgnat/s-traent.ads
index 6011930..bd1d936 100644
--- a/gcc/ada/libgnat/s-traent.ads
+++ b/gcc/ada/libgnat/s-traent.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2003-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2003-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/s-trasym.adb b/gcc/ada/libgnat/s-trasym.adb
index 704147e..894fcf3 100644
--- a/gcc/ada/libgnat/s-trasym.adb
+++ b/gcc/ada/libgnat/s-trasym.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1999-2023, AdaCore --
+-- Copyright (C) 1999-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-trasym.ads b/gcc/ada/libgnat/s-trasym.ads
index f064048..6f2d88b 100644
--- a/gcc/ada/libgnat/s-trasym.ads
+++ b/gcc/ada/libgnat/s-trasym.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1999-2023, AdaCore --
+-- Copyright (C) 1999-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-trasym__dwarf.adb b/gcc/ada/libgnat/s-trasym__dwarf.adb
index a4d7624..64ff9a2 100644
--- a/gcc/ada/libgnat/s-trasym__dwarf.adb
+++ b/gcc/ada/libgnat/s-trasym__dwarf.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1999-2023, AdaCore --
+-- Copyright (C) 1999-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-tsmona.adb b/gcc/ada/libgnat/s-tsmona.adb
index 98ff5fe..e93c236 100644
--- a/gcc/ada/libgnat/s-tsmona.adb
+++ b/gcc/ada/libgnat/s-tsmona.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2012-2023, AdaCore --
+-- Copyright (C) 2012-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-tsmona__linux.adb b/gcc/ada/libgnat/s-tsmona__linux.adb
index 6b539f1..417b57f 100644
--- a/gcc/ada/libgnat/s-tsmona__linux.adb
+++ b/gcc/ada/libgnat/s-tsmona__linux.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2012-2023, AdaCore --
+-- Copyright (C) 2012-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-tsmona__mingw.adb b/gcc/ada/libgnat/s-tsmona__mingw.adb
index 1ab3dcb..3100db0 100644
--- a/gcc/ada/libgnat/s-tsmona__mingw.adb
+++ b/gcc/ada/libgnat/s-tsmona__mingw.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2012-2023, AdaCore --
+-- Copyright (C) 2012-2024, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-unstyp.ads b/gcc/ada/libgnat/s-unstyp.ads
index 69fe82e..f60e97a 100644
--- a/gcc/ada/libgnat/s-unstyp.ads
+++ b/gcc/ada/libgnat/s-unstyp.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-utf_32.adb b/gcc/ada/libgnat/s-utf_32.adb
index f116d97..4d9b0f3 100644
--- a/gcc/ada/libgnat/s-utf_32.adb
+++ b/gcc/ada/libgnat/s-utf_32.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2005-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2005-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-utf_32.ads b/gcc/ada/libgnat/s-utf_32.ads
index 760db83..a630503 100644
--- a/gcc/ada/libgnat/s-utf_32.ads
+++ b/gcc/ada/libgnat/s-utf_32.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2005-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2005-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-vade128.ads b/gcc/ada/libgnat/s-vade128.ads
index 730cd3d..ecfe5ba 100644
--- a/gcc/ada/libgnat/s-vade128.ads
+++ b/gcc/ada/libgnat/s-vade128.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-vade32.ads b/gcc/ada/libgnat/s-vade32.ads
index acb4554..04999dc 100644
--- a/gcc/ada/libgnat/s-vade32.ads
+++ b/gcc/ada/libgnat/s-vade32.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-vade64.ads b/gcc/ada/libgnat/s-vade64.ads
index 597f0c7..821cd9e 100644
--- a/gcc/ada/libgnat/s-vade64.ads
+++ b/gcc/ada/libgnat/s-vade64.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-vaen16.ads b/gcc/ada/libgnat/s-vaen16.ads
index c3cb5ed..5ac8beb 100644
--- a/gcc/ada/libgnat/s-vaen16.ads
+++ b/gcc/ada/libgnat/s-vaen16.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2021-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2021-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-vaen32.ads b/gcc/ada/libgnat/s-vaen32.ads
index ec1f19f..ee540f1 100644
--- a/gcc/ada/libgnat/s-vaen32.ads
+++ b/gcc/ada/libgnat/s-vaen32.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2021-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2021-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-vaenu8.ads b/gcc/ada/libgnat/s-vaenu8.ads
index 34f42e9..6d34533 100644
--- a/gcc/ada/libgnat/s-vaenu8.ads
+++ b/gcc/ada/libgnat/s-vaenu8.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2021-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2021-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-vafi128.ads b/gcc/ada/libgnat/s-vafi128.ads
index 2754408..21957ed 100644
--- a/gcc/ada/libgnat/s-vafi128.ads
+++ b/gcc/ada/libgnat/s-vafi128.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-vafi32.ads b/gcc/ada/libgnat/s-vafi32.ads
index bd51fd0..946fa45 100644
--- a/gcc/ada/libgnat/s-vafi32.ads
+++ b/gcc/ada/libgnat/s-vafi32.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-vafi64.ads b/gcc/ada/libgnat/s-vafi64.ads
index e983f85..bb7cb33 100644
--- a/gcc/ada/libgnat/s-vafi64.ads
+++ b/gcc/ada/libgnat/s-vafi64.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-vaispe.adb b/gcc/ada/libgnat/s-vaispe.adb
index a13dc6a8..f5c636c 100644
--- a/gcc/ada/libgnat/s-vaispe.adb
+++ b/gcc/ada/libgnat/s-vaispe.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2022-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2022-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-vaispe.ads b/gcc/ada/libgnat/s-vaispe.ads
index 33cc1f6..6fcd485 100644
--- a/gcc/ada/libgnat/s-vaispe.ads
+++ b/gcc/ada/libgnat/s-vaispe.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2022-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2022-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-valboo.adb b/gcc/ada/libgnat/s-valboo.adb
index f988c97..5cb3b98 100644
--- a/gcc/ada/libgnat/s-valboo.adb
+++ b/gcc/ada/libgnat/s-valboo.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-valboo.ads b/gcc/ada/libgnat/s-valboo.ads
index 6cdc3e5..79fa486 100644
--- a/gcc/ada/libgnat/s-valboo.ads
+++ b/gcc/ada/libgnat/s-valboo.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-valcha.adb b/gcc/ada/libgnat/s-valcha.adb
index 1fc338a..46f3eb4 100644
--- a/gcc/ada/libgnat/s-valcha.adb
+++ b/gcc/ada/libgnat/s-valcha.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-valcha.ads b/gcc/ada/libgnat/s-valcha.ads
index bd7b88c..b0ee67c 100644
--- a/gcc/ada/libgnat/s-valcha.ads
+++ b/gcc/ada/libgnat/s-valcha.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-valflt.ads b/gcc/ada/libgnat/s-valflt.ads
index a9e66bb..820aebe 100644
--- a/gcc/ada/libgnat/s-valflt.ads
+++ b/gcc/ada/libgnat/s-valflt.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-valint.adb b/gcc/ada/libgnat/s-valint.adb
index 0792ded..53b6532 100644
--- a/gcc/ada/libgnat/s-valint.adb
+++ b/gcc/ada/libgnat/s-valint.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-valint.ads b/gcc/ada/libgnat/s-valint.ads
index d8393ac..4f56473 100644
--- a/gcc/ada/libgnat/s-valint.ads
+++ b/gcc/ada/libgnat/s-valint.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-vallfl.ads b/gcc/ada/libgnat/s-vallfl.ads
index 168dcd0..d314df4 100644
--- a/gcc/ada/libgnat/s-vallfl.ads
+++ b/gcc/ada/libgnat/s-vallfl.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-valllf.ads b/gcc/ada/libgnat/s-valllf.ads
index 3861199..0a8e65e 100644
--- a/gcc/ada/libgnat/s-valllf.ads
+++ b/gcc/ada/libgnat/s-valllf.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-vallli.adb b/gcc/ada/libgnat/s-vallli.adb
index 99d35e5..380e792 100644
--- a/gcc/ada/libgnat/s-vallli.adb
+++ b/gcc/ada/libgnat/s-vallli.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-vallli.ads b/gcc/ada/libgnat/s-vallli.ads
index fb10b66..9ea2388 100644
--- a/gcc/ada/libgnat/s-vallli.ads
+++ b/gcc/ada/libgnat/s-vallli.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-valllli.ads b/gcc/ada/libgnat/s-valllli.ads
index 8122da8..2cac304 100644
--- a/gcc/ada/libgnat/s-valllli.ads
+++ b/gcc/ada/libgnat/s-valllli.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-vallllu.ads b/gcc/ada/libgnat/s-vallllu.ads
index 0957f84..c523b95 100644
--- a/gcc/ada/libgnat/s-vallllu.ads
+++ b/gcc/ada/libgnat/s-vallllu.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-valllu.adb b/gcc/ada/libgnat/s-valllu.adb
index 65f838a..a06b735 100644
--- a/gcc/ada/libgnat/s-valllu.adb
+++ b/gcc/ada/libgnat/s-valllu.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-valllu.ads b/gcc/ada/libgnat/s-valllu.ads
index e860505..d4db0a9 100644
--- a/gcc/ada/libgnat/s-valllu.ads
+++ b/gcc/ada/libgnat/s-valllu.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-valrea.adb b/gcc/ada/libgnat/s-valrea.adb
index eb13fae..f554280 100644
--- a/gcc/ada/libgnat/s-valrea.adb
+++ b/gcc/ada/libgnat/s-valrea.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-valrea.ads b/gcc/ada/libgnat/s-valrea.ads
index ef76a34..861b620 100644
--- a/gcc/ada/libgnat/s-valrea.ads
+++ b/gcc/ada/libgnat/s-valrea.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-valspe.adb b/gcc/ada/libgnat/s-valspe.adb
index e6d9df6..3928fcc 100644
--- a/gcc/ada/libgnat/s-valspe.adb
+++ b/gcc/ada/libgnat/s-valspe.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2023-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2023-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-valspe.ads b/gcc/ada/libgnat/s-valspe.ads
index 6f0ca53..016e1df 100644
--- a/gcc/ada/libgnat/s-valspe.ads
+++ b/gcc/ada/libgnat/s-valspe.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2023-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2023-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-valued.adb b/gcc/ada/libgnat/s-valued.adb
index 6f952a7..7d698e4 100644
--- a/gcc/ada/libgnat/s-valued.adb
+++ b/gcc/ada/libgnat/s-valued.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-valued.ads b/gcc/ada/libgnat/s-valued.ads
index 687a9ed..505a77e8 100644
--- a/gcc/ada/libgnat/s-valued.ads
+++ b/gcc/ada/libgnat/s-valued.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-valuef.adb b/gcc/ada/libgnat/s-valuef.adb
index dc4bdc6..9be6f40 100644
--- a/gcc/ada/libgnat/s-valuef.adb
+++ b/gcc/ada/libgnat/s-valuef.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-valuef.ads b/gcc/ada/libgnat/s-valuef.ads
index 613dd8c..f41cb55 100644
--- a/gcc/ada/libgnat/s-valuef.ads
+++ b/gcc/ada/libgnat/s-valuef.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-valuei.adb b/gcc/ada/libgnat/s-valuei.adb
index 71bfc0c..53f4a5d 100644
--- a/gcc/ada/libgnat/s-valuei.adb
+++ b/gcc/ada/libgnat/s-valuei.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-valuei.ads b/gcc/ada/libgnat/s-valuei.ads
index baf1f86..f466cb5 100644
--- a/gcc/ada/libgnat/s-valuei.ads
+++ b/gcc/ada/libgnat/s-valuei.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-valuen.adb b/gcc/ada/libgnat/s-valuen.adb
index 7ecaa76..caf4fc6 100644
--- a/gcc/ada/libgnat/s-valuen.adb
+++ b/gcc/ada/libgnat/s-valuen.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2021-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2021-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-valuen.ads b/gcc/ada/libgnat/s-valuen.ads
index 75aa9e4..83ffd71 100644
--- a/gcc/ada/libgnat/s-valuen.ads
+++ b/gcc/ada/libgnat/s-valuen.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2021-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2021-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-valuer.adb b/gcc/ada/libgnat/s-valuer.adb
index 58bff80..e6b8698 100644
--- a/gcc/ada/libgnat/s-valuer.adb
+++ b/gcc/ada/libgnat/s-valuer.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-valuer.ads b/gcc/ada/libgnat/s-valuer.ads
index 5ee92ac..00e8455 100644
--- a/gcc/ada/libgnat/s-valuer.ads
+++ b/gcc/ada/libgnat/s-valuer.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-valueu.adb b/gcc/ada/libgnat/s-valueu.adb
index 7aeed3b..a981871 100644
--- a/gcc/ada/libgnat/s-valueu.adb
+++ b/gcc/ada/libgnat/s-valueu.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-valueu.ads b/gcc/ada/libgnat/s-valueu.ads
index fabaa36..f7ad677 100644
--- a/gcc/ada/libgnat/s-valueu.ads
+++ b/gcc/ada/libgnat/s-valueu.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-valuns.adb b/gcc/ada/libgnat/s-valuns.adb
index c65afbc..f54faf3 100644
--- a/gcc/ada/libgnat/s-valuns.adb
+++ b/gcc/ada/libgnat/s-valuns.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-valuns.ads b/gcc/ada/libgnat/s-valuns.ads
index 1176153..bac5f87 100644
--- a/gcc/ada/libgnat/s-valuns.ads
+++ b/gcc/ada/libgnat/s-valuns.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-valuti.adb b/gcc/ada/libgnat/s-valuti.adb
index 5dfc307..147a10a 100644
--- a/gcc/ada/libgnat/s-valuti.adb
+++ b/gcc/ada/libgnat/s-valuti.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-valuti.ads b/gcc/ada/libgnat/s-valuti.ads
index cdd56c0..7058547 100644
--- a/gcc/ada/libgnat/s-valuti.ads
+++ b/gcc/ada/libgnat/s-valuti.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-valwch.adb b/gcc/ada/libgnat/s-valwch.adb
index 0b35c91..e452e31 100644
--- a/gcc/ada/libgnat/s-valwch.adb
+++ b/gcc/ada/libgnat/s-valwch.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-valwch.ads b/gcc/ada/libgnat/s-valwch.ads
index 19be46c..592e795 100644
--- a/gcc/ada/libgnat/s-valwch.ads
+++ b/gcc/ada/libgnat/s-valwch.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-vauspe.adb b/gcc/ada/libgnat/s-vauspe.adb
index c58fb21..dac452a 100644
--- a/gcc/ada/libgnat/s-vauspe.adb
+++ b/gcc/ada/libgnat/s-vauspe.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2022-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2022-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-vauspe.ads b/gcc/ada/libgnat/s-vauspe.ads
index b276eed..47f7ba0 100644
--- a/gcc/ada/libgnat/s-vauspe.ads
+++ b/gcc/ada/libgnat/s-vauspe.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2022-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2022-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-veboop.adb b/gcc/ada/libgnat/s-veboop.adb
index 614de69..28fe910 100644
--- a/gcc/ada/libgnat/s-veboop.adb
+++ b/gcc/ada/libgnat/s-veboop.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-veboop.ads b/gcc/ada/libgnat/s-veboop.ads
index 7dfe05c..9d757dc 100644
--- a/gcc/ada/libgnat/s-veboop.ads
+++ b/gcc/ada/libgnat/s-veboop.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-vector.ads b/gcc/ada/libgnat/s-vector.ads
index 7f37296..707a90b 100644
--- a/gcc/ada/libgnat/s-vector.ads
+++ b/gcc/ada/libgnat/s-vector.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-vercon.adb b/gcc/ada/libgnat/s-vercon.adb
index dead0c3..0e02218 100644
--- a/gcc/ada/libgnat/s-vercon.adb
+++ b/gcc/ada/libgnat/s-vercon.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-vercon.ads b/gcc/ada/libgnat/s-vercon.ads
index 3ef8c19..567aa20 100644
--- a/gcc/ada/libgnat/s-vercon.ads
+++ b/gcc/ada/libgnat/s-vercon.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-vs_int.ads b/gcc/ada/libgnat/s-vs_int.ads
index 739a30c..4ffce16 100644
--- a/gcc/ada/libgnat/s-vs_int.ads
+++ b/gcc/ada/libgnat/s-vs_int.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2023-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2023-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-vs_lli.ads b/gcc/ada/libgnat/s-vs_lli.ads
index e3a1179..79a2fe1 100644
--- a/gcc/ada/libgnat/s-vs_lli.ads
+++ b/gcc/ada/libgnat/s-vs_lli.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2023-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2023-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-vs_llu.ads b/gcc/ada/libgnat/s-vs_llu.ads
index f6d9334..9cfd935 100644
--- a/gcc/ada/libgnat/s-vs_llu.ads
+++ b/gcc/ada/libgnat/s-vs_llu.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2023-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2023-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-vs_uns.ads b/gcc/ada/libgnat/s-vs_uns.ads
index 5f21684..8bdf95a 100644
--- a/gcc/ada/libgnat/s-vs_uns.ads
+++ b/gcc/ada/libgnat/s-vs_uns.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2023-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2023-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-vsllli.ads b/gcc/ada/libgnat/s-vsllli.ads
index f70290b..8586861 100644
--- a/gcc/ada/libgnat/s-vsllli.ads
+++ b/gcc/ada/libgnat/s-vsllli.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2023-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2023-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-vslllu.ads b/gcc/ada/libgnat/s-vslllu.ads
index 0a53cfe..0ac39d9 100644
--- a/gcc/ada/libgnat/s-vslllu.ads
+++ b/gcc/ada/libgnat/s-vslllu.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2023-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2023-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-wchcnv.adb b/gcc/ada/libgnat/s-wchcnv.adb
index dcabd79..2e4fb46 100644
--- a/gcc/ada/libgnat/s-wchcnv.adb
+++ b/gcc/ada/libgnat/s-wchcnv.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-wchcnv.ads b/gcc/ada/libgnat/s-wchcnv.ads
index 1d374e5..f2c4923 100644
--- a/gcc/ada/libgnat/s-wchcnv.ads
+++ b/gcc/ada/libgnat/s-wchcnv.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-wchcon.adb b/gcc/ada/libgnat/s-wchcon.adb
index f7c3b60..edab46f 100644
--- a/gcc/ada/libgnat/s-wchcon.adb
+++ b/gcc/ada/libgnat/s-wchcon.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2005-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2005-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-wchcon.ads b/gcc/ada/libgnat/s-wchcon.ads
index 92d8d92..5e9d38c 100644
--- a/gcc/ada/libgnat/s-wchcon.ads
+++ b/gcc/ada/libgnat/s-wchcon.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-wchjis.adb b/gcc/ada/libgnat/s-wchjis.adb
index 3f0f4d4..b48442b 100644
--- a/gcc/ada/libgnat/s-wchjis.adb
+++ b/gcc/ada/libgnat/s-wchjis.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-wchjis.ads b/gcc/ada/libgnat/s-wchjis.ads
index 024d608..c0536f1 100644
--- a/gcc/ada/libgnat/s-wchjis.ads
+++ b/gcc/ada/libgnat/s-wchjis.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-wchstw.adb b/gcc/ada/libgnat/s-wchstw.adb
index ce0d0f1..e7dbc2f 100644
--- a/gcc/ada/libgnat/s-wchstw.adb
+++ b/gcc/ada/libgnat/s-wchstw.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-wchstw.ads b/gcc/ada/libgnat/s-wchstw.ads
index 40754ba..47b32a3 100644
--- a/gcc/ada/libgnat/s-wchstw.ads
+++ b/gcc/ada/libgnat/s-wchstw.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-wchwts.adb b/gcc/ada/libgnat/s-wchwts.adb
index 3816d7d..db2fd6a 100644
--- a/gcc/ada/libgnat/s-wchwts.adb
+++ b/gcc/ada/libgnat/s-wchwts.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-wchwts.ads b/gcc/ada/libgnat/s-wchwts.ads
index 7069588..63ee804 100644
--- a/gcc/ada/libgnat/s-wchwts.ads
+++ b/gcc/ada/libgnat/s-wchwts.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-widboo.adb b/gcc/ada/libgnat/s-widboo.adb
index 8397b39..dc43952 100644
--- a/gcc/ada/libgnat/s-widboo.adb
+++ b/gcc/ada/libgnat/s-widboo.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-widboo.ads b/gcc/ada/libgnat/s-widboo.ads
index 1ab9c9f..a48de90 100644
--- a/gcc/ada/libgnat/s-widboo.ads
+++ b/gcc/ada/libgnat/s-widboo.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-widcha.adb b/gcc/ada/libgnat/s-widcha.adb
index cc06317..ffbd4e6 100644
--- a/gcc/ada/libgnat/s-widcha.adb
+++ b/gcc/ada/libgnat/s-widcha.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-widcha.ads b/gcc/ada/libgnat/s-widcha.ads
index a09282b..ec70808 100644
--- a/gcc/ada/libgnat/s-widcha.ads
+++ b/gcc/ada/libgnat/s-widcha.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-widenu.adb b/gcc/ada/libgnat/s-widenu.adb
index 5a1a10e..28d7614 100644
--- a/gcc/ada/libgnat/s-widenu.adb
+++ b/gcc/ada/libgnat/s-widenu.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-widenu.ads b/gcc/ada/libgnat/s-widenu.ads
index 5372400..dbaca1f 100644
--- a/gcc/ada/libgnat/s-widenu.ads
+++ b/gcc/ada/libgnat/s-widenu.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-widint.ads b/gcc/ada/libgnat/s-widint.ads
index 31f7610..ac5e5ba 100644
--- a/gcc/ada/libgnat/s-widint.ads
+++ b/gcc/ada/libgnat/s-widint.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-widlli.adb b/gcc/ada/libgnat/s-widlli.adb
index 3f5f14b..c3f851e 100644
--- a/gcc/ada/libgnat/s-widlli.adb
+++ b/gcc/ada/libgnat/s-widlli.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-widlli.ads b/gcc/ada/libgnat/s-widlli.ads
index d10c675..3cf6211 100644
--- a/gcc/ada/libgnat/s-widlli.ads
+++ b/gcc/ada/libgnat/s-widlli.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-widllli.ads b/gcc/ada/libgnat/s-widllli.ads
index b181408..6ecf0b1 100644
--- a/gcc/ada/libgnat/s-widllli.ads
+++ b/gcc/ada/libgnat/s-widllli.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-widlllu.ads b/gcc/ada/libgnat/s-widlllu.ads
index 274b7a2..2be92af 100644
--- a/gcc/ada/libgnat/s-widlllu.ads
+++ b/gcc/ada/libgnat/s-widlllu.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-widllu.adb b/gcc/ada/libgnat/s-widllu.adb
index 12ea53d..60c0706 100644
--- a/gcc/ada/libgnat/s-widllu.adb
+++ b/gcc/ada/libgnat/s-widllu.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-widllu.ads b/gcc/ada/libgnat/s-widllu.ads
index 8e44e8a..9ac37a8 100644
--- a/gcc/ada/libgnat/s-widllu.ads
+++ b/gcc/ada/libgnat/s-widllu.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-widthi.adb b/gcc/ada/libgnat/s-widthi.adb
index 7f04e22..6cbbd5b 100644
--- a/gcc/ada/libgnat/s-widthi.adb
+++ b/gcc/ada/libgnat/s-widthi.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-widthi.ads b/gcc/ada/libgnat/s-widthi.ads
index 55f0753..9db0402 100644
--- a/gcc/ada/libgnat/s-widthi.ads
+++ b/gcc/ada/libgnat/s-widthi.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-widthu.adb b/gcc/ada/libgnat/s-widthu.adb
index a6a7fbb..b39d259 100644
--- a/gcc/ada/libgnat/s-widthu.adb
+++ b/gcc/ada/libgnat/s-widthu.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-widthu.ads b/gcc/ada/libgnat/s-widthu.ads
index 94282d4..6e9f1e5 100644
--- a/gcc/ada/libgnat/s-widthu.ads
+++ b/gcc/ada/libgnat/s-widthu.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-widuns.ads b/gcc/ada/libgnat/s-widuns.ads
index 7a5b2ba..5a1ea38 100644
--- a/gcc/ada/libgnat/s-widuns.ads
+++ b/gcc/ada/libgnat/s-widuns.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-widwch.adb b/gcc/ada/libgnat/s-widwch.adb
index dcfd6d8..5c1dac3 100644
--- a/gcc/ada/libgnat/s-widwch.adb
+++ b/gcc/ada/libgnat/s-widwch.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-widwch.ads b/gcc/ada/libgnat/s-widwch.ads
index e85201d..c9ea546 100644
--- a/gcc/ada/libgnat/s-widwch.ads
+++ b/gcc/ada/libgnat/s-widwch.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-win32.ads b/gcc/ada/libgnat/s-win32.ads
index ebff9fc..6ea6615 100644
--- a/gcc/ada/libgnat/s-win32.ads
+++ b/gcc/ada/libgnat/s-win32.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2008-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2008-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-winext.ads b/gcc/ada/libgnat/s-winext.ads
index 2f0bdb3..3f14fc0 100644
--- a/gcc/ada/libgnat/s-winext.ads
+++ b/gcc/ada/libgnat/s-winext.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-wwdcha.adb b/gcc/ada/libgnat/s-wwdcha.adb
index b83918d..25d1aeb 100644
--- a/gcc/ada/libgnat/s-wwdcha.adb
+++ b/gcc/ada/libgnat/s-wwdcha.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-wwdcha.ads b/gcc/ada/libgnat/s-wwdcha.ads
index 9d89f6e..27794dd 100644
--- a/gcc/ada/libgnat/s-wwdcha.ads
+++ b/gcc/ada/libgnat/s-wwdcha.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-wwdenu.adb b/gcc/ada/libgnat/s-wwdenu.adb
index 428ba26..d52a599 100644
--- a/gcc/ada/libgnat/s-wwdenu.adb
+++ b/gcc/ada/libgnat/s-wwdenu.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-wwdenu.ads b/gcc/ada/libgnat/s-wwdenu.ads
index 5bf21f7..fc5435d 100644
--- a/gcc/ada/libgnat/s-wwdenu.ads
+++ b/gcc/ada/libgnat/s-wwdenu.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-wwdwch.adb b/gcc/ada/libgnat/s-wwdwch.adb
index ea731e3..1212a1d 100644
--- a/gcc/ada/libgnat/s-wwdwch.adb
+++ b/gcc/ada/libgnat/s-wwdwch.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/s-wwdwch.ads b/gcc/ada/libgnat/s-wwdwch.ads
index c856a77..d60158f 100644
--- a/gcc/ada/libgnat/s-wwdwch.ads
+++ b/gcc/ada/libgnat/s-wwdwch.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/libgnat/system-aix.ads b/gcc/ada/libgnat/system-aix.ads
index 1485df4..a7653ce 100644
--- a/gcc/ada/libgnat/system-aix.ads
+++ b/gcc/ada/libgnat/system-aix.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (AIX/PPC Version) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/system-darwin-arm.ads b/gcc/ada/libgnat/system-darwin-arm.ads
index a57bf0b..5f45737 100644
--- a/gcc/ada/libgnat/system-darwin-arm.ads
+++ b/gcc/ada/libgnat/system-darwin-arm.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (Darwin/ARM Version) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/system-darwin-ppc.ads b/gcc/ada/libgnat/system-darwin-ppc.ads
index b6e73fd..b3d75cd 100644
--- a/gcc/ada/libgnat/system-darwin-ppc.ads
+++ b/gcc/ada/libgnat/system-darwin-ppc.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (Darwin/PPC Version) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/system-darwin-x86.ads b/gcc/ada/libgnat/system-darwin-x86.ads
index 994b22f..fb41685 100644
--- a/gcc/ada/libgnat/system-darwin-x86.ads
+++ b/gcc/ada/libgnat/system-darwin-x86.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (Darwin/x86 Version) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/system-djgpp.ads b/gcc/ada/libgnat/system-djgpp.ads
index 459475e..433b38a 100644
--- a/gcc/ada/libgnat/system-djgpp.ads
+++ b/gcc/ada/libgnat/system-djgpp.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (DJGPP Version) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/system-dragonfly-x86_64.ads b/gcc/ada/libgnat/system-dragonfly-x86_64.ads
index 6b16156..e15e516 100644
--- a/gcc/ada/libgnat/system-dragonfly-x86_64.ads
+++ b/gcc/ada/libgnat/system-dragonfly-x86_64.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (DragonFly BSD/x86_64 Version) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/system-freebsd.ads b/gcc/ada/libgnat/system-freebsd.ads
index 32c1cc4..c3ff0eb 100644
--- a/gcc/ada/libgnat/system-freebsd.ads
+++ b/gcc/ada/libgnat/system-freebsd.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (FreeBSD Version) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/system-hpux-ia64.ads b/gcc/ada/libgnat/system-hpux-ia64.ads
index 8eb4a8f..f55b9f7 100644
--- a/gcc/ada/libgnat/system-hpux-ia64.ads
+++ b/gcc/ada/libgnat/system-hpux-ia64.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (HP-UX/ia64 Version) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/system-hpux.ads b/gcc/ada/libgnat/system-hpux.ads
index 4c5eb3e..eb3c41d 100644
--- a/gcc/ada/libgnat/system-hpux.ads
+++ b/gcc/ada/libgnat/system-hpux.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (HP-UX Version) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/system-linux-alpha.ads b/gcc/ada/libgnat/system-linux-alpha.ads
index 86fcea3..68dbcfb 100644
--- a/gcc/ada/libgnat/system-linux-alpha.ads
+++ b/gcc/ada/libgnat/system-linux-alpha.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (GNU-Linux/alpha Version) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/system-linux-arm.ads b/gcc/ada/libgnat/system-linux-arm.ads
index 724086c..f6a01f7 100644
--- a/gcc/ada/libgnat/system-linux-arm.ads
+++ b/gcc/ada/libgnat/system-linux-arm.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (GNU-Linux/ARM Version) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/system-linux-hppa.ads b/gcc/ada/libgnat/system-linux-hppa.ads
index 148b6f0..202c015 100644
--- a/gcc/ada/libgnat/system-linux-hppa.ads
+++ b/gcc/ada/libgnat/system-linux-hppa.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (GNU/Linux-HPPA Version) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/system-linux-ia64.ads b/gcc/ada/libgnat/system-linux-ia64.ads
index d332820..e0a4d43 100644
--- a/gcc/ada/libgnat/system-linux-ia64.ads
+++ b/gcc/ada/libgnat/system-linux-ia64.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (GNU-Linux/ia64 Version) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/system-linux-loongarch.ads b/gcc/ada/libgnat/system-linux-loongarch.ads
index 735f6704..d44724d 100644
--- a/gcc/ada/libgnat/system-linux-loongarch.ads
+++ b/gcc/ada/libgnat/system-linux-loongarch.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (GNU-Linux/LoongArch Version) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/system-linux-m68k.ads b/gcc/ada/libgnat/system-linux-m68k.ads
index 9db322b..e6bfd6e 100644
--- a/gcc/ada/libgnat/system-linux-m68k.ads
+++ b/gcc/ada/libgnat/system-linux-m68k.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (GNU/Linux/m68k Version) --
-- --
--- Copyright (C) 2014-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2014-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/system-linux-mips.ads b/gcc/ada/libgnat/system-linux-mips.ads
index 929e54b..085d317 100644
--- a/gcc/ada/libgnat/system-linux-mips.ads
+++ b/gcc/ada/libgnat/system-linux-mips.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (GNU-Linux/MIPS Version) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/system-linux-ppc.ads b/gcc/ada/libgnat/system-linux-ppc.ads
index 1358bf9..2f3b495 100644
--- a/gcc/ada/libgnat/system-linux-ppc.ads
+++ b/gcc/ada/libgnat/system-linux-ppc.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (GNU-Linux/PPC Version) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/system-linux-riscv.ads b/gcc/ada/libgnat/system-linux-riscv.ads
index 420a502..d762071 100644
--- a/gcc/ada/libgnat/system-linux-riscv.ads
+++ b/gcc/ada/libgnat/system-linux-riscv.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (GNU-Linux/RISC-V Version) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/system-linux-s390.ads b/gcc/ada/libgnat/system-linux-s390.ads
index f53c43f..bf5fed9 100644
--- a/gcc/ada/libgnat/system-linux-s390.ads
+++ b/gcc/ada/libgnat/system-linux-s390.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (GNU-Linux/s390 Version) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/system-linux-sh4.ads b/gcc/ada/libgnat/system-linux-sh4.ads
index 4970b28..b6b57b7 100644
--- a/gcc/ada/libgnat/system-linux-sh4.ads
+++ b/gcc/ada/libgnat/system-linux-sh4.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (GNU-Linux/sh4 Version) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/system-linux-sparc.ads b/gcc/ada/libgnat/system-linux-sparc.ads
index a319664..d1cc22f 100644
--- a/gcc/ada/libgnat/system-linux-sparc.ads
+++ b/gcc/ada/libgnat/system-linux-sparc.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (GNU/Linux-SPARC Version) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/system-linux-x86.ads b/gcc/ada/libgnat/system-linux-x86.ads
index 85538d6..444c6ec 100644
--- a/gcc/ada/libgnat/system-linux-x86.ads
+++ b/gcc/ada/libgnat/system-linux-x86.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (GNU-Linux/x86 Version) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/system-lynxos178-ppc.ads b/gcc/ada/libgnat/system-lynxos178-ppc.ads
index a0ef4118..4b13e78 100644
--- a/gcc/ada/libgnat/system-lynxos178-ppc.ads
+++ b/gcc/ada/libgnat/system-lynxos178-ppc.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (LynxOS-178 PPC Version) --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/system-lynxos178-x86.ads b/gcc/ada/libgnat/system-lynxos178-x86.ads
index 8c8a61e..3c7dc53 100644
--- a/gcc/ada/libgnat/system-lynxos178-x86.ads
+++ b/gcc/ada/libgnat/system-lynxos178-x86.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (LynxOS-178 X86 Version) --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/system-mingw.ads b/gcc/ada/libgnat/system-mingw.ads
index 4b5a7ce..e30e9b0 100644
--- a/gcc/ada/libgnat/system-mingw.ads
+++ b/gcc/ada/libgnat/system-mingw.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (Windows Version) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/system-qnx-arm.ads b/gcc/ada/libgnat/system-qnx-arm.ads
index 1dd1a22..f7fdfc4 100644
--- a/gcc/ada/libgnat/system-qnx-arm.ads
+++ b/gcc/ada/libgnat/system-qnx-arm.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (QNX-ARM/AARCH64 Version) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/system-rtems.ads b/gcc/ada/libgnat/system-rtems.ads
index 2dc2d81..3005b66 100644
--- a/gcc/ada/libgnat/system-rtems.ads
+++ b/gcc/ada/libgnat/system-rtems.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (Compiler Version) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/system-solaris-sparc.ads b/gcc/ada/libgnat/system-solaris-sparc.ads
index 7bd8460..47e35a1 100644
--- a/gcc/ada/libgnat/system-solaris-sparc.ads
+++ b/gcc/ada/libgnat/system-solaris-sparc.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (SUN Solaris Version) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/system-solaris-x86.ads b/gcc/ada/libgnat/system-solaris-x86.ads
index 6077668..acf1ad5 100644
--- a/gcc/ada/libgnat/system-solaris-x86.ads
+++ b/gcc/ada/libgnat/system-solaris-x86.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (x86 Solaris Version) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/system-vxworks-ppc-kernel.ads b/gcc/ada/libgnat/system-vxworks-ppc-kernel.ads
index f12dc6e..4cb5cc4 100644
--- a/gcc/ada/libgnat/system-vxworks-ppc-kernel.ads
+++ b/gcc/ada/libgnat/system-vxworks-ppc-kernel.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (VxWorks 6 Kernel Version PPC) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/system-vxworks-ppc-rtp-smp.ads b/gcc/ada/libgnat/system-vxworks-ppc-rtp-smp.ads
index e4b80a8..d4bcefd 100644
--- a/gcc/ada/libgnat/system-vxworks-ppc-rtp-smp.ads
+++ b/gcc/ada/libgnat/system-vxworks-ppc-rtp-smp.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (VxWorks 6.x SMP PPC RTP) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/system-vxworks-ppc-rtp.ads b/gcc/ada/libgnat/system-vxworks-ppc-rtp.ads
index 3a3d336..0700fca 100644
--- a/gcc/ada/libgnat/system-vxworks-ppc-rtp.ads
+++ b/gcc/ada/libgnat/system-vxworks-ppc-rtp.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (VxWorks 6.x PPC RTP) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/system-vxworks7-aarch64-rtp-smp.ads b/gcc/ada/libgnat/system-vxworks7-aarch64-rtp-smp.ads
index 0a7886b..69ad15f 100644
--- a/gcc/ada/libgnat/system-vxworks7-aarch64-rtp-smp.ads
+++ b/gcc/ada/libgnat/system-vxworks7-aarch64-rtp-smp.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (VxWorks 7.x AARCH64 RTP) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/system-vxworks7-aarch64.ads b/gcc/ada/libgnat/system-vxworks7-aarch64.ads
index 811fac1..e398c89 100644
--- a/gcc/ada/libgnat/system-vxworks7-aarch64.ads
+++ b/gcc/ada/libgnat/system-vxworks7-aarch64.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (VxWorks 7.x AARCH64 Kernel) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/system-vxworks7-arm-rtp-smp.ads b/gcc/ada/libgnat/system-vxworks7-arm-rtp-smp.ads
index abdc200..f3d0670 100644
--- a/gcc/ada/libgnat/system-vxworks7-arm-rtp-smp.ads
+++ b/gcc/ada/libgnat/system-vxworks7-arm-rtp-smp.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (VxWorks 7 ARM RTP) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/system-vxworks7-arm.ads b/gcc/ada/libgnat/system-vxworks7-arm.ads
index 0e5e3e6..c009b34 100644
--- a/gcc/ada/libgnat/system-vxworks7-arm.ads
+++ b/gcc/ada/libgnat/system-vxworks7-arm.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (VxWorks Version ARM) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/system-vxworks7-ppc-kernel.ads b/gcc/ada/libgnat/system-vxworks7-ppc-kernel.ads
index bbf6d98..c5e9287 100644
--- a/gcc/ada/libgnat/system-vxworks7-ppc-kernel.ads
+++ b/gcc/ada/libgnat/system-vxworks7-ppc-kernel.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (VxWorks 7 Kernel Version PPC) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/system-vxworks7-ppc-rtp-smp.ads b/gcc/ada/libgnat/system-vxworks7-ppc-rtp-smp.ads
index de1e10d..c794c22 100644
--- a/gcc/ada/libgnat/system-vxworks7-ppc-rtp-smp.ads
+++ b/gcc/ada/libgnat/system-vxworks7-ppc-rtp-smp.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (VxWorks 7.x PPC RTP) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/system-vxworks7-ppc64-kernel.ads b/gcc/ada/libgnat/system-vxworks7-ppc64-kernel.ads
index f4f1af5..22594dd 100644
--- a/gcc/ada/libgnat/system-vxworks7-ppc64-kernel.ads
+++ b/gcc/ada/libgnat/system-vxworks7-ppc64-kernel.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (VxWorks 7.x PPC64 Kernel) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/system-vxworks7-ppc64-rtp-smp.ads b/gcc/ada/libgnat/system-vxworks7-ppc64-rtp-smp.ads
index 4868891..3bf3854 100644
--- a/gcc/ada/libgnat/system-vxworks7-ppc64-rtp-smp.ads
+++ b/gcc/ada/libgnat/system-vxworks7-ppc64-rtp-smp.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (VxWorks 7.x PPC64 RTP) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/system-vxworks7-x86-kernel.ads b/gcc/ada/libgnat/system-vxworks7-x86-kernel.ads
index e60e122..fb2a769 100644
--- a/gcc/ada/libgnat/system-vxworks7-x86-kernel.ads
+++ b/gcc/ada/libgnat/system-vxworks7-x86-kernel.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (VxWorks 7 Kernel Version x86) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/system-vxworks7-x86-rtp-smp.ads b/gcc/ada/libgnat/system-vxworks7-x86-rtp-smp.ads
index b8a25a3..a43f3b7 100644
--- a/gcc/ada/libgnat/system-vxworks7-x86-rtp-smp.ads
+++ b/gcc/ada/libgnat/system-vxworks7-x86-rtp-smp.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (VxWorks 7 Version x86 for RTPs) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/system-vxworks7-x86_64-kernel.ads b/gcc/ada/libgnat/system-vxworks7-x86_64-kernel.ads
index 273529f..9fcf604 100644
--- a/gcc/ada/libgnat/system-vxworks7-x86_64-kernel.ads
+++ b/gcc/ada/libgnat/system-vxworks7-x86_64-kernel.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (VxWorks 7 Kernel Version x86_64) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/libgnat/system-vxworks7-x86_64-rtp-smp.ads b/gcc/ada/libgnat/system-vxworks7-x86_64-rtp-smp.ads
index a2ea30a..5bd94f6 100644
--- a/gcc/ada/libgnat/system-vxworks7-x86_64-rtp-smp.ads
+++ b/gcc/ada/libgnat/system-vxworks7-x86_64-rtp-smp.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (VxWorks 7 Version x86_64 for RTPs) --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/link.c b/gcc/ada/link.c
index f212644..bc9604e 100644
--- a/gcc/ada/link.c
+++ b/gcc/ada/link.c
@@ -6,7 +6,7 @@
* *
* C Implementation File *
* *
- * Copyright (C) 1992-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 1992-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/live.adb b/gcc/ada/live.adb
index f7057db..7707220 100644
--- a/gcc/ada/live.adb
+++ b/gcc/ada/live.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2000-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2000-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/live.ads b/gcc/ada/live.ads
index d754d7f..1e6086f 100644
--- a/gcc/ada/live.ads
+++ b/gcc/ada/live.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2000-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2000-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/local_restrict.adb b/gcc/ada/local_restrict.adb
index 2c772a5..6e91c8a 100644
--- a/gcc/ada/local_restrict.adb
+++ b/gcc/ada/local_restrict.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/local_restrict.ads b/gcc/ada/local_restrict.ads
index cf45054..5bad3393 100644
--- a/gcc/ada/local_restrict.ads
+++ b/gcc/ada/local_restrict.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/locales.c b/gcc/ada/locales.c
index 832a3e1..95a913b 100644
--- a/gcc/ada/locales.c
+++ b/gcc/ada/locales.c
@@ -6,7 +6,7 @@
* *
* C Implementation File *
* *
- * Copyright (C) 2010-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 2010-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/make.adb b/gcc/ada/make.adb
index f2ce719..01d3cca 100644
--- a/gcc/ada/make.adb
+++ b/gcc/ada/make.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/make.ads b/gcc/ada/make.ads
index d480260..1c758a4 100644
--- a/gcc/ada/make.ads
+++ b/gcc/ada/make.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/make_util.adb b/gcc/ada/make_util.adb
index 1e037c4..fad124a 100644
--- a/gcc/ada/make_util.adb
+++ b/gcc/ada/make_util.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/make_util.ads b/gcc/ada/make_util.ads
index 1d179da..144c270 100644
--- a/gcc/ada/make_util.ads
+++ b/gcc/ada/make_util.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/makeusg.adb b/gcc/ada/makeusg.adb
index 5174518..6fa7d7b 100644
--- a/gcc/ada/makeusg.adb
+++ b/gcc/ada/makeusg.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/makeusg.ads b/gcc/ada/makeusg.ads
index 826b7bc..2a379d4 100644
--- a/gcc/ada/makeusg.ads
+++ b/gcc/ada/makeusg.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/mdll-fil.adb b/gcc/ada/mdll-fil.adb
index 31fb3d2..aeb162c 100644
--- a/gcc/ada/mdll-fil.adb
+++ b/gcc/ada/mdll-fil.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/mdll-fil.ads b/gcc/ada/mdll-fil.ads
index f5a979f..80b0908 100644
--- a/gcc/ada/mdll-fil.ads
+++ b/gcc/ada/mdll-fil.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/mdll-utl.adb b/gcc/ada/mdll-utl.adb
index c88f828..b1e68fa 100644
--- a/gcc/ada/mdll-utl.adb
+++ b/gcc/ada/mdll-utl.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/mdll-utl.ads b/gcc/ada/mdll-utl.ads
index f16a610..0d618f5 100644
--- a/gcc/ada/mdll-utl.ads
+++ b/gcc/ada/mdll-utl.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/mdll.adb b/gcc/ada/mdll.adb
index bc2b827..2f946b0 100644
--- a/gcc/ada/mdll.adb
+++ b/gcc/ada/mdll.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/mdll.ads b/gcc/ada/mdll.ads
index d843204..d6359f8 100644
--- a/gcc/ada/mdll.ads
+++ b/gcc/ada/mdll.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/mingw32.h b/gcc/ada/mingw32.h
index 31a3e1f..97ac3cc 100644
--- a/gcc/ada/mingw32.h
+++ b/gcc/ada/mingw32.h
@@ -6,7 +6,7 @@
* *
* C Header File *
* *
- * Copyright (C) 2002-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 2002-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/mkdir.c b/gcc/ada/mkdir.c
index e5b4954..31dd264 100644
--- a/gcc/ada/mkdir.c
+++ b/gcc/ada/mkdir.c
@@ -6,7 +6,7 @@
* *
* C Implementation File *
* *
- * Copyright (C) 2002-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 2002-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/namet-sp.adb b/gcc/ada/namet-sp.adb
index 5c813d6..2895342 100644
--- a/gcc/ada/namet-sp.adb
+++ b/gcc/ada/namet-sp.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2008-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2008-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/namet-sp.ads b/gcc/ada/namet-sp.ads
index ea7b10c..ae43ee2 100644
--- a/gcc/ada/namet-sp.ads
+++ b/gcc/ada/namet-sp.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/namet.adb b/gcc/ada/namet.adb
index 8a57db6..34e3bf6 100644
--- a/gcc/ada/namet.adb
+++ b/gcc/ada/namet.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/namet.ads b/gcc/ada/namet.ads
index 4965aa5..d3990cb 100644
--- a/gcc/ada/namet.ads
+++ b/gcc/ada/namet.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/namet.h b/gcc/ada/namet.h
index 8c6da0f..a47c148 100644
--- a/gcc/ada/namet.h
+++ b/gcc/ada/namet.h
@@ -6,7 +6,7 @@
* *
* C Header File *
* *
- * Copyright (C) 1992-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 1992-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/nlists.adb b/gcc/ada/nlists.adb
index de81ae8..8f0bdcd 100644
--- a/gcc/ada/nlists.adb
+++ b/gcc/ada/nlists.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/nlists.ads b/gcc/ada/nlists.ads
index 7afe80f..5aebd60 100644
--- a/gcc/ada/nlists.ads
+++ b/gcc/ada/nlists.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/nlists.h b/gcc/ada/nlists.h
index 63d4807..2e9b61b 100644
--- a/gcc/ada/nlists.h
+++ b/gcc/ada/nlists.h
@@ -6,7 +6,7 @@
* *
* C Header File *
* *
- * Copyright (C) 1992-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 1992-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/opt.adb b/gcc/ada/opt.adb
index 5f238cc..5427a95 100644
--- a/gcc/ada/opt.adb
+++ b/gcc/ada/opt.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/opt.ads b/gcc/ada/opt.ads
index 59a24be..5f402cf 100644
--- a/gcc/ada/opt.ads
+++ b/gcc/ada/opt.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/osint-b.adb b/gcc/ada/osint-b.adb
index cc3897e..d0011ec 100644
--- a/gcc/ada/osint-b.adb
+++ b/gcc/ada/osint-b.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/osint-b.ads b/gcc/ada/osint-b.ads
index 192bf05..9c7b863 100644
--- a/gcc/ada/osint-b.ads
+++ b/gcc/ada/osint-b.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/osint-c.adb b/gcc/ada/osint-c.adb
index 8761fa1..08abbae 100644
--- a/gcc/ada/osint-c.adb
+++ b/gcc/ada/osint-c.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/osint-c.ads b/gcc/ada/osint-c.ads
index 19ed4a1..6f8fbb8 100644
--- a/gcc/ada/osint-c.ads
+++ b/gcc/ada/osint-c.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/osint-l.adb b/gcc/ada/osint-l.adb
index d07fc4f..66ed2fb 100644
--- a/gcc/ada/osint-l.adb
+++ b/gcc/ada/osint-l.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/osint-l.ads b/gcc/ada/osint-l.ads
index 3b0b992..ce991f0 100644
--- a/gcc/ada/osint-l.ads
+++ b/gcc/ada/osint-l.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/osint-m.adb b/gcc/ada/osint-m.adb
index f5ce8fc..89430d0 100644
--- a/gcc/ada/osint-m.adb
+++ b/gcc/ada/osint-m.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/osint-m.ads b/gcc/ada/osint-m.ads
index 51c910d..356a97c 100644
--- a/gcc/ada/osint-m.ads
+++ b/gcc/ada/osint-m.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/osint.adb b/gcc/ada/osint.adb
index 118a618..046480b 100644
--- a/gcc/ada/osint.adb
+++ b/gcc/ada/osint.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/osint.ads b/gcc/ada/osint.ads
index 1daa077..9153106 100644
--- a/gcc/ada/osint.ads
+++ b/gcc/ada/osint.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/output.adb b/gcc/ada/output.adb
index 73c5c21..410e1f1 100644
--- a/gcc/ada/output.adb
+++ b/gcc/ada/output.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/output.ads b/gcc/ada/output.ads
index e5933c1..545a465 100644
--- a/gcc/ada/output.ads
+++ b/gcc/ada/output.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/par-ch10.adb b/gcc/ada/par-ch10.adb
index 61b91bb..7317b75 100644
--- a/gcc/ada/par-ch10.adb
+++ b/gcc/ada/par-ch10.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/par-ch11.adb b/gcc/ada/par-ch11.adb
index b241567..d4eefe8 100644
--- a/gcc/ada/par-ch11.adb
+++ b/gcc/ada/par-ch11.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/par-ch12.adb b/gcc/ada/par-ch12.adb
index a35260f..8eb06b6 100644
--- a/gcc/ada/par-ch12.adb
+++ b/gcc/ada/par-ch12.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/par-ch13.adb b/gcc/ada/par-ch13.adb
index 85adad2..9232dc6 100644
--- a/gcc/ada/par-ch13.adb
+++ b/gcc/ada/par-ch13.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/par-ch2.adb b/gcc/ada/par-ch2.adb
index af92f5a..f09daea 100644
--- a/gcc/ada/par-ch2.adb
+++ b/gcc/ada/par-ch2.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/par-ch3.adb b/gcc/ada/par-ch3.adb
index fddb1d9..7c222a2 100644
--- a/gcc/ada/par-ch3.adb
+++ b/gcc/ada/par-ch3.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/par-ch4.adb b/gcc/ada/par-ch4.adb
index 2ff6e00..9c9b0d7 100644
--- a/gcc/ada/par-ch4.adb
+++ b/gcc/ada/par-ch4.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/par-ch5.adb b/gcc/ada/par-ch5.adb
index bbade15..d72ddff 100644
--- a/gcc/ada/par-ch5.adb
+++ b/gcc/ada/par-ch5.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/par-ch6.adb b/gcc/ada/par-ch6.adb
index f041bbb..2ce23e1 100644
--- a/gcc/ada/par-ch6.adb
+++ b/gcc/ada/par-ch6.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/par-ch7.adb b/gcc/ada/par-ch7.adb
index fc96ce8..6b64cfb 100644
--- a/gcc/ada/par-ch7.adb
+++ b/gcc/ada/par-ch7.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/par-ch8.adb b/gcc/ada/par-ch8.adb
index 0079444..979c220 100644
--- a/gcc/ada/par-ch8.adb
+++ b/gcc/ada/par-ch8.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/par-ch9.adb b/gcc/ada/par-ch9.adb
index d6526de..3fb1a76 100644
--- a/gcc/ada/par-ch9.adb
+++ b/gcc/ada/par-ch9.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/par-endh.adb b/gcc/ada/par-endh.adb
index 45cf22a..2949d6f 100644
--- a/gcc/ada/par-endh.adb
+++ b/gcc/ada/par-endh.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/par-labl.adb b/gcc/ada/par-labl.adb
index 2380562..7b793c0 100644
--- a/gcc/ada/par-labl.adb
+++ b/gcc/ada/par-labl.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/par-load.adb b/gcc/ada/par-load.adb
index d1328e1..45be02c 100644
--- a/gcc/ada/par-load.adb
+++ b/gcc/ada/par-load.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/par-prag.adb b/gcc/ada/par-prag.adb
index 655f769..4d10a6e 100644
--- a/gcc/ada/par-prag.adb
+++ b/gcc/ada/par-prag.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/par-sync.adb b/gcc/ada/par-sync.adb
index fe9cee7..8bfba41 100644
--- a/gcc/ada/par-sync.adb
+++ b/gcc/ada/par-sync.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/par-tchk.adb b/gcc/ada/par-tchk.adb
index d6f3db1..f5b6267 100644
--- a/gcc/ada/par-tchk.adb
+++ b/gcc/ada/par-tchk.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/par-util.adb b/gcc/ada/par-util.adb
index fc44ddf..8ed5947 100644
--- a/gcc/ada/par-util.adb
+++ b/gcc/ada/par-util.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/par.adb b/gcc/ada/par.adb
index 4e10dd9..d9b52c5 100644
--- a/gcc/ada/par.adb
+++ b/gcc/ada/par.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/par.ads b/gcc/ada/par.ads
index 86bcd52..b88fb8d 100644
--- a/gcc/ada/par.ads
+++ b/gcc/ada/par.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/par_sco.adb b/gcc/ada/par_sco.adb
index 84af8bf..144c138 100644
--- a/gcc/ada/par_sco.adb
+++ b/gcc/ada/par_sco.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/par_sco.ads b/gcc/ada/par_sco.ads
index d132f44..d32edf3 100644
--- a/gcc/ada/par_sco.ads
+++ b/gcc/ada/par_sco.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/pprint.adb b/gcc/ada/pprint.adb
index 2a8f2f6..6d30511 100644
--- a/gcc/ada/pprint.adb
+++ b/gcc/ada/pprint.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2008-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2008-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/pprint.ads b/gcc/ada/pprint.ads
index 63d902f..7611358 100644
--- a/gcc/ada/pprint.ads
+++ b/gcc/ada/pprint.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2008-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2008-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/prep.adb b/gcc/ada/prep.adb
index 66171df..b9502fc 100644
--- a/gcc/ada/prep.adb
+++ b/gcc/ada/prep.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/prep.ads b/gcc/ada/prep.ads
index 7c0708d..51066ce 100644
--- a/gcc/ada/prep.ads
+++ b/gcc/ada/prep.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/prepcomp.adb b/gcc/ada/prepcomp.adb
index cb76991..03d0b5f 100644
--- a/gcc/ada/prepcomp.adb
+++ b/gcc/ada/prepcomp.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2003-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2003-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/prepcomp.ads b/gcc/ada/prepcomp.ads
index 6bb988c..1183817 100644
--- a/gcc/ada/prepcomp.ads
+++ b/gcc/ada/prepcomp.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/put_scos.adb b/gcc/ada/put_scos.adb
index 3a2a191..4c40040 100644
--- a/gcc/ada/put_scos.adb
+++ b/gcc/ada/put_scos.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/put_scos.ads b/gcc/ada/put_scos.ads
index ec3691b..a701eff 100644
--- a/gcc/ada/put_scos.ads
+++ b/gcc/ada/put_scos.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/raise-gcc.c b/gcc/ada/raise-gcc.c
index bdf1c26..01cf4b6 100644
--- a/gcc/ada/raise-gcc.c
+++ b/gcc/ada/raise-gcc.c
@@ -6,7 +6,7 @@
* *
* C Implementation File *
* *
- * Copyright (C) 1992-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 1992-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/raise.c b/gcc/ada/raise.c
index 4ea4062..b59dd3a 100644
--- a/gcc/ada/raise.c
+++ b/gcc/ada/raise.c
@@ -6,7 +6,7 @@
* *
* C Implementation File *
* *
- * Copyright (C) 1992-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 1992-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/raise.h b/gcc/ada/raise.h
index 7337a93..3e7a795 100644
--- a/gcc/ada/raise.h
+++ b/gcc/ada/raise.h
@@ -6,7 +6,7 @@
* *
* C Header File *
* *
- * Copyright (C) 1992-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 1992-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/repinfo-input.adb b/gcc/ada/repinfo-input.adb
index af76661..78de441 100644
--- a/gcc/ada/repinfo-input.adb
+++ b/gcc/ada/repinfo-input.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2018-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2018-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/repinfo-input.ads b/gcc/ada/repinfo-input.ads
index 0e88c26..b72f514 100644
--- a/gcc/ada/repinfo-input.ads
+++ b/gcc/ada/repinfo-input.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2018-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2018-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/repinfo.adb b/gcc/ada/repinfo.adb
index ecd35e9..28a587f 100644
--- a/gcc/ada/repinfo.adb
+++ b/gcc/ada/repinfo.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1999-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1999-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/repinfo.ads b/gcc/ada/repinfo.ads
index db9919a..e33b6dd 100644
--- a/gcc/ada/repinfo.ads
+++ b/gcc/ada/repinfo.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1999-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1999-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/repinfo.h b/gcc/ada/repinfo.h
index f678c68..07cd908 100644
--- a/gcc/ada/repinfo.h
+++ b/gcc/ada/repinfo.h
@@ -6,7 +6,7 @@
* *
* C Header File *
* *
- * Copyright (C) 1999-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 1999-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/restrict.adb b/gcc/ada/restrict.adb
index 067b931..1cc75be 100644
--- a/gcc/ada/restrict.adb
+++ b/gcc/ada/restrict.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/restrict.ads b/gcc/ada/restrict.ads
index 7d77716..14e094a 100644
--- a/gcc/ada/restrict.ads
+++ b/gcc/ada/restrict.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/rident.ads b/gcc/ada/rident.ads
index f7f6197..647e38f 100644
--- a/gcc/ada/rident.ads
+++ b/gcc/ada/rident.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/rtfinal.c b/gcc/ada/rtfinal.c
index 2394651..f82ffc7 100644
--- a/gcc/ada/rtfinal.c
+++ b/gcc/ada/rtfinal.c
@@ -6,7 +6,7 @@
* *
* C Implementation File *
* *
- * Copyright (C) 2014-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 2014-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/rtinit.c b/gcc/ada/rtinit.c
index f1607b3..717c534 100644
--- a/gcc/ada/rtinit.c
+++ b/gcc/ada/rtinit.c
@@ -6,7 +6,7 @@
* *
* C Implementation File *
* *
- * Copyright (C) 2014-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 2014-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/rtsfind.adb b/gcc/ada/rtsfind.adb
index 278797f..8933ca6 100644
--- a/gcc/ada/rtsfind.adb
+++ b/gcc/ada/rtsfind.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/rtsfind.ads b/gcc/ada/rtsfind.ads
index 33e8472..2b09f69 100644
--- a/gcc/ada/rtsfind.ads
+++ b/gcc/ada/rtsfind.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/runtime.h b/gcc/ada/runtime.h
index 846ba72..da89c68 100644
--- a/gcc/ada/runtime.h
+++ b/gcc/ada/runtime.h
@@ -6,7 +6,7 @@
* *
* C Header File *
* *
- * Copyright (C) 2019-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 2019-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/s-oscons-tmplt.c b/gcc/ada/s-oscons-tmplt.c
index f1140d5..4e512b9 100644
--- a/gcc/ada/s-oscons-tmplt.c
+++ b/gcc/ada/s-oscons-tmplt.c
@@ -7,7 +7,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2000-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2000-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/scans.adb b/gcc/ada/scans.adb
index 6eca5f5..580f90e 100644
--- a/gcc/ada/scans.adb
+++ b/gcc/ada/scans.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/scans.ads b/gcc/ada/scans.ads
index 00381bb..44c20fc 100644
--- a/gcc/ada/scans.ads
+++ b/gcc/ada/scans.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/scil_ll.adb b/gcc/ada/scil_ll.adb
index de10ee4..efb1f33 100644
--- a/gcc/ada/scil_ll.adb
+++ b/gcc/ada/scil_ll.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2010-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2010-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/scil_ll.ads b/gcc/ada/scil_ll.ads
index aff74c0..456c56a 100644
--- a/gcc/ada/scil_ll.ads
+++ b/gcc/ada/scil_ll.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2010-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2010-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/scn.adb b/gcc/ada/scn.adb
index 601834e..e9ecdbc 100644
--- a/gcc/ada/scn.adb
+++ b/gcc/ada/scn.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/scn.ads b/gcc/ada/scn.ads
index 8ad8fb4..02cd98a 100644
--- a/gcc/ada/scn.ads
+++ b/gcc/ada/scn.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/scng.adb b/gcc/ada/scng.adb
index c2707df..0a9c4a8 100644
--- a/gcc/ada/scng.adb
+++ b/gcc/ada/scng.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/scng.ads b/gcc/ada/scng.ads
index db1e643..6a1a11f 100644
--- a/gcc/ada/scng.ads
+++ b/gcc/ada/scng.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/scos.adb b/gcc/ada/scos.adb
index 5564dbd..05e60d0 100644
--- a/gcc/ada/scos.adb
+++ b/gcc/ada/scos.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/scos.ads b/gcc/ada/scos.ads
index 7872380..40af132 100644
--- a/gcc/ada/scos.ads
+++ b/gcc/ada/scos.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/scos.h b/gcc/ada/scos.h
index b7efa76..98ba3f2 100644
--- a/gcc/ada/scos.h
+++ b/gcc/ada/scos.h
@@ -6,7 +6,7 @@
* *
* C Header File *
* *
- * Copyright (C) 2014-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 2014-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/sdefault.ads b/gcc/ada/sdefault.ads
index 99bcd87..1cbb795f 100644
--- a/gcc/ada/sdefault.ads
+++ b/gcc/ada/sdefault.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/seh_init.c b/gcc/ada/seh_init.c
index 42db3a1..0e84284 100644
--- a/gcc/ada/seh_init.c
+++ b/gcc/ada/seh_init.c
@@ -6,7 +6,7 @@
* *
* C Implementation File *
* *
- * Copyright (C) 2005-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 2005-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/sem.adb b/gcc/ada/sem.adb
index 0356ffc..3305b56 100644
--- a/gcc/ada/sem.adb
+++ b/gcc/ada/sem.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem.ads b/gcc/ada/sem.ads
index 10d4bd2..3a19088 100644
--- a/gcc/ada/sem.ads
+++ b/gcc/ada/sem.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_aggr.adb b/gcc/ada/sem_aggr.adb
index d3d4c4a..e381af1 100644
--- a/gcc/ada/sem_aggr.adb
+++ b/gcc/ada/sem_aggr.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_aggr.ads b/gcc/ada/sem_aggr.ads
index 386a161..36827fa 100644
--- a/gcc/ada/sem_aggr.ads
+++ b/gcc/ada/sem_aggr.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_attr.adb b/gcc/ada/sem_attr.adb
index f52103f..2ba674c 100644
--- a/gcc/ada/sem_attr.adb
+++ b/gcc/ada/sem_attr.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_attr.ads b/gcc/ada/sem_attr.ads
index f383ab5..4c9f270 100644
--- a/gcc/ada/sem_attr.ads
+++ b/gcc/ada/sem_attr.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_aux.adb b/gcc/ada/sem_aux.adb
index c8fbdb0..ac0acb7 100644
--- a/gcc/ada/sem_aux.adb
+++ b/gcc/ada/sem_aux.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_aux.ads b/gcc/ada/sem_aux.ads
index 5447fa8..6bed7ae 100644
--- a/gcc/ada/sem_aux.ads
+++ b/gcc/ada/sem_aux.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_case.adb b/gcc/ada/sem_case.adb
index 0842f94..28733d3 100644
--- a/gcc/ada/sem_case.adb
+++ b/gcc/ada/sem_case.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1996-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1996-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_case.ads b/gcc/ada/sem_case.ads
index 0b67866..67cfaa3 100644
--- a/gcc/ada/sem_case.ads
+++ b/gcc/ada/sem_case.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1996-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1996-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_cat.adb b/gcc/ada/sem_cat.adb
index 13dff3d..2edd760 100644
--- a/gcc/ada/sem_cat.adb
+++ b/gcc/ada/sem_cat.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_cat.ads b/gcc/ada/sem_cat.ads
index 66e2fef..0bfb071 100644
--- a/gcc/ada/sem_cat.ads
+++ b/gcc/ada/sem_cat.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_ch10.adb b/gcc/ada/sem_ch10.adb
index ea9bc0d..43adbbc 100644
--- a/gcc/ada/sem_ch10.adb
+++ b/gcc/ada/sem_ch10.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_ch10.ads b/gcc/ada/sem_ch10.ads
index 80a512f..bfac4c2 100644
--- a/gcc/ada/sem_ch10.ads
+++ b/gcc/ada/sem_ch10.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_ch11.adb b/gcc/ada/sem_ch11.adb
index eda3232..e1b6835 100644
--- a/gcc/ada/sem_ch11.adb
+++ b/gcc/ada/sem_ch11.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_ch11.ads b/gcc/ada/sem_ch11.ads
index fe268c5..d159a06 100644
--- a/gcc/ada/sem_ch11.ads
+++ b/gcc/ada/sem_ch11.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_ch12.adb b/gcc/ada/sem_ch12.adb
index 1d17cfa..e7b759c 100644
--- a/gcc/ada/sem_ch12.adb
+++ b/gcc/ada/sem_ch12.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_ch12.ads b/gcc/ada/sem_ch12.ads
index 3bf8fe9..79f8c56 100644
--- a/gcc/ada/sem_ch12.ads
+++ b/gcc/ada/sem_ch12.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_ch13.adb b/gcc/ada/sem_ch13.adb
index 6513afa..ed0e61b 100644
--- a/gcc/ada/sem_ch13.adb
+++ b/gcc/ada/sem_ch13.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_ch13.ads b/gcc/ada/sem_ch13.ads
index 555d302..3c48a49 100644
--- a/gcc/ada/sem_ch13.ads
+++ b/gcc/ada/sem_ch13.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_ch2.adb b/gcc/ada/sem_ch2.adb
index d75c73b..db17023 100644
--- a/gcc/ada/sem_ch2.adb
+++ b/gcc/ada/sem_ch2.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_ch2.ads b/gcc/ada/sem_ch2.ads
index b672950..169c70f 100644
--- a/gcc/ada/sem_ch2.ads
+++ b/gcc/ada/sem_ch2.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_ch3.adb b/gcc/ada/sem_ch3.adb
index 70cf772..894bc95 100644
--- a/gcc/ada/sem_ch3.adb
+++ b/gcc/ada/sem_ch3.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_ch3.ads b/gcc/ada/sem_ch3.ads
index 87f1efb..4cc125a 100644
--- a/gcc/ada/sem_ch3.ads
+++ b/gcc/ada/sem_ch3.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_ch4.adb b/gcc/ada/sem_ch4.adb
index 85ae282d..685a305 100644
--- a/gcc/ada/sem_ch4.adb
+++ b/gcc/ada/sem_ch4.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_ch4.ads b/gcc/ada/sem_ch4.ads
index 6f266a7..7aae598 100644
--- a/gcc/ada/sem_ch4.ads
+++ b/gcc/ada/sem_ch4.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_ch5.adb b/gcc/ada/sem_ch5.adb
index 43dee2b..1c66092 100644
--- a/gcc/ada/sem_ch5.adb
+++ b/gcc/ada/sem_ch5.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_ch5.ads b/gcc/ada/sem_ch5.ads
index 6526506..b6ea1ca 100644
--- a/gcc/ada/sem_ch5.ads
+++ b/gcc/ada/sem_ch5.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_ch6.adb b/gcc/ada/sem_ch6.adb
index 8a7dfef..fb43b04 100644
--- a/gcc/ada/sem_ch6.adb
+++ b/gcc/ada/sem_ch6.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_ch6.ads b/gcc/ada/sem_ch6.ads
index dd2509d..c8c8256 100644
--- a/gcc/ada/sem_ch6.ads
+++ b/gcc/ada/sem_ch6.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_ch7.adb b/gcc/ada/sem_ch7.adb
index 21a2226..7464622 100644
--- a/gcc/ada/sem_ch7.adb
+++ b/gcc/ada/sem_ch7.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_ch7.ads b/gcc/ada/sem_ch7.ads
index 1ff81d8..1dd08e7 100644
--- a/gcc/ada/sem_ch7.ads
+++ b/gcc/ada/sem_ch7.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_ch8.adb b/gcc/ada/sem_ch8.adb
index 451a1b6..125ccc6 100644
--- a/gcc/ada/sem_ch8.adb
+++ b/gcc/ada/sem_ch8.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_ch8.ads b/gcc/ada/sem_ch8.ads
index 246ab87..4e39759 100644
--- a/gcc/ada/sem_ch8.ads
+++ b/gcc/ada/sem_ch8.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_ch9.adb b/gcc/ada/sem_ch9.adb
index 8e6ba4c..5172b62 100644
--- a/gcc/ada/sem_ch9.adb
+++ b/gcc/ada/sem_ch9.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_ch9.ads b/gcc/ada/sem_ch9.ads
index a4a435a..ae4f614 100644
--- a/gcc/ada/sem_ch9.ads
+++ b/gcc/ada/sem_ch9.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_dim.adb b/gcc/ada/sem_dim.adb
index 816870f..45a0f2a 100644
--- a/gcc/ada/sem_dim.adb
+++ b/gcc/ada/sem_dim.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_dim.ads b/gcc/ada/sem_dim.ads
index 5a6bede..76ff2bc 100644
--- a/gcc/ada/sem_dim.ads
+++ b/gcc/ada/sem_dim.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_disp.adb b/gcc/ada/sem_disp.adb
index 6975f4a..e1b35a6 100644
--- a/gcc/ada/sem_disp.adb
+++ b/gcc/ada/sem_disp.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_disp.ads b/gcc/ada/sem_disp.ads
index a2cfec8..ba682c7 100644
--- a/gcc/ada/sem_disp.ads
+++ b/gcc/ada/sem_disp.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_dist.adb b/gcc/ada/sem_dist.adb
index 9e829a8..fa5fa62 100644
--- a/gcc/ada/sem_dist.adb
+++ b/gcc/ada/sem_dist.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_dist.ads b/gcc/ada/sem_dist.ads
index 909ba15..0b4ec5c1 100644
--- a/gcc/ada/sem_dist.ads
+++ b/gcc/ada/sem_dist.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_elab.adb b/gcc/ada/sem_elab.adb
index 46bad04..9205f4c 100644
--- a/gcc/ada/sem_elab.adb
+++ b/gcc/ada/sem_elab.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1997-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1997-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_elab.ads b/gcc/ada/sem_elab.ads
index b0cb8b8..e641063 100644
--- a/gcc/ada/sem_elab.ads
+++ b/gcc/ada/sem_elab.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1997-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1997-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_elim.adb b/gcc/ada/sem_elim.adb
index 3eb6769..d553950 100644
--- a/gcc/ada/sem_elim.adb
+++ b/gcc/ada/sem_elim.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1997-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1997-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_elim.ads b/gcc/ada/sem_elim.ads
index b2d3f30..d4d0e02 100644
--- a/gcc/ada/sem_elim.ads
+++ b/gcc/ada/sem_elim.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1997-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1997-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_eval.adb b/gcc/ada/sem_eval.adb
index f88a00a..42f2668 100644
--- a/gcc/ada/sem_eval.adb
+++ b/gcc/ada/sem_eval.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_eval.ads b/gcc/ada/sem_eval.ads
index 5cb97ba..b79f61f 100644
--- a/gcc/ada/sem_eval.ads
+++ b/gcc/ada/sem_eval.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_intr.adb b/gcc/ada/sem_intr.adb
index 8d551e4..689f810 100644
--- a/gcc/ada/sem_intr.adb
+++ b/gcc/ada/sem_intr.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_intr.ads b/gcc/ada/sem_intr.ads
index 98a7bbe..5d69ae7 100644
--- a/gcc/ada/sem_intr.ads
+++ b/gcc/ada/sem_intr.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_mech.adb b/gcc/ada/sem_mech.adb
index ac07798..13e10a3 100644
--- a/gcc/ada/sem_mech.adb
+++ b/gcc/ada/sem_mech.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1996-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1996-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_mech.ads b/gcc/ada/sem_mech.ads
index 9552b2b5..2f55c43 100644
--- a/gcc/ada/sem_mech.ads
+++ b/gcc/ada/sem_mech.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1996-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1996-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb
index a2e7051..39005aa 100644
--- a/gcc/ada/sem_prag.adb
+++ b/gcc/ada/sem_prag.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_prag.ads b/gcc/ada/sem_prag.ads
index dcfec50..42c38d8 100644
--- a/gcc/ada/sem_prag.ads
+++ b/gcc/ada/sem_prag.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_res.adb b/gcc/ada/sem_res.adb
index cfcbb94..8e9714c 100644
--- a/gcc/ada/sem_res.adb
+++ b/gcc/ada/sem_res.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_res.ads b/gcc/ada/sem_res.ads
index ba4daa2..6b3bf73 100644
--- a/gcc/ada/sem_res.ads
+++ b/gcc/ada/sem_res.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_scil.adb b/gcc/ada/sem_scil.adb
index d720386..73e380e 100644
--- a/gcc/ada/sem_scil.adb
+++ b/gcc/ada/sem_scil.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_scil.ads b/gcc/ada/sem_scil.ads
index ca9e3d4..84127db 100644
--- a/gcc/ada/sem_scil.ads
+++ b/gcc/ada/sem_scil.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2009-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_smem.adb b/gcc/ada/sem_smem.adb
index 1be7b64..811762b 100644
--- a/gcc/ada/sem_smem.adb
+++ b/gcc/ada/sem_smem.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1998-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1998-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_smem.ads b/gcc/ada/sem_smem.ads
index a207141..0ab98a2 100644
--- a/gcc/ada/sem_smem.ads
+++ b/gcc/ada/sem_smem.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1998-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1998-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_type.adb b/gcc/ada/sem_type.adb
index 40de295..b76c6ef 100644
--- a/gcc/ada/sem_type.adb
+++ b/gcc/ada/sem_type.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_type.ads b/gcc/ada/sem_type.ads
index e867885..28120b4 100644
--- a/gcc/ada/sem_type.ads
+++ b/gcc/ada/sem_type.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb
index 01be86c..ef6f382 100644
--- a/gcc/ada/sem_util.adb
+++ b/gcc/ada/sem_util.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_util.ads b/gcc/ada/sem_util.ads
index 2dc75a1..384b9a3 100644
--- a/gcc/ada/sem_util.ads
+++ b/gcc/ada/sem_util.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_warn.adb b/gcc/ada/sem_warn.adb
index 125f5c7..eaf9a25 100644
--- a/gcc/ada/sem_warn.adb
+++ b/gcc/ada/sem_warn.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1999-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1999-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sem_warn.ads b/gcc/ada/sem_warn.ads
index 0e0a51d..2f11968 100644
--- a/gcc/ada/sem_warn.ads
+++ b/gcc/ada/sem_warn.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1999-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1999-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/set_targ.adb b/gcc/ada/set_targ.adb
index 4165615..0d4714b 100644
--- a/gcc/ada/set_targ.adb
+++ b/gcc/ada/set_targ.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2013-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2013-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/set_targ.ads b/gcc/ada/set_targ.ads
index 4342059..8b36d07 100644
--- a/gcc/ada/set_targ.ads
+++ b/gcc/ada/set_targ.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2013-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2013-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sfn_scan.adb b/gcc/ada/sfn_scan.adb
index 6f20ea5..0c7b02e 100644
--- a/gcc/ada/sfn_scan.adb
+++ b/gcc/ada/sfn_scan.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2000-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2000-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sfn_scan.ads b/gcc/ada/sfn_scan.ads
index e59e372..ac56ba9 100644
--- a/gcc/ada/sfn_scan.ads
+++ b/gcc/ada/sfn_scan.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2000-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2000-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sigtramp-arm-qnx.c b/gcc/ada/sigtramp-arm-qnx.c
index be7ecf8..9cc2557 100644
--- a/gcc/ada/sigtramp-arm-qnx.c
+++ b/gcc/ada/sigtramp-arm-qnx.c
@@ -6,7 +6,7 @@
* *
* Asm Implementation File *
* *
- * Copyright (C) 2011-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 2011-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/sigtramp-armdroid.c b/gcc/ada/sigtramp-armdroid.c
index 373c912..c8b2a0a 100644
--- a/gcc/ada/sigtramp-armdroid.c
+++ b/gcc/ada/sigtramp-armdroid.c
@@ -6,7 +6,7 @@
* *
* Asm Implementation File *
* *
- * Copyright (C) 2015-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 2015-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/sigtramp-ios.c b/gcc/ada/sigtramp-ios.c
index 3d9d139..6c9248b 100644
--- a/gcc/ada/sigtramp-ios.c
+++ b/gcc/ada/sigtramp-ios.c
@@ -6,7 +6,7 @@
* *
* Asm Implementation File *
* *
- * Copyright (C) 2015-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 2015-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/sigtramp-qnx.c b/gcc/ada/sigtramp-qnx.c
index e7eabc4..cf6126e 100644
--- a/gcc/ada/sigtramp-qnx.c
+++ b/gcc/ada/sigtramp-qnx.c
@@ -6,7 +6,7 @@
* *
* Asm Implementation File *
* *
- * Copyright (C) 2017-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 2017-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/sigtramp-vxworks-target.h b/gcc/ada/sigtramp-vxworks-target.h
index 6a86b38..d23a503 100644
--- a/gcc/ada/sigtramp-vxworks-target.h
+++ b/gcc/ada/sigtramp-vxworks-target.h
@@ -6,7 +6,7 @@
* *
* Asm Implementation Include File *
* *
- * Copyright (C) 2011-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 2011-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/sigtramp-vxworks.c b/gcc/ada/sigtramp-vxworks.c
index 16f1a62..b1d664d 100644
--- a/gcc/ada/sigtramp-vxworks.c
+++ b/gcc/ada/sigtramp-vxworks.c
@@ -6,7 +6,7 @@
* *
* Asm Implementation File *
* *
- * Copyright (C) 2011-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 2011-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/sigtramp.h b/gcc/ada/sigtramp.h
index b2f87d1..f99bc20 100644
--- a/gcc/ada/sigtramp.h
+++ b/gcc/ada/sigtramp.h
@@ -6,7 +6,7 @@
* *
* C Header File *
* *
- * Copyright (C) 2011-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 2011-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/sinfo-cn.adb b/gcc/ada/sinfo-cn.adb
index 68ab463..291ed9c 100644
--- a/gcc/ada/sinfo-cn.adb
+++ b/gcc/ada/sinfo-cn.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sinfo-cn.ads b/gcc/ada/sinfo-cn.ads
index d425478..6cb12d2 100644
--- a/gcc/ada/sinfo-cn.ads
+++ b/gcc/ada/sinfo-cn.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sinfo-utils.adb b/gcc/ada/sinfo-utils.adb
index b0cc2d3..25bb09d 100644
--- a/gcc/ada/sinfo-utils.adb
+++ b/gcc/ada/sinfo-utils.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sinfo-utils.ads b/gcc/ada/sinfo-utils.ads
index 75d8d25..9acb620 100644
--- a/gcc/ada/sinfo-utils.ads
+++ b/gcc/ada/sinfo-utils.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sinfo.adb b/gcc/ada/sinfo.adb
index 021c16d..020f78b 100644
--- a/gcc/ada/sinfo.adb
+++ b/gcc/ada/sinfo.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sinfo.ads b/gcc/ada/sinfo.ads
index fc4589d..803f5df 100644
--- a/gcc/ada/sinfo.ads
+++ b/gcc/ada/sinfo.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sinput-c.adb b/gcc/ada/sinput-c.adb
index acac2e6..19d4dda 100644
--- a/gcc/ada/sinput-c.adb
+++ b/gcc/ada/sinput-c.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sinput-c.ads b/gcc/ada/sinput-c.ads
index 9035031..b08fdaf 100644
--- a/gcc/ada/sinput-c.ads
+++ b/gcc/ada/sinput-c.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sinput-d.adb b/gcc/ada/sinput-d.adb
index da0a010..5d15603 100644
--- a/gcc/ada/sinput-d.adb
+++ b/gcc/ada/sinput-d.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2002-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sinput-d.ads b/gcc/ada/sinput-d.ads
index f6153f8..7066718 100644
--- a/gcc/ada/sinput-d.ads
+++ b/gcc/ada/sinput-d.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sinput-l.adb b/gcc/ada/sinput-l.adb
index 359c0fb..1805cb4 100644
--- a/gcc/ada/sinput-l.adb
+++ b/gcc/ada/sinput-l.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sinput-l.ads b/gcc/ada/sinput-l.ads
index e69be77..fd59cd5 100644
--- a/gcc/ada/sinput-l.ads
+++ b/gcc/ada/sinput-l.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sinput.adb b/gcc/ada/sinput.adb
index dc6b55a..ae86f1f 100644
--- a/gcc/ada/sinput.adb
+++ b/gcc/ada/sinput.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sinput.ads b/gcc/ada/sinput.ads
index e30487e..b223147 100644
--- a/gcc/ada/sinput.ads
+++ b/gcc/ada/sinput.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/snames.adb-tmpl b/gcc/ada/snames.adb-tmpl
index 9b087e6..7f270b4 100644
--- a/gcc/ada/snames.adb-tmpl
+++ b/gcc/ada/snames.adb-tmpl
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2021, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/snames.ads-tmpl b/gcc/ada/snames.ads-tmpl
index 277b1ac..35711a3 100644
--- a/gcc/ada/snames.ads-tmpl
+++ b/gcc/ada/snames.ads-tmpl
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2021, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/socket.c b/gcc/ada/socket.c
index 1f41ada..75b4288 100644
--- a/gcc/ada/socket.c
+++ b/gcc/ada/socket.c
@@ -6,7 +6,7 @@
* *
* C Implementation File *
* *
- * Copyright (C) 2003-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 2003-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/spark_xrefs.adb b/gcc/ada/spark_xrefs.adb
index 68455c2..b3eb617 100644
--- a/gcc/ada/spark_xrefs.adb
+++ b/gcc/ada/spark_xrefs.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/spark_xrefs.ads b/gcc/ada/spark_xrefs.ads
index 3b19a66..a6dec42 100644
--- a/gcc/ada/spark_xrefs.ads
+++ b/gcc/ada/spark_xrefs.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2011-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sprint.adb b/gcc/ada/sprint.adb
index f54d409..938b378 100644
--- a/gcc/ada/sprint.adb
+++ b/gcc/ada/sprint.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sprint.ads b/gcc/ada/sprint.ads
index 0d3c896..92f5d41 100644
--- a/gcc/ada/sprint.ads
+++ b/gcc/ada/sprint.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/stand.ads b/gcc/ada/stand.ads
index 3be3543..2e32ef7 100644
--- a/gcc/ada/stand.ads
+++ b/gcc/ada/stand.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/stringt.adb b/gcc/ada/stringt.adb
index ae70947..29d0b72 100644
--- a/gcc/ada/stringt.adb
+++ b/gcc/ada/stringt.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/stringt.ads b/gcc/ada/stringt.ads
index ee34b08..b0e8acb 100644
--- a/gcc/ada/stringt.ads
+++ b/gcc/ada/stringt.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/stringt.h b/gcc/ada/stringt.h
index 49df738..9821928 100644
--- a/gcc/ada/stringt.h
+++ b/gcc/ada/stringt.h
@@ -6,7 +6,7 @@
* *
* C Header File *
* *
- * Copyright (C) 1992-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 1992-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/strub.adb b/gcc/ada/strub.adb
index 781763a..4ad09ce 100644
--- a/gcc/ada/strub.adb
+++ b/gcc/ada/strub.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2021-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2021-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/strub.ads b/gcc/ada/strub.ads
index 33e88cb..fd02d25 100644
--- a/gcc/ada/strub.ads
+++ b/gcc/ada/strub.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2021-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2021-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/style.adb b/gcc/ada/style.adb
index e21730b..e73bfdd 100644
--- a/gcc/ada/style.adb
+++ b/gcc/ada/style.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/style.ads b/gcc/ada/style.ads
index 726abcd..dc8b337 100644
--- a/gcc/ada/style.ads
+++ b/gcc/ada/style.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/styleg.adb b/gcc/ada/styleg.adb
index a7524ec..5c439c9 100644
--- a/gcc/ada/styleg.adb
+++ b/gcc/ada/styleg.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/styleg.ads b/gcc/ada/styleg.ads
index 7a610a1..c86bfb4 100644
--- a/gcc/ada/styleg.ads
+++ b/gcc/ada/styleg.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/stylesw.adb b/gcc/ada/stylesw.adb
index 1b2acfb..7600445 100644
--- a/gcc/ada/stylesw.adb
+++ b/gcc/ada/stylesw.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/stylesw.ads b/gcc/ada/stylesw.ads
index 18428e1..05663c3 100644
--- a/gcc/ada/stylesw.ads
+++ b/gcc/ada/stylesw.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/switch-b.adb b/gcc/ada/switch-b.adb
index 0fbe442..2c4fc0c 100644
--- a/gcc/ada/switch-b.adb
+++ b/gcc/ada/switch-b.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/switch-b.ads b/gcc/ada/switch-b.ads
index 436bead..0e06e6c 100644
--- a/gcc/ada/switch-b.ads
+++ b/gcc/ada/switch-b.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/switch-c.adb b/gcc/ada/switch-c.adb
index bbbb536..7668fce 100644
--- a/gcc/ada/switch-c.adb
+++ b/gcc/ada/switch-c.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/switch-c.ads b/gcc/ada/switch-c.ads
index 98f52f8..9b04f7c 100644
--- a/gcc/ada/switch-c.ads
+++ b/gcc/ada/switch-c.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/switch-m.adb b/gcc/ada/switch-m.adb
index e2472fb..ea6769c 100644
--- a/gcc/ada/switch-m.adb
+++ b/gcc/ada/switch-m.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/switch-m.ads b/gcc/ada/switch-m.ads
index 91076f6..c354352 100644
--- a/gcc/ada/switch-m.ads
+++ b/gcc/ada/switch-m.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/switch.adb b/gcc/ada/switch.adb
index 1541ee8..742d4ea 100644
--- a/gcc/ada/switch.adb
+++ b/gcc/ada/switch.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/switch.ads b/gcc/ada/switch.ads
index f2e3d70..0ac2474 100644
--- a/gcc/ada/switch.ads
+++ b/gcc/ada/switch.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/sysdep.c b/gcc/ada/sysdep.c
index 1cb1f28..443b11f 100644
--- a/gcc/ada/sysdep.c
+++ b/gcc/ada/sysdep.c
@@ -6,7 +6,7 @@
* *
* C Implementation File *
* *
- * Copyright (C) 1992-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 1992-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/table.adb b/gcc/ada/table.adb
index 05b907f..e879b12 100644
--- a/gcc/ada/table.adb
+++ b/gcc/ada/table.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/table.ads b/gcc/ada/table.ads
index e0f62c2..567d651 100644
--- a/gcc/ada/table.ads
+++ b/gcc/ada/table.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/targext.c b/gcc/ada/targext.c
index 544c74e..a3ca28b 100644
--- a/gcc/ada/targext.c
+++ b/gcc/ada/targext.c
@@ -6,7 +6,7 @@
* *
* C Implementation File *
* *
- * Copyright (C) 2005-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 2005-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/targparm.adb b/gcc/ada/targparm.adb
index d470145..96f3cd1 100644
--- a/gcc/ada/targparm.adb
+++ b/gcc/ada/targparm.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1999-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1999-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/targparm.ads b/gcc/ada/targparm.ads
index c76b4e7..050eb25 100644
--- a/gcc/ada/targparm.ads
+++ b/gcc/ada/targparm.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1999-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1999-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/tbuild.adb b/gcc/ada/tbuild.adb
index a8b0437..51fa43c 100644
--- a/gcc/ada/tbuild.adb
+++ b/gcc/ada/tbuild.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/tbuild.ads b/gcc/ada/tbuild.ads
index bb2c70c..64296e6 100644
--- a/gcc/ada/tbuild.ads
+++ b/gcc/ada/tbuild.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/tempdir.adb b/gcc/ada/tempdir.adb
index bca0e7a..08ae188 100644
--- a/gcc/ada/tempdir.adb
+++ b/gcc/ada/tempdir.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2003-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2003-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/tempdir.ads b/gcc/ada/tempdir.ads
index f264bb4..1c7c92b 100644
--- a/gcc/ada/tempdir.ads
+++ b/gcc/ada/tempdir.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2003-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2003-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/terminals.c b/gcc/ada/terminals.c
index 21784b1..05af82c 100644
--- a/gcc/ada/terminals.c
+++ b/gcc/ada/terminals.c
@@ -6,7 +6,7 @@
* *
* C Implementation File *
* *
- * Copyright (C) 2008-2023, AdaCore *
+ * Copyright (C) 2008-2024, AdaCore *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/tracebak.c b/gcc/ada/tracebak.c
index 5afcc81..13ab707 100644
--- a/gcc/ada/tracebak.c
+++ b/gcc/ada/tracebak.c
@@ -6,7 +6,7 @@
* *
* C Implementation File *
* *
- * Copyright (C) 2000-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 2000-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/treepr.adb b/gcc/ada/treepr.adb
index 7e13544..c5875f0 100644
--- a/gcc/ada/treepr.adb
+++ b/gcc/ada/treepr.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/treepr.ads b/gcc/ada/treepr.ads
index 84d6d87..f2b9e8e 100644
--- a/gcc/ada/treepr.ads
+++ b/gcc/ada/treepr.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/ttypes.ads b/gcc/ada/ttypes.ads
index 28c6376..0c1ef3d 100644
--- a/gcc/ada/ttypes.ads
+++ b/gcc/ada/ttypes.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/types.adb b/gcc/ada/types.adb
index 2cfe88d..8b85205 100644
--- a/gcc/ada/types.adb
+++ b/gcc/ada/types.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/types.ads b/gcc/ada/types.ads
index b7612bf..8a1d905 100644
--- a/gcc/ada/types.ads
+++ b/gcc/ada/types.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/types.h b/gcc/ada/types.h
index aa0b2a6..9bfbdfc 100644
--- a/gcc/ada/types.h
+++ b/gcc/ada/types.h
@@ -6,7 +6,7 @@
* *
* C Header File *
* *
- * Copyright (C) 1992-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 1992-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/uintp.adb b/gcc/ada/uintp.adb
index f58353b..1957928 100644
--- a/gcc/ada/uintp.adb
+++ b/gcc/ada/uintp.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/uintp.ads b/gcc/ada/uintp.ads
index af32769..c80b494 100644
--- a/gcc/ada/uintp.ads
+++ b/gcc/ada/uintp.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/uintp.h b/gcc/ada/uintp.h
index 337ac7c..3fc2ca6 100644
--- a/gcc/ada/uintp.h
+++ b/gcc/ada/uintp.h
@@ -6,7 +6,7 @@
* *
* C Header File *
* *
- * Copyright (C) 1992-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 1992-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/uname.adb b/gcc/ada/uname.adb
index 96aa16a..0857478 100644
--- a/gcc/ada/uname.adb
+++ b/gcc/ada/uname.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/uname.ads b/gcc/ada/uname.ads
index dc0a297..57ff8a6 100644
--- a/gcc/ada/uname.ads
+++ b/gcc/ada/uname.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/urealp.adb b/gcc/ada/urealp.adb
index 4e2aba4..147ac28 100644
--- a/gcc/ada/urealp.adb
+++ b/gcc/ada/urealp.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/urealp.ads b/gcc/ada/urealp.ads
index 5c9f62b..4224440 100644
--- a/gcc/ada/urealp.ads
+++ b/gcc/ada/urealp.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/urealp.h b/gcc/ada/urealp.h
index 040f14e..8ddca60 100644
--- a/gcc/ada/urealp.h
+++ b/gcc/ada/urealp.h
@@ -6,7 +6,7 @@
* *
* C Header File *
* *
- * Copyright (C) 1992-2023, Free Software Foundation, Inc. *
+ * Copyright (C) 1992-2024, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/usage.adb b/gcc/ada/usage.adb
index 681ece5..85b371a 100644
--- a/gcc/ada/usage.adb
+++ b/gcc/ada/usage.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/usage.ads b/gcc/ada/usage.ads
index dd4445f..832e0c4 100644
--- a/gcc/ada/usage.ads
+++ b/gcc/ada/usage.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/validsw.adb b/gcc/ada/validsw.adb
index 06a4ae7..b249134 100644
--- a/gcc/ada/validsw.adb
+++ b/gcc/ada/validsw.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/validsw.ads b/gcc/ada/validsw.ads
index 06ba1f7..9c51a04 100644
--- a/gcc/ada/validsw.ads
+++ b/gcc/ada/validsw.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/vast.adb b/gcc/ada/vast.adb
index 51e6c27..d2e6adf 100644
--- a/gcc/ada/vast.adb
+++ b/gcc/ada/vast.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/vast.ads b/gcc/ada/vast.ads
index 228f20a..2a38d99 100644
--- a/gcc/ada/vast.ads
+++ b/gcc/ada/vast.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2020-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/vx_stack_info.c b/gcc/ada/vx_stack_info.c
index a625892..d6fff28 100644
--- a/gcc/ada/vx_stack_info.c
+++ b/gcc/ada/vx_stack_info.c
@@ -6,7 +6,7 @@
* *
* C Implementation File *
* *
- * Copyright (C) 2007-2009 Free Software Foundation, Inc. *
+ * Copyright (C) 2007-2024 Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
diff --git a/gcc/ada/warnsw.adb b/gcc/ada/warnsw.adb
index 1931e02..4c6934d 100644
--- a/gcc/ada/warnsw.adb
+++ b/gcc/ada/warnsw.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1999-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1999-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/warnsw.ads b/gcc/ada/warnsw.ads
index cee1f30..5dab970 100644
--- a/gcc/ada/warnsw.ads
+++ b/gcc/ada/warnsw.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1999-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1999-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/widechar.adb b/gcc/ada/widechar.adb
index c932d044..3324706 100644
--- a/gcc/ada/widechar.adb
+++ b/gcc/ada/widechar.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/widechar.ads b/gcc/ada/widechar.ads
index 327bb9e..289a808 100644
--- a/gcc/ada/widechar.ads
+++ b/gcc/ada/widechar.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/xoscons.adb b/gcc/ada/xoscons.adb
index a8de225..001d4a9 100644
--- a/gcc/ada/xoscons.adb
+++ b/gcc/ada/xoscons.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2008-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 2008-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/xsnamest.adb b/gcc/ada/xsnamest.adb
index 576cf76..3ee31d7 100644
--- a/gcc/ada/xsnamest.adb
+++ b/gcc/ada/xsnamest.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/xutil.adb b/gcc/ada/xutil.adb
index daf067d..5fe3e1f 100644
--- a/gcc/ada/xutil.adb
+++ b/gcc/ada/xutil.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/xutil.ads b/gcc/ada/xutil.ads
index 1bab9e4..169d88b 100644
--- a/gcc/ada/xutil.ads
+++ b/gcc/ada/xutil.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2023, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2024, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/alias.cc b/gcc/alias.cc
index b2ec480..808e209 100644
--- a/gcc/alias.cc
+++ b/gcc/alias.cc
@@ -1400,26 +1400,6 @@ unique_base_value_p (rtx x)
return GET_CODE (x) == ADDRESS && GET_MODE (x) == Pmode;
}
-/* Return true if X is known to be a base value. */
-
-static bool
-known_base_value_p (rtx x)
-{
- switch (GET_CODE (x))
- {
- case LABEL_REF:
- case SYMBOL_REF:
- return true;
-
- case ADDRESS:
- /* Arguments may or may not be bases; we don't know for sure. */
- return GET_MODE (x) != VOIDmode;
-
- default:
- return false;
- }
-}
-
/* Inside SRC, the source of a SET, find a base address. */
static rtx
@@ -1490,46 +1470,12 @@ find_base_value (rtx src)
case PLUS:
case MINUS:
{
- rtx temp, src_0 = XEXP (src, 0), src_1 = XEXP (src, 1);
+ rtx src_0 = XEXP (src, 0), src_1 = XEXP (src, 1);
- /* If either operand is a REG that is a known pointer, then it
- is the base. */
- if (REG_P (src_0) && REG_POINTER (src_0))
+ /* If either operand is a CONST_INT, then the other is the base. */
+ if (CONST_INT_P (src_1))
return find_base_value (src_0);
- if (REG_P (src_1) && REG_POINTER (src_1))
- return find_base_value (src_1);
-
- /* If either operand is a REG, then see if we already have
- a known value for it. */
- if (REG_P (src_0))
- {
- temp = find_base_value (src_0);
- if (temp != 0)
- src_0 = temp;
- }
-
- if (REG_P (src_1))
- {
- temp = find_base_value (src_1);
- if (temp!= 0)
- src_1 = temp;
- }
-
- /* If either base is named object or a special address
- (like an argument or stack reference), then use it for the
- base term. */
- if (src_0 != 0 && known_base_value_p (src_0))
- return src_0;
-
- if (src_1 != 0 && known_base_value_p (src_1))
- return src_1;
-
- /* Guess which operand is the base address:
- If either operand is a symbol, then it is the base. If
- either operand is a CONST_INT, then the other is the base. */
- if (CONST_INT_P (src_1) || CONSTANT_P (src_0))
- return find_base_value (src_0);
- else if (CONST_INT_P (src_0) || CONSTANT_P (src_1))
+ else if (CONST_INT_P (src_0))
return find_base_value (src_1);
return 0;
@@ -2077,31 +2023,13 @@ find_base_term (rtx x, vec<std::pair<cselib_val *,
if (tmp1 == pic_offset_table_rtx && CONSTANT_P (tmp2))
return find_base_term (tmp2, visited_vals);
- /* If either operand is known to be a pointer, then prefer it
- to determine the base term. */
- if (REG_P (tmp1) && REG_POINTER (tmp1))
- ;
- else if (REG_P (tmp2) && REG_POINTER (tmp2))
- std::swap (tmp1, tmp2);
- /* If second argument is constant which has base term, prefer it
- over variable tmp1. See PR64025. */
- else if (CONSTANT_P (tmp2) && !CONST_INT_P (tmp2))
+ if (CONST_INT_P (tmp1))
std::swap (tmp1, tmp2);
- /* Go ahead and find the base term for both operands. If either base
- term is from a pointer or is a named object or a special address
- (like an argument or stack reference), then use it for the
- base term. */
- rtx base = find_base_term (tmp1, visited_vals);
- if (base != NULL_RTX
- && ((REG_P (tmp1) && REG_POINTER (tmp1))
- || known_base_value_p (base)))
- return base;
- base = find_base_term (tmp2, visited_vals);
- if (base != NULL_RTX
- && ((REG_P (tmp2) && REG_POINTER (tmp2))
- || known_base_value_p (base)))
- return base;
+ /* We can only handle binary operators when one of the operands
+ never leads to a base value. */
+ if (CONST_INT_P (tmp2))
+ return find_base_term (tmp1, visited_vals);
/* We could not determine which of the two operands was the
base register and which was the index. So we can determine
diff --git a/gcc/analyzer/ChangeLog b/gcc/analyzer/ChangeLog
index 2d2d217..338a782 100644
--- a/gcc/analyzer/ChangeLog
+++ b/gcc/analyzer/ChangeLog
@@ -1,3 +1,56 @@
+2024-01-25 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/112969
+ * store.cc (binding_cluster::maybe_get_compound_binding): When
+ populating default_map, express the bit-range of the default key
+ for REG relative to REG, rather than to the base region.
+
+2024-01-24 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/112977
+ * engine.cc (impl_region_model_context::on_liveness_change): Pass
+ m_ext_state to sm_state_map::on_liveness_change.
+ * program-state.cc (sm_state_map::on_svalue_leak): Guard removal
+ of map entry based on can_purge_p.
+ (sm_state_map::on_liveness_change): Add ext_state param. Add
+ workaround for bad interaction between state purging and
+ alt-inherited sm-state.
+ * program-state.h (sm_state_map::on_liveness_change): Add
+ ext_state param.
+ * sm-taint.cc
+ (taint_state_machine::has_alt_get_inherited_state_p): New.
+ (taint_state_machine::can_purge_p): Return false for "has_lb" and
+ "has_ub".
+ * sm.h (state_machine::has_alt_get_inherited_state_p): New vfunc.
+
+2024-01-18 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/111361
+ * region-model.cc (svalue_byte_range_has_null_terminator_1): The
+ initial byte of an all-zeroes SVAL is a zero byte. Remove
+ gcc_unreachable from SK_CONSTANT for constants that aren't
+ STRING_CST or INTEGER_CST.
+
+2024-01-18 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/112811
+ * region-model.cc (fragment::dump_to_pp): New.
+ (fragment::has_null_terminator): Convert to...
+ (svalue_byte_range_has_null_terminator_1): ...this new function,
+ updating to use a byte_range relative to the start of the svalue.
+ (svalue_byte_range_has_null_terminator): New.
+ (fragment::string_cst_has_null_terminator): Convert to...
+ (string_cst_has_null_terminator): ...this, updating to use a
+ byte_range relative to the start of the svalue.
+ (iterable_cluster::dump_to_pp): New.
+ (region_model::scan_for_null_terminator): Add logging, moving body
+ to...
+ (region_model::scan_for_null_terminator_1): ...this new function,
+ adding more logging, and updating to use
+ svalue_byte_range_has_null_terminator.
+ * region-model.h (region_model::scan_for_null_terminator_1): New
+ decl.
+
2024-01-16 David Malcolm <dmalcolm@redhat.com>
PR analyzer/106229
diff --git a/gcc/analyzer/engine.cc b/gcc/analyzer/engine.cc
index fde8412..44ff20c 100644
--- a/gcc/analyzer/engine.cc
+++ b/gcc/analyzer/engine.cc
@@ -179,7 +179,7 @@ on_liveness_change (const svalue_set &live_svalues,
const region_model *model)
{
for (sm_state_map *smap : m_new_state->m_checker_states)
- smap->on_liveness_change (live_svalues, model, this);
+ smap->on_liveness_change (live_svalues, model, m_ext_state, this);
}
void
diff --git a/gcc/analyzer/program-state.cc b/gcc/analyzer/program-state.cc
index 888f2a9..55dd6ca 100644
--- a/gcc/analyzer/program-state.cc
+++ b/gcc/analyzer/program-state.cc
@@ -560,9 +560,10 @@ sm_state_map::on_svalue_leak (const svalue *sval,
{
if (state_machine::state_t state = get_state (sval, ctxt->m_ext_state))
{
- if (!m_sm.can_purge_p (state))
+ if (m_sm.can_purge_p (state))
+ m_map.remove (sval);
+ else
ctxt->on_state_leak (m_sm, sval, state);
- m_map.remove (sval);
}
}
@@ -572,6 +573,7 @@ sm_state_map::on_svalue_leak (const svalue *sval,
void
sm_state_map::on_liveness_change (const svalue_set &live_svalues,
const region_model *model,
+ const extrinsic_state &ext_state,
impl_region_model_context *ctxt)
{
svalue_set svals_to_unset;
@@ -605,9 +607,68 @@ sm_state_map::on_liveness_change (const svalue_set &live_svalues,
ctxt->on_state_leak (m_sm, sval, e.m_state);
}
+ sm_state_map old_sm_map = *this;
+
for (svalue_set::iterator iter = svals_to_unset.begin ();
iter != svals_to_unset.end (); ++iter)
m_map.remove (*iter);
+
+ /* For state machines like "taint" where states can be
+ alt-inherited from other svalues, ensure that state purging doesn't
+ make us lose sm-state.
+
+ Consider e.g.:
+
+ make_tainted(foo);
+ if (foo.field > 128)
+ return;
+ arr[foo.field].f1 = v1;
+
+ where the last line is:
+
+ (A): _t1 = foo.field;
+ (B): _t2 = _t1 * sizeof(arr[0]);
+ (C): [arr + _t2].f1 = val;
+
+ At (A), foo is 'tainted' and foo.field is 'has_ub'.
+ After (B), foo.field's value (in _t1) is no longer directly
+ within LIVE_SVALUES, so with state purging enabled, we would
+ erroneously purge the "has_ub" state from the svalue.
+
+ Given that _t2's value's state comes from _t1's value's state,
+ we need to preserve that information.
+
+ Hence for all svalues that have had their explicit sm-state unset,
+ having their sm-state being unset, determine if doing so has changed
+ their effective state, and if so, explicitly set their state.
+
+ For example, in the above, unsetting the "has_ub" for _t1's value means
+ that _t2's effective value changes from "has_ub" (from alt-inherited
+ from _t1's value) to "tainted" (inherited from "foo"'s value).
+
+ For such cases, preserve the effective state by explicitly setting the
+ new state. In the above example, this means explicitly setting _t2's
+ value to the value ("has_ub") it was previously alt-inheriting from _t1's
+ value. */
+ if (m_sm.has_alt_get_inherited_state_p ())
+ {
+ auto_vec<const svalue *> svalues_needing_state;
+ for (auto unset_sval : svals_to_unset)
+ {
+ const state_machine::state_t old_state
+ = old_sm_map.get_state (unset_sval, ext_state);
+ const state_machine::state_t new_state
+ = get_state (unset_sval, ext_state);
+ if (new_state != old_state)
+ svalues_needing_state.safe_push (unset_sval);
+ }
+ for (auto sval : svalues_needing_state)
+ {
+ const state_machine::state_t old_state
+ = old_sm_map.get_state (sval, ext_state);
+ impl_set_state (sval, old_state, nullptr, ext_state);
+ }
+ }
}
/* Purge state from SVAL (in response to a call to an unknown function). */
diff --git a/gcc/analyzer/program-state.h b/gcc/analyzer/program-state.h
index 50bf2ab2..69bf931 100644
--- a/gcc/analyzer/program-state.h
+++ b/gcc/analyzer/program-state.h
@@ -155,6 +155,7 @@ public:
impl_region_model_context *ctxt);
void on_liveness_change (const svalue_set &live_svalues,
const region_model *model,
+ const extrinsic_state &ext_state,
impl_region_model_context *ctxt);
void on_unknown_change (const svalue *sval,
diff --git a/gcc/analyzer/region-model.cc b/gcc/analyzer/region-model.cc
index 95a52f6..dbb2149 100644
--- a/gcc/analyzer/region-model.cc
+++ b/gcc/analyzer/region-model.cc
@@ -3528,144 +3528,213 @@ struct fragment
return byte_range::cmp (f1->m_byte_range, f2->m_byte_range);
}
- /* Determine if there is a zero terminator somewhere in the
- bytes of this fragment, starting at START_READ_OFFSET (which
- is absolute to the start of the cluster as a whole), and stopping
- at the end of this fragment.
-
- Return a tristate:
- - true if there definitely is a zero byte, writing to *OUT_BYTES_READ
- the number of bytes from that would be read, including the zero byte.
- - false if there definitely isn't a zero byte
- - unknown if we don't know. */
- tristate has_null_terminator (byte_offset_t start_read_offset,
- byte_offset_t *out_bytes_read) const
+ void
+ dump_to_pp (pretty_printer *pp) const
{
- byte_offset_t rel_start_read_offset
- = start_read_offset - m_byte_range.get_start_byte_offset ();
- gcc_assert (rel_start_read_offset >= 0);
- byte_offset_t available_bytes
- = (m_byte_range.get_next_byte_offset () - start_read_offset);
- gcc_assert (available_bytes >= 0);
-
- if (rel_start_read_offset > INT_MAX)
- return tristate::TS_UNKNOWN;
- HOST_WIDE_INT rel_start_read_offset_hwi = rel_start_read_offset.slow ();
-
- if (available_bytes > INT_MAX)
- return tristate::TS_UNKNOWN;
- HOST_WIDE_INT available_bytes_hwi = available_bytes.slow ();
-
- switch (m_sval->get_kind ())
+ pp_string (pp, "fragment(");
+ m_byte_range.dump_to_pp (pp);
+ pp_string (pp, ", sval: ");
+ if (m_sval)
+ m_sval->dump_to_pp (pp, true);
+ else
+ pp_string (pp, "nullptr");
+ pp_string (pp, ")");
+ }
+
+ byte_range m_byte_range;
+ const svalue *m_sval;
+};
+
+/* Determine if there is a zero terminator somewhere in the
+ part of STRING_CST covered by BYTES (where BYTES is relative to the
+ start of the constant).
+
+ Return a tristate:
+ - true if there definitely is a zero byte, writing to *OUT_BYTES_READ
+ the number of bytes from that would be read, including the zero byte.
+ - false if there definitely isn't a zero byte
+ - unknown if we don't know. */
+
+static tristate
+string_cst_has_null_terminator (tree string_cst,
+ const byte_range &bytes,
+ byte_offset_t *out_bytes_read)
+{
+ gcc_assert (bytes.m_start_byte_offset >= 0);
+ gcc_assert (bytes.m_start_byte_offset < TREE_STRING_LENGTH (string_cst));
+
+ /* Look for the first 0 byte within STRING_CST
+ from START_READ_OFFSET onwards. */
+ const byte_offset_t num_bytes_to_search
+ = std::min<byte_offset_t> ((TREE_STRING_LENGTH (string_cst)
+ - bytes.m_start_byte_offset),
+ bytes.m_size_in_bytes);
+ const char *start = (TREE_STRING_POINTER (string_cst)
+ + bytes.m_start_byte_offset.slow ());
+ if (num_bytes_to_search >= 0)
+ if (const void *p = memchr (start, 0, bytes.m_size_in_bytes.slow ()))
{
- case SK_CONSTANT:
- {
- tree cst
- = as_a <const constant_svalue *> (m_sval)->get_constant ();
- switch (TREE_CODE (cst))
- {
- case STRING_CST:
- return string_cst_has_null_terminator (cst,
- rel_start_read_offset_hwi,
- available_bytes_hwi,
- out_bytes_read);
- case INTEGER_CST:
- if (rel_start_read_offset_hwi == 0
- && integer_onep (TYPE_SIZE_UNIT (TREE_TYPE (cst))))
- {
- /* Model accesses to the initial byte of a 1-byte
- INTEGER_CST. */
- if (zerop (cst))
- {
- *out_bytes_read = 1;
- return tristate (true);
- }
- else
- {
- *out_bytes_read = available_bytes;
- return tristate (false);
- }
- }
- /* Treat any other access to an INTEGER_CST as unknown. */
- return tristate::TS_UNKNOWN;
+ *out_bytes_read = (const char *)p - start + 1;
+ return tristate (true);
+ }
- default:
- gcc_unreachable ();
- break;
- }
- }
- break;
+ *out_bytes_read = bytes.m_size_in_bytes;
+ return tristate (false);
+}
- case SK_INITIAL:
- {
- const initial_svalue *initial_sval = (const initial_svalue *)m_sval;
- const region *reg = initial_sval->get_region ();
- if (const string_region *string_reg = reg->dyn_cast_string_region ())
- {
- tree string_cst = string_reg->get_string_cst ();
- return string_cst_has_null_terminator (string_cst,
- rel_start_read_offset_hwi,
- available_bytes_hwi,
- out_bytes_read);
- }
- return tristate::TS_UNKNOWN;
- }
- break;
+static tristate
+svalue_byte_range_has_null_terminator (const svalue *sval,
+ const byte_range &bytes,
+ byte_offset_t *out_bytes_read,
+ logger *logger);
- case SK_BITS_WITHIN:
- {
- const bits_within_svalue *bits_within_sval
- = (const bits_within_svalue *)m_sval;
- byte_range bytes (0, 0);
- if (bits_within_sval->get_bits ().as_byte_range (&bytes))
- {
- const svalue *inner_sval = bits_within_sval->get_inner_svalue ();
- fragment f (byte_range
- (start_read_offset - bytes.get_start_bit_offset (),
- std::max<byte_size_t> (bytes.m_size_in_bytes,
- available_bytes)),
- inner_sval);
- return f.has_null_terminator (start_read_offset, out_bytes_read);
- }
- }
- break;
+/* Determine if there is a zero terminator somewhere in the
+ part of SVAL covered by BYTES (where BYTES is relative to the svalue).
- default:
- // TODO: it may be possible to handle other cases here.
- break;
+ Return a tristate:
+ - true if there definitely is a zero byte, writing to *OUT_BYTES_READ
+ the number of bytes from that would be read, including the zero byte.
+ - false if there definitely isn't a zero byte
+ - unknown if we don't know.
+
+ Use LOGGER (if non-null) for any logging. */
+
+static tristate
+svalue_byte_range_has_null_terminator_1 (const svalue *sval,
+ const byte_range &bytes,
+ byte_offset_t *out_bytes_read,
+ logger *logger)
+{
+ if (bytes.m_start_byte_offset == 0
+ && sval->all_zeroes_p ())
+ {
+ /* The initial byte of an all-zeroes SVAL is a zero byte. */
+ *out_bytes_read = 1;
+ return tristate (true);
+ }
+
+ switch (sval->get_kind ())
+ {
+ case SK_CONSTANT:
+ {
+ tree cst
+ = as_a <const constant_svalue *> (sval)->get_constant ();
+ switch (TREE_CODE (cst))
+ {
+ case STRING_CST:
+ return string_cst_has_null_terminator (cst, bytes, out_bytes_read);
+ case INTEGER_CST:
+ if (bytes.m_start_byte_offset == 0
+ && integer_onep (TYPE_SIZE_UNIT (TREE_TYPE (cst))))
+ {
+ /* Model accesses to the initial byte of a 1-byte
+ INTEGER_CST. */
+ *out_bytes_read = 1;
+ if (zerop (cst))
+ return tristate (true);
+ else
+ return tristate (false);
+ }
+ /* Treat any other access to an INTEGER_CST as unknown. */
+ return tristate::TS_UNKNOWN;
+
+ default:
+ break;
+ }
}
- return tristate::TS_UNKNOWN;
- }
+ break;
- static tristate
- string_cst_has_null_terminator (tree string_cst,
- HOST_WIDE_INT rel_start_read_offset_hwi,
- HOST_WIDE_INT available_bytes_hwi,
- byte_offset_t *out_bytes_read)
- {
- /* Look for the first 0 byte within STRING_CST
- from START_READ_OFFSET onwards. */
- const HOST_WIDE_INT num_bytes_to_search
- = std::min<HOST_WIDE_INT> ((TREE_STRING_LENGTH (string_cst)
- - rel_start_read_offset_hwi),
- available_bytes_hwi);
- const char *start = (TREE_STRING_POINTER (string_cst)
- + rel_start_read_offset_hwi);
- if (num_bytes_to_search >= 0)
- if (const void *p = memchr (start, 0,
- num_bytes_to_search))
- {
- *out_bytes_read = (const char *)p - start + 1;
- return tristate (true);
- }
+ case SK_INITIAL:
+ {
+ const initial_svalue *initial_sval = (const initial_svalue *)sval;
+ const region *reg = initial_sval->get_region ();
+ if (const string_region *string_reg = reg->dyn_cast_string_region ())
+ {
+ tree string_cst = string_reg->get_string_cst ();
+ return string_cst_has_null_terminator (string_cst,
+ bytes,
+ out_bytes_read);
+ }
+ return tristate::TS_UNKNOWN;
+ }
+ break;
- *out_bytes_read = available_bytes_hwi;
- return tristate (false);
- }
+ case SK_BITS_WITHIN:
+ {
+ const bits_within_svalue *bits_within_sval
+ = (const bits_within_svalue *)sval;
+ byte_range bytes_within_inner (0, 0);
+ if (bits_within_sval->get_bits ().as_byte_range (&bytes_within_inner))
+ {
+ /* Consider e.g. looking for null terminator of
+ bytes 2-4 of BITS_WITHIN(bytes 10-15 of inner_sval)
+
+ This is equivalent to looking within bytes 12-14 of
+ inner_sval. */
+ const byte_offset_t start_byte_relative_to_inner
+ = (bytes.m_start_byte_offset
+ + bytes_within_inner.m_start_byte_offset);
+ const byte_offset_t next_byte_relative_to_inner
+ = (bytes.get_next_byte_offset ()
+ + bytes_within_inner.m_start_byte_offset);
+ if (next_byte_relative_to_inner > start_byte_relative_to_inner)
+ {
+ const byte_range relative_to_inner
+ (start_byte_relative_to_inner,
+ next_byte_relative_to_inner - start_byte_relative_to_inner);
+ const svalue *inner_sval
+ = bits_within_sval->get_inner_svalue ();
+ return svalue_byte_range_has_null_terminator (inner_sval,
+ relative_to_inner,
+ out_bytes_read,
+ logger);
+ }
+ }
+ }
+ break;
- byte_range m_byte_range;
- const svalue *m_sval;
-};
+ default:
+ // TODO: it may be possible to handle other cases here.
+ break;
+ }
+ return tristate::TS_UNKNOWN;
+}
+
+/* Like svalue_byte_range_has_null_terminator_1, but add logging. */
+
+static tristate
+svalue_byte_range_has_null_terminator (const svalue *sval,
+ const byte_range &bytes,
+ byte_offset_t *out_bytes_read,
+ logger *logger)
+{
+ LOG_SCOPE (logger);
+ if (logger)
+ {
+ pretty_printer *pp = logger->get_printer ();
+ logger->start_log_line ();
+ bytes.dump_to_pp (pp);
+ logger->log_partial (" of sval: ");
+ sval->dump_to_pp (pp, true);
+ logger->end_log_line ();
+ }
+ tristate ts
+ = svalue_byte_range_has_null_terminator_1 (sval, bytes,
+ out_bytes_read, logger);
+ if (logger)
+ {
+ pretty_printer *pp = logger->get_printer ();
+ logger->start_log_line ();
+ pp_printf (pp, "has null terminator: %s", ts.as_string ());
+ if (ts.is_true ())
+ {
+ pp_string (pp, "; bytes read: ");
+ pp_wide_int (pp, *out_bytes_read, SIGNED);
+ }
+ logger->end_log_line ();
+ }
+ return ts;
+}
/* A frozen copy of a single base region's binding_cluster within a store,
optimized for traversal of the concrete parts in byte order.
@@ -3718,6 +3787,25 @@ public:
return !m_symbolic_bindings.is_empty ();
}
+ void dump_to_pp (pretty_printer *pp) const
+ {
+ pp_string (pp, "iterable_cluster (fragments: [");
+ for (auto const &iter : &m_fragments)
+ {
+ if (&iter != m_fragments.begin ())
+ pp_string (pp, ", ");
+ iter.dump_to_pp (pp);
+ }
+ pp_printf (pp, "], symbolic bindings: [");
+ for (auto const &iter : m_symbolic_bindings)
+ {
+ if (&iter != m_symbolic_bindings.begin ())
+ pp_string (pp, ", ");
+ (*iter).dump_to_pp (pp, true);
+ }
+ pp_string (pp, "])");
+ }
+
private:
auto_vec<fragment> m_fragments;
auto_vec<const binding_key *> m_symbolic_bindings;
@@ -3769,7 +3857,7 @@ get_tree_for_byte_offset (tree ptr_expr, byte_offset_t byte_offset)
Complain to CTXT and return NULL if:
- the buffer pointed to isn't null-terminated
- - the buffer pointed to has any uninitalized bytes before any 0-terminator
+ - the buffer pointed to has any uninitialized bytes before any 0-terminator
- any of the reads aren't within the bounds of the underlying base region
Otherwise, return a svalue for the number of bytes read (strlen + 1),
@@ -3800,11 +3888,12 @@ get_tree_for_byte_offset (tree ptr_expr, byte_offset_t byte_offset)
*/
const svalue *
-region_model::scan_for_null_terminator (const region *reg,
- tree expr,
- const svalue **out_sval,
- region_model_context *ctxt) const
+region_model::scan_for_null_terminator_1 (const region *reg,
+ tree expr,
+ const svalue **out_sval,
+ region_model_context *ctxt) const
{
+ logger *logger = ctxt ? ctxt->get_logger () : nullptr;
store_manager *store_mgr = m_mgr->get_store_manager ();
region_offset offset = reg->get_offset (m_mgr);
@@ -3812,6 +3901,8 @@ region_model::scan_for_null_terminator (const region *reg,
{
if (out_sval)
*out_sval = get_store_value (reg, nullptr);
+ if (logger)
+ logger->log ("offset is symbolic");
return m_mgr->get_or_create_unknown_svalue (size_type_node);
}
byte_offset_t src_byte_offset;
@@ -3819,6 +3910,8 @@ region_model::scan_for_null_terminator (const region *reg,
{
if (out_sval)
*out_sval = get_store_value (reg, nullptr);
+ if (logger)
+ logger->log ("can't get concrete byte offset");
return m_mgr->get_or_create_unknown_svalue (size_type_node);
}
const byte_offset_t initial_src_byte_offset = src_byte_offset;
@@ -3840,6 +3933,8 @@ region_model::scan_for_null_terminator (const region *reg,
const svalue *sval = get_store_bytes (reg, bytes_to_read, ctxt);
if (out_sval)
*out_sval = sval;
+ if (logger)
+ logger->log ("using string_cst");
return m_mgr->get_or_create_int_cst (size_type_node,
num_bytes_read);
}
@@ -3847,6 +3942,14 @@ region_model::scan_for_null_terminator (const region *reg,
const binding_cluster *cluster = m_store.get_cluster (base_reg);
iterable_cluster c (cluster);
+ if (logger)
+ {
+ pretty_printer *pp = logger->get_printer ();
+ logger->start_log_line ();
+ c.dump_to_pp (pp);
+ logger->end_log_line ();
+ }
+
binding_map result;
while (1)
@@ -3854,9 +3957,29 @@ region_model::scan_for_null_terminator (const region *reg,
fragment f;
if (c.get_fragment_for_byte (src_byte_offset, &f))
{
+ if (logger)
+ {
+ logger->start_log_line ();
+ pretty_printer *pp = logger->get_printer ();
+ pp_printf (pp, "src_byte_offset: ");
+ pp_wide_int (pp, src_byte_offset, SIGNED);
+ pp_string (pp, ": ");
+ f.dump_to_pp (pp);
+ logger->end_log_line ();
+ }
+ gcc_assert (f.m_byte_range.contains_p (src_byte_offset));
+ /* src_byte_offset and f.m_byte_range are both expressed relative to
+ the base region.
+ Convert to a byte_range relative to the svalue. */
+ const byte_range bytes_relative_to_svalue
+ (src_byte_offset - f.m_byte_range.get_start_byte_offset (),
+ f.m_byte_range.get_next_byte_offset () - src_byte_offset);
byte_offset_t fragment_bytes_read;
tristate is_terminated
- = f.has_null_terminator (src_byte_offset, &fragment_bytes_read);
+ = svalue_byte_range_has_null_terminator (f.m_sval,
+ bytes_relative_to_svalue,
+ &fragment_bytes_read,
+ logger);
if (is_terminated.is_unknown ())
{
if (out_sval)
@@ -3885,6 +4008,8 @@ region_model::scan_for_null_terminator (const region *reg,
if (out_sval)
*out_sval = m_mgr->get_or_create_compound_svalue (NULL_TREE,
result);
+ if (logger)
+ logger->log ("got terminator");
return m_mgr->get_or_create_int_cst (size_type_node,
dst_byte_offset);
}
@@ -3900,6 +4025,8 @@ region_model::scan_for_null_terminator (const region *reg,
{
if (out_sval)
*out_sval = get_store_value (reg, nullptr);
+ if (logger)
+ logger->log ("got symbolic binding");
return m_mgr->get_or_create_unknown_svalue (size_type_node);
}
@@ -3925,6 +4052,49 @@ region_model::scan_for_null_terminator (const region *reg,
return nullptr;
}
+/* Like region_model::scan_for_null_terminator_1, but add logging. */
+
+const svalue *
+region_model::scan_for_null_terminator (const region *reg,
+ tree expr,
+ const svalue **out_sval,
+ region_model_context *ctxt) const
+{
+ logger *logger = ctxt ? ctxt->get_logger () : nullptr;
+ LOG_SCOPE (logger);
+ if (logger)
+ {
+ pretty_printer *pp = logger->get_printer ();
+ logger->start_log_line ();
+ logger->log_partial ("region: ");
+ reg->dump_to_pp (pp, true);
+ logger->end_log_line ();
+ }
+ const svalue *sval = scan_for_null_terminator_1 (reg, expr, out_sval, ctxt);
+ if (logger)
+ {
+ pretty_printer *pp = logger->get_printer ();
+ logger->start_log_line ();
+ logger->log_partial ("length result: ");
+ if (sval)
+ sval->dump_to_pp (pp, true);
+ else
+ pp_printf (pp, "NULL");
+ logger->end_log_line ();
+ if (out_sval)
+ {
+ logger->start_log_line ();
+ logger->log_partial ("content result: ");
+ if (*out_sval)
+ (*out_sval)->dump_to_pp (pp, true);
+ else
+ pp_printf (pp, "NULL");
+ logger->end_log_line ();
+ }
+ }
+ return sval;
+}
+
/* Check that argument ARG_IDX (0-based) to the call described by CD
is a pointer to a valid null-terminated string.
diff --git a/gcc/analyzer/region-model.h b/gcc/analyzer/region-model.h
index 4729d15..d4ef101 100644
--- a/gcc/analyzer/region-model.h
+++ b/gcc/analyzer/region-model.h
@@ -486,6 +486,10 @@ class region_model
tree expr,
const svalue **out_sval,
region_model_context *ctxt) const;
+ const svalue *scan_for_null_terminator_1 (const region *reg,
+ tree expr,
+ const svalue **out_sval,
+ region_model_context *ctxt) const;
bool region_exists_p (const region *reg) const;
diff --git a/gcc/analyzer/sm-taint.cc b/gcc/analyzer/sm-taint.cc
index dc4b078..bbf683f 100644
--- a/gcc/analyzer/sm-taint.cc
+++ b/gcc/analyzer/sm-taint.cc
@@ -86,6 +86,12 @@ public:
const extrinsic_state &ext_state)
const final override;
+ bool
+ has_alt_get_inherited_state_p () const final override
+ {
+ return true;
+ }
+
bool on_stmt (sm_context *sm_ctxt,
const supernode *node,
const gimple *stmt) const final override;
@@ -1199,6 +1205,9 @@ taint_state_machine::on_bounded_ranges (sm_context *sm_ctxt,
bool
taint_state_machine::can_purge_p (state_t s ATTRIBUTE_UNUSED) const
{
+ if (s == m_has_lb || s == m_has_ub)
+ return false;
+
return true;
}
diff --git a/gcc/analyzer/sm.h b/gcc/analyzer/sm.h
index e7f634f..a58f5db 100644
--- a/gcc/analyzer/sm.h
+++ b/gcc/analyzer/sm.h
@@ -78,6 +78,12 @@ public:
return NULL;
}
+ virtual bool
+ has_alt_get_inherited_state_p () const
+ {
+ return false;
+ }
+
virtual state_machine::state_t get_default_state (const svalue *) const
{
return m_start;
diff --git a/gcc/analyzer/store.cc b/gcc/analyzer/store.cc
index 67c90b7..e85a196 100644
--- a/gcc/analyzer/store.cc
+++ b/gcc/analyzer/store.cc
@@ -1759,7 +1759,16 @@ binding_cluster::maybe_get_compound_binding (store_manager *mgr,
else
default_sval = sval_mgr->get_or_create_initial_value (reg);
const binding_key *default_key = binding_key::make (mgr, reg);
- default_map.put (default_key, default_sval);
+
+ /* Express the bit-range of the default key for REG relative to REG,
+ rather than to the base region. */
+ const concrete_binding *concrete_default_key
+ = default_key->dyn_cast_concrete_binding ();
+ if (!concrete_default_key)
+ return nullptr;
+ const concrete_binding *default_key_relative_to_reg
+ = mgr->get_concrete_binding (0, concrete_default_key->get_size_in_bits ());
+ default_map.put (default_key_relative_to_reg, default_sval);
for (map_t::iterator iter = m_map.begin (); iter != m_map.end (); ++iter)
{
diff --git a/gcc/builtins.cc b/gcc/builtins.cc
index 09f2354..a0bd82c 100644
--- a/gcc/builtins.cc
+++ b/gcc/builtins.cc
@@ -8416,6 +8416,10 @@ expand_builtin (tree exp, rtx target, rtx subtarget, machine_mode mode,
case BUILT_IN_ADJUST_DESCRIPTOR:
return expand_builtin_adjust_descriptor (exp);
+ case BUILT_IN_GCC_NESTED_PTR_CREATED:
+ case BUILT_IN_GCC_NESTED_PTR_DELETED:
+ break; /* At present, no expansion, just call the function. */
+
case BUILT_IN_FORK:
case BUILT_IN_EXECL:
case BUILT_IN_EXECV:
diff --git a/gcc/builtins.def b/gcc/builtins.def
index 4d97ca0..f6f3e10 100644
--- a/gcc/builtins.def
+++ b/gcc/builtins.def
@@ -1084,8 +1084,8 @@ DEF_BUILTIN_STUB (BUILT_IN_ADJUST_TRAMPOLINE, "__builtin_adjust_trampoline")
DEF_BUILTIN_STUB (BUILT_IN_INIT_DESCRIPTOR, "__builtin_init_descriptor")
DEF_BUILTIN_STUB (BUILT_IN_ADJUST_DESCRIPTOR, "__builtin_adjust_descriptor")
DEF_BUILTIN_STUB (BUILT_IN_NONLOCAL_GOTO, "__builtin_nonlocal_goto")
-DEF_BUILTIN_STUB (BUILT_IN_NESTED_PTR_CREATED, "__builtin_nested_func_ptr_created")
-DEF_BUILTIN_STUB (BUILT_IN_NESTED_PTR_DELETED, "__builtin_nested_func_ptr_deleted")
+DEF_EXT_LIB_BUILTIN (BUILT_IN_GCC_NESTED_PTR_CREATED, "__gcc_nested_func_ptr_created", BT_FN_VOID_PTR_PTR_PTR, ATTR_NOTHROW_LIST)
+DEF_EXT_LIB_BUILTIN (BUILT_IN_GCC_NESTED_PTR_DELETED, "__gcc_nested_func_ptr_deleted", BT_FN_VOID, ATTR_NOTHROW_LIST)
/* Implementing __builtin_setjmp. */
DEF_BUILTIN_STUB (BUILT_IN_SETJMP_SETUP, "__builtin_setjmp_setup")
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index 6038d47..fd91628 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,20 @@
+2024-01-27 Lewis Hyatt <lhyatt@gmail.com>
+
+ PR preprocessor/105608
+ * c-pch.cc (c_common_read_pch): Start a new line map before asking
+ libcpp to restore macros defined prior to reading the PCH, instead
+ of afterward.
+
+2024-01-23 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/113518
+ * c-common.cc (atomic_bitint_fetch_using_cas_loop): Call c_fully_fold
+ on lhs_addr, val and model for C.
+
+2024-01-23 Sandra Loosemore <sandra@codesourcery.com>
+
+ * c.opt: Improve sorting of warning options.
+
2024-01-16 Eric Botcazou <ebotcazou@adacore.com>
PR ada/113397
diff --git a/gcc/c-family/c-common.cc b/gcc/c-family/c-common.cc
index dc67562..e15eff6 100644
--- a/gcc/c-family/c-common.cc
+++ b/gcc/c-family/c-common.cc
@@ -8082,6 +8082,12 @@ atomic_bitint_fetch_using_cas_loop (location_t loc,
tree lhs_addr = (*orig_params)[0];
tree val = convert (nonatomic_lhs_type, (*orig_params)[1]);
tree model = convert (integer_type_node, (*orig_params)[2]);
+ if (!c_dialect_cxx ())
+ {
+ lhs_addr = c_fully_fold (lhs_addr, false, NULL);
+ val = c_fully_fold (val, false, NULL);
+ model = c_fully_fold (model, false, NULL);
+ }
if (TREE_SIDE_EFFECTS (lhs_addr))
{
tree var = create_tmp_var_raw (TREE_TYPE (lhs_addr));
diff --git a/gcc/c-family/c-pch.cc b/gcc/c-family/c-pch.cc
index e17ec4f..79b4f88 100644
--- a/gcc/c-family/c-pch.cc
+++ b/gcc/c-family/c-pch.cc
@@ -342,6 +342,8 @@ c_common_read_pch (cpp_reader *pfile, const char *name,
gt_pch_restore (f);
cpp_set_line_map (pfile, line_table);
rebuild_location_adhoc_htab (line_table);
+ line_table->trace_includes = saved_trace_includes;
+ linemap_add (line_table, LC_ENTER, 0, saved_loc.file, saved_loc.line);
timevar_push (TV_PCH_CPP_RESTORE);
if (cpp_read_state (pfile, name, f, smd) != 0)
@@ -355,9 +357,6 @@ c_common_read_pch (cpp_reader *pfile, const char *name,
fclose (f);
- line_table->trace_includes = saved_trace_includes;
- linemap_add (line_table, LC_ENTER, 0, saved_loc.file, saved_loc.line);
-
/* Give the front end a chance to take action after a PCH file has
been loaded. */
if (lang_post_pch_load)
diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt
index 314bd17..9c0a280 100644
--- a/gcc/c-family/c.opt
+++ b/gcc/c-family/c.opt
@@ -303,6 +303,10 @@ Waddress
C ObjC C++ ObjC++ Var(warn_address) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
Warn about suspicious uses of memory addresses.
+Waddress-of-packed-member
+C ObjC C++ ObjC++ Var(warn_address_of_packed_member) Init(1) Warning
+Warn when the address of packed member of struct or union is taken.
+
Enum
Name(warn_aligned_new_level) Type(int) UnknownError(argument %qs to %<-Waligned-new%> not recognized)
@@ -358,6 +362,10 @@ Wno-alloca-larger-than
C ObjC C++ LTO ObjC++ Alias(Walloca-larger-than=,18446744073709551615EiB,none) Warning
Disable Walloca-larger-than= warning. Equivalent to Walloca-larger-than=<SIZE_MAX> or larger.
+Warith-conversion
+C ObjC C++ ObjC++ Var(warn_arith_conv) Warning
+Warn if conversion of the result of arithmetic might change the value even though converting the operands cannot.
+
Warray-bounds=
LangEnabledBy(C ObjC C++ LTO ObjC++,Wall,1,0)
; in common.opt
@@ -374,10 +382,6 @@ Warray-parameter=
C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_array_parameter) IntegerRange(0, 2) LangEnabledBy(C ObjC C++ ObjC++,Wall, 2, 0) Warning
Warn about mismatched declarations of array parameters and unsafe accesses to them.
-Wzero-length-bounds
-C ObjC C++ ObjC++ Var(warn_zero_length_bounds) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
-Warn about accesses to interior zero-length array members.
-
Wassign-intercept
ObjC ObjC++ Var(warn_assign_intercept) Warning
Warn whenever an Objective-C assignment is being intercepted by the garbage collector.
@@ -421,10 +425,6 @@ Wbool-operation
C ObjC C++ ObjC++ Var(warn_bool_op) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
Warn about certain operations on boolean expressions.
-Wframe-address
-C ObjC C++ ObjC++ Var(warn_frame_address) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
-Warn when __builtin_frame_address or __builtin_return_address is used unsafely.
-
Wbuiltin-declaration-mismatch
C ObjC C++ ObjC++ Var(warn_builtin_declaration_mismatch) Init(1) Warning
Warn when a built-in function is declared with the wrong signature.
@@ -534,6 +534,14 @@ Wchkp
C ObjC C++ ObjC++ Warning WarnRemoved
Removed in GCC 9. This switch has no effect.
+Wclass-conversion
+C++ ObjC++ Var(warn_class_conversion) Init(1) Warning
+Warn when a conversion function will never be called due to the type it converts to.
+
+Wclass-memaccess
+C++ ObjC++ Var(warn_class_memaccess) Warning LangEnabledBy(C++ ObjC++, Wall)
+Warn for unsafe raw memory writes to objects of class types.
+
Wclobbered
C ObjC C++ ObjC++ Var(warn_clobbered) Warning EnabledBy(Wextra)
Warn about variables that might be changed by \"longjmp\" or \"vfork\".
@@ -650,6 +658,14 @@ Wdiv-by-zero
C ObjC C++ ObjC++ Var(warn_div_by_zero) Init(1) Warning
Warn about compile-time integer division by zero.
+Wdouble-promotion
+C ObjC C++ ObjC++ Var(warn_double_promotion) Warning
+Warn about implicit conversions from \"float\" to \"double\".
+
+Wduplicate-decl-specifier
+C ObjC Var(warn_duplicate_decl_specifier) Warning LangEnabledBy(C ObjC,Wall)
+Warn when a declaration has duplicate const, volatile, restrict or _Atomic specifier.
+
Wduplicated-branches
C ObjC C++ ObjC++ Var(warn_duplicated_branches) Init(0) Warning
Warn about duplicated branches in if-else statements.
@@ -662,6 +678,10 @@ Weffc++
C++ ObjC++ Var(warn_ecpp) Warning
Warn about violations of Effective C++ style rules.
+Welaborated-enum-base
+C++ ObjC++ Var(warn_elaborated_enum_base) Warning Init(1)
+Warn if an additional enum-base is used in an elaborated-type-specifier.
+
Wempty-body
C ObjC C++ ObjC++ Var(warn_empty_body) Warning EnabledBy(Wextra)
Warn about an empty body in an if or else statement.
@@ -694,6 +714,10 @@ Wexceptions
C++ ObjC++ Var(warn_exceptions) Init(1) Warning
Warn when an exception handler is shadowed by another handler.
+Wexpansion-to-defined
+C ObjC C++ ObjC++ CPP(warn_expansion_to_defined) CppReason(CPP_W_EXPANSION_TO_DEFINED) Var(cpp_warn_expansion_to_defined) Init(0) Warning EnabledBy(Wextra || Wpedantic)
+Warn if \"defined\" is used outside #if.
+
Wextra
C ObjC C++ ObjC++ Warning
; in common.opt
@@ -702,6 +726,11 @@ Wextra-semi
C++ ObjC++ Var(warn_extra_semi) Warning
Warn about semicolon after in-class function definition.
+Wflex-array-member-not-at-end
+C C++ Var(warn_flex_array_member_not_at_end) Warning
+Warn when a structure containing a C99 flexible array member as the last
+field is not at the end of another structure.
+
Wfloat-conversion
C ObjC C++ ObjC++ Var(warn_float_conversion) Warning LangEnabledBy(C ObjC C++ ObjC++,Wconversion)
Warn for implicit type conversions that cause loss of floating point precision.
@@ -735,6 +764,11 @@ C ObjC C++ LTO ObjC++ Warning Alias(Wformat-overflow=, 1, 0) IntegerRange(0, 2)
Warn about function calls with format strings that write past the end
of the destination region. Same as -Wformat-overflow=1.
+Wformat-overflow=
+C ObjC C++ LTO ObjC++ Joined RejectNegative UInteger Var(warn_format_overflow) Warning LangEnabledBy(C ObjC C++ LTO ObjC++,Wformat=, warn_format >= 1, 0) IntegerRange(0, 2)
+Warn about function calls with format strings that write past the end
+of the destination region.
+
Wformat-security
C ObjC C++ ObjC++ Var(warn_format_security) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 2, 0)
Warn about possible security problems with format functions.
@@ -748,6 +782,10 @@ C ObjC C++ LTO ObjC++ Warning Alias(Wformat-truncation=, 1, 0)
Warn about calls to snprintf and similar functions that truncate output.
Same as -Wformat-truncation=1.
+Wformat-truncation=
+C ObjC C++ LTO ObjC++ Joined RejectNegative UInteger Var(warn_format_trunc) Warning LangEnabledBy(C ObjC C++ LTO ObjC++,Wformat=, warn_format >= 1, 0) IntegerRange(0, 2)
+Warn about calls to snprintf and similar functions that truncate output.
+
Wformat-y2k
C ObjC C++ ObjC++ Var(warn_format_y2k) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=,warn_format >= 2, 0)
Warn about strftime formats yielding 2-digit years.
@@ -760,19 +798,9 @@ Wformat=
C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_format) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0) IntegerRange(0, 2)
Warn about printf/scanf/strftime/strfmon format string anomalies.
-Wformat-overflow=
-C ObjC C++ LTO ObjC++ Joined RejectNegative UInteger Var(warn_format_overflow) Warning LangEnabledBy(C ObjC C++ LTO ObjC++,Wformat=, warn_format >= 1, 0) IntegerRange(0, 2)
-Warn about function calls with format strings that write past the end
-of the destination region.
-
-Wformat-truncation=
-C ObjC C++ LTO ObjC++ Joined RejectNegative UInteger Var(warn_format_trunc) Warning LangEnabledBy(C ObjC C++ LTO ObjC++,Wformat=, warn_format >= 1, 0) IntegerRange(0, 2)
-Warn about calls to snprintf and similar functions that truncate output.
-
-Wflex-array-member-not-at-end
-C C++ Var(warn_flex_array_member_not_at_end) Warning
-Warn when a structure containing a C99 flexible array member as the last
-field is not at the end of another structure.
+Wframe-address
+C ObjC C++ ObjC++ Var(warn_frame_address) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
+Warn when __builtin_frame_address or __builtin_return_address is used unsafely.
Wif-not-aligned
C ObjC C++ ObjC++ Var(warn_if_not_aligned) Init(1) Warning
@@ -786,6 +814,25 @@ Wignored-attributes
C C++ Var(warn_ignored_attributes) Init(1) Warning
Warn whenever attributes are ignored.
+Wimplicit
+C ObjC Var(warn_implicit) Warning LangEnabledBy(C ObjC,Wall)
+Warn about implicit declarations.
+
+Wimplicit-fallthrough=
+LangEnabledBy(C ObjC C++ ObjC++,Wextra,3,0)
+; in common.opt
+
+Wimplicit-function-declaration
+C ObjC Var(warn_implicit_function_declaration) Init(-1) Warning LangEnabledBy(C ObjC,Wimplicit)
+Warn about implicit function declarations.
+
+Wimplicit-int
+C ObjC Var(warn_implicit_int) Init(-1) Warning LangEnabledBy(C ObjC,Wimplicit)
+Warn when a declaration does not specify a type.
+
+Wimport
+C ObjC C++ ObjC++ Undocumented Ignore
+
Winaccessible-base
C++ ObjC++ Var(warn_inaccessible_base) Init(1) Warning
Warn when a base is inaccessible in derived due to ambiguity.
@@ -798,10 +845,6 @@ Winfinite-recursion
C ObjC C++ LTO ObjC++ Var(warn_infinite_recursion) Warning LangEnabledBy(C ObjC C++ LTO ObjC++, Wall)
Warn for infinitely recursive calls.
-Waddress-of-packed-member
-C ObjC C++ ObjC++ Var(warn_address_of_packed_member) Init(1) Warning
-Warn when the address of packed member of struct or union is taken.
-
Winit-self
C ObjC C++ ObjC++ Var(warn_init_self) Warning LangEnabledBy(C++ ObjC++,Wall)
Warn about variables which are initialized to themselves.
@@ -815,33 +858,6 @@ C++ ObjC++ Var(warn_interference_size) Warning Init(1)
Warn about nonsensical values of --param destructive-interference-size or
constructive-interference-size.
-Wimplicit
-C ObjC Var(warn_implicit) Warning LangEnabledBy(C ObjC,Wall)
-Warn about implicit declarations.
-
-Wimplicit-fallthrough=
-LangEnabledBy(C ObjC C++ ObjC++,Wextra,3,0)
-; in common.opt
-
-Wdouble-promotion
-C ObjC C++ ObjC++ Var(warn_double_promotion) Warning
-Warn about implicit conversions from \"float\" to \"double\".
-
-Wexpansion-to-defined
-C ObjC C++ ObjC++ CPP(warn_expansion_to_defined) CppReason(CPP_W_EXPANSION_TO_DEFINED) Var(cpp_warn_expansion_to_defined) Init(0) Warning EnabledBy(Wextra || Wpedantic)
-Warn if \"defined\" is used outside #if.
-
-Wimplicit-function-declaration
-C ObjC Var(warn_implicit_function_declaration) Init(-1) Warning LangEnabledBy(C ObjC,Wimplicit)
-Warn about implicit function declarations.
-
-Wimplicit-int
-C ObjC Var(warn_implicit_int) Init(-1) Warning LangEnabledBy(C ObjC,Wimplicit)
-Warn when a declaration does not specify a type.
-
-Wimport
-C ObjC C++ ObjC++ Undocumented Ignore
-
Winherited-variadic-ctor
C++ ObjC++ Var(warn_inh_var_ctor) Init(1) Warning
Warn about C++11 inheriting constructors when the base has a variadic constructor.
@@ -882,14 +898,14 @@ Wliteral-suffix
C++ ObjC++ CPP(warn_literal_suffix) CppReason(CPP_W_LITERAL_SUFFIX) Var(cpp_warn_literal_suffix) Init(1) Warning
Warn when a string or character literal is followed by a ud-suffix which does not begin with an underscore.
-Wlogical-op
-C ObjC C++ ObjC++ Var(warn_logical_op) Init(0) Warning
-Warn when a logical operator is suspiciously always evaluating to true or false.
-
Wlogical-not-parentheses
C ObjC C++ ObjC++ Var(warn_logical_not_paren) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
Warn when logical not is used on the left hand side operand of a comparison.
+Wlogical-op
+C ObjC C++ ObjC++ Var(warn_logical_op) Init(0) Warning
+Warn when a logical operator is suspiciously always evaluating to true or false.
+
Wlong-long
C ObjC C++ ObjC++ CPP(cpp_warn_long_long) CppReason(CPP_W_LONG_LONG) Var(warn_long_long) Init(-1) Warning LangEnabledBy(C ObjC,Wc90-c99-compat)
Do not warn about using \"long long\" when -pedantic.
@@ -902,14 +918,18 @@ Wmain
LangEnabledBy(C ObjC C++ ObjC++,Wpedantic, 2, 0)
;
-Wmemset-transposed-args
-C ObjC C++ ObjC++ Var(warn_memset_transposed_args) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
-Warn about suspicious calls to memset where the third argument is constant literal zero and the second is not.
+Wmaybe-uninitialized
+C ObjC C++ ObjC++ LTO LangEnabledBy(C ObjC C++ ObjC++ LTO,Wall)
+;
Wmemset-elt-size
C ObjC C++ ObjC++ Var(warn_memset_elt_size) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
Warn about suspicious calls to memset where the third argument contains the number of elements not multiplied by the element size.
+Wmemset-transposed-args
+C ObjC C++ ObjC++ Var(warn_memset_transposed_args) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
+Warn about suspicious calls to memset where the third argument is constant literal zero and the second is not.
+
Wmisleading-indentation
C C++ Common Var(warn_misleading_indentation) Warning LangEnabledBy(C C++,Wall)
Warn when the indentation of the code does not reflect the block structure.
@@ -928,6 +948,11 @@ Wmismatched-tags
C++ ObjC++ Var(warn_mismatched_tags) Warning
Warn when a class is redeclared or referenced using a mismatched class-key.
+Wmissing-attributes
+C ObjC C++ ObjC++ Var(warn_missing_attributes) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
+Warn about declarations of entities that may be missing attributes
+that related entities have been declared with.
+
Wmissing-braces
C ObjC C++ ObjC++ Var(warn_missing_braces) Warning LangEnabledBy(C ObjC,Wall)
Warn about possibly missing braces around initializers.
@@ -940,130 +965,6 @@ Wmissing-field-initializers
C ObjC C++ ObjC++ Var(warn_missing_field_initializers) Warning EnabledBy(Wextra)
Warn about missing fields in struct initializers.
-Wmissing-requires
-C++ ObjC++ Var(warn_missing_requires) Init(1) Warning
-Warn about likely missing requires keyword.
-
-Wmissing-template-keyword
-C++ ObjC++ Var(warn_missing_template_keyword) Init(1) Warning
-Warn when the template keyword is missing after a member access token in a dependent member access expression if that member is a template.
-
-Wmultistatement-macros
-C ObjC C++ ObjC++ Var(warn_multistatement_macros) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
-Warn about unsafe macros expanding to multiple statements used as a body of a clause such as if, else, while, switch, or for.
-
-Wmultiple-inheritance
-C++ ObjC++ Var(warn_multiple_inheritance) Warning
-Warn on direct multiple inheritance.
-
-Wnamespaces
-C++ ObjC++ Var(warn_namespaces) Warning
-Warn on namespace definition.
-
-Wnrvo
-C++ ObjC++ Var(warn_nrvo)
-Warn if the named return value optimization is not performed although it is allowed.
-
-Wpacked-not-aligned
-C ObjC C++ ObjC++ Var(warn_packed_not_aligned) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
-Warn when fields in a struct with the packed attribute are misaligned.
-
-Wrange-loop-construct
-C++ ObjC++ Var(warn_range_loop_construct) Warning LangEnabledBy(C++ ObjC++,Wall)
-Warn when a range-based for-loop is creating unnecessary copies.
-
-Wredundant-tags
-C++ ObjC++ Var(warn_redundant_tags) Warning
-Warn when a class or enumerated type is referenced using a redundant class-key.
-
-Wsized-deallocation
-C++ ObjC++ Var(warn_sized_deallocation) Warning EnabledBy(Wextra)
-Warn about missing sized deallocation functions.
-
-Wsizeof-pointer-div
-C ObjC C++ ObjC++ Var(warn_sizeof_pointer_div) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
-Warn about suspicious divisions of two sizeof expressions that don't work correctly with pointers.
-
-Wsizeof-array-div
-C ObjC C++ ObjC++ Var(warn_sizeof_array_div) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
-Warn about divisions of two sizeof operators when the first one is applied
-to an array and the divisor does not equal the size of the array element.
-
-Wsizeof-pointer-memaccess
-C ObjC C++ ObjC++ Var(warn_sizeof_pointer_memaccess) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
-Warn about suspicious length parameters to certain string functions if the argument uses sizeof.
-
-Wsizeof-array-argument
-C ObjC C++ ObjC++ Var(warn_sizeof_array_argument) Warning Init(1)
-Warn when sizeof is applied on a parameter declared as an array.
-
-Wstring-compare
-C ObjC C++ LTO ObjC++ Warning Var(warn_string_compare) Warning LangEnabledBy(C ObjC C++ ObjC++, Wextra)
-Warn about calls to strcmp and strncmp used in equality expressions that
-are necessarily true or false due to the length of one and size of the other
-argument.
-
-Wstringop-overflow
-C ObjC C++ LTO ObjC++ Warning Alias(Wstringop-overflow=, 2, 0)
-Warn about buffer overflow in string manipulation functions like memcpy
-and strcpy.
-
-Wstringop-overflow=
-C ObjC C++ LTO ObjC++ Joined RejectNegative UInteger Var(warn_stringop_overflow) Init(2) Warning LangEnabledBy(C ObjC C++ LTO ObjC++, Wall, 2, 0) IntegerRange(0, 4)
-Under the control of Object Size type, warn about buffer overflow in string
-manipulation functions like memcpy and strcpy.
-
-Wstringop-overread
-C ObjC C++ LTO ObjC++ Var(warn_stringop_overread) Init(1) Warning LangEnabledBy(C ObjC C++ LTO ObjC++, Wall)
-Warn about reading past the end of a source array in string manipulation functions like memchr and memcpy.
-
-Wstringop-truncation
-C ObjC C++ LTO ObjC++ Var(warn_stringop_truncation) Warning Init (1) LangEnabledBy(C ObjC C++ LTO ObjC++, Wall)
-Warn about truncation in string manipulation functions like strncat and strncpy.
-
-Wstrict-flex-arrays
-C C++ Var(warn_strict_flex_arrays) Warning
-Warn about inproper usages of flexible array members
-according to the level of -fstrict-flex-arrays.
-
-Wsuggest-attribute=format
-C ObjC C++ ObjC++ Var(warn_suggest_attribute_format) Warning
-Warn about functions which might be candidates for format attributes.
-
-Wsuggest-override
-C++ ObjC++ Var(warn_override) Warning
-Suggest that the override keyword be used when the declaration of a virtual
-function overrides another.
-
-Wswitch
-C ObjC C++ ObjC++ Var(warn_switch) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
-Warn about enumerated switches, with no default, missing a case.
-
-Wswitch-default
-C ObjC C++ ObjC++ Var(warn_switch_default) Warning
-Warn about enumerated switches missing a \"default:\" statement.
-
-Wswitch-enum
-C ObjC C++ ObjC++ Var(warn_switch_enum) Warning
-Warn about all enumerated switches missing a specific case.
-
-Wswitch-bool
-C ObjC C++ ObjC++ Var(warn_switch_bool) Warning Init(1)
-Warn about switches with boolean controlling expression.
-
-Wswitch-outside-range
-C ObjC C++ ObjC++ Var(warn_switch_outside_range) Warning Init(1)
-Warn about switch values that are outside of the switch's type range.
-
-Wtemplates
-C++ ObjC++ Var(warn_templates) Warning
-Warn on primary template declaration.
-
-Wmissing-attributes
-C ObjC C++ ObjC++ Var(warn_missing_attributes) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
-Warn about declarations of entities that may be missing attributes
-that related entities have been declared with.
-
Wmissing-format-attribute
C ObjC C++ ObjC++ Warning Alias(Wsuggest-attribute=format)
;
@@ -1080,6 +981,14 @@ Wmissing-prototypes
C ObjC Var(warn_missing_prototypes) Warning
Warn about global functions without prototypes.
+Wmissing-requires
+C++ ObjC++ Var(warn_missing_requires) Init(1) Warning
+Warn about likely missing requires keyword.
+
+Wmissing-template-keyword
+C++ ObjC++ Var(warn_missing_template_keyword) Init(1) Warning
+Warn when the template keyword is missing after a member access token in a dependent member access expression if that member is a template.
+
Wmissing-variable-declarations
C ObjC Var(warn_missing_variable_declarations) Warning
Warn about global variables without previous declarations.
@@ -1091,6 +1000,18 @@ Wmultichar
C ObjC C++ ObjC++ CPP(warn_multichar) CppReason(CPP_W_MULTICHAR) Var(cpp_warn_multichar) Init(0) Warning
Warn about use of multi-character character constants.
+Wmultiple-inheritance
+C++ ObjC++ Var(warn_multiple_inheritance) Warning
+Warn on direct multiple inheritance.
+
+Wmultistatement-macros
+C ObjC C++ ObjC++ Var(warn_multistatement_macros) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
+Warn about unsafe macros expanding to multiple statements used as a body of a clause such as if, else, while, switch, or for.
+
+Wnamespaces
+C++ ObjC++ Var(warn_namespaces) Warning
+Warn on namespace definition.
+
Wnarrowing
C ObjC C++ ObjC++ Warning Var(warn_narrowing) Init(-1) LangEnabledBy(C++ ObjC++,Wall || Wc++11-compat)
Warn about narrowing conversions within { } that are ill-formed in C++11.
@@ -1111,14 +1032,6 @@ Wnon-template-friend
C++ ObjC++ Var(warn_nontemplate_friend) Init(1) Warning
Warn when non-templatized friend functions are declared within a template.
-Wclass-conversion
-C++ ObjC++ Var(warn_class_conversion) Init(1) Warning
-Warn when a conversion function will never be called due to the type it converts to.
-
-Wclass-memaccess
-C++ ObjC++ Var(warn_class_memaccess) Warning LangEnabledBy(C++ ObjC++, Wall)
-Warn for unsafe raw memory writes to objects of class types.
-
Wnon-virtual-dtor
C++ ObjC++ Var(warn_nonvdtor) Warning LangEnabledBy(C++ ObjC++,Weffc++)
Warn about non-virtual destructors.
@@ -1211,10 +1124,18 @@ Woverride-init-side-effects
C ObjC Var(warn_override_init_side_effects) Init(1) Warning
Warn about overriding initializers with side effects.
+Wnrvo
+C++ ObjC++ Var(warn_nrvo)
+Warn if the named return value optimization is not performed although it is allowed.
+
Wpacked-bitfield-compat
C ObjC C++ ObjC++ Var(warn_packed_bitfield_compat) Init(-1) Warning
Warn about packed bit-fields whose offset changed in GCC 4.4.
+Wpacked-not-aligned
+C ObjC C++ ObjC++ Var(warn_packed_not_aligned) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
+Warn when fields in a struct with the packed attribute are misaligned.
+
Wparentheses
C ObjC C++ ObjC++ Var(warn_parentheses) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
Warn about possibly missing parentheses.
@@ -1227,6 +1148,14 @@ Wpessimizing-move
C++ ObjC++ Var(warn_pessimizing_move) Warning LangEnabledBy(C++ ObjC++, Wall)
Warn about calling std::move on a local object in a return statement preventing copy elision.
+Wplacement-new
+C++ Warning Alias(Wplacement-new=, 1, 0)
+Warn for placement new expressions with undefined behavior.
+
+Wplacement-new=
+C++ Joined RejectNegative UInteger Var(warn_placement_new) Init(-1) Warning IntegerRange(0, 2)
+Warn for placement new expressions with undefined behavior.
+
Wpmf-conversions
C++ ObjC++ Var(warn_pmf2ptr) Init(1) Warning
Warn when converting the type of pointers to member functions.
@@ -1263,13 +1192,9 @@ Wprotocol
ObjC ObjC++ Var(warn_protocol) Init(1) Warning
Warn if inherited methods are unimplemented.
-Wplacement-new
-C++ Warning Alias(Wplacement-new=, 1, 0)
-Warn for placement new expressions with undefined behavior.
-
-Wplacement-new=
-C++ Joined RejectNegative UInteger Var(warn_placement_new) Init(-1) Warning IntegerRange(0, 2)
-Warn for placement new expressions with undefined behavior.
+Wrange-loop-construct
+C++ ObjC++ Var(warn_range_loop_construct) Warning LangEnabledBy(C++ ObjC++,Wall)
+Warn when a range-based for-loop is creating unnecessary copies.
Wredundant-decls
C ObjC C++ ObjC++ Var(warn_redundant_decls) Warning
@@ -1279,6 +1204,10 @@ Wredundant-move
C++ ObjC++ Var(warn_redundant_move) Warning LangEnabledBy(C++ ObjC++,Wextra)
Warn about redundant calls to std::move.
+Wredundant-tags
+C++ ObjC++ Var(warn_redundant_tags) Warning
+Warn when a class or enumerated type is referenced using a redundant class-key.
+
Wregister
C++ ObjC++ Var(warn_register) Warning
Warn about uses of register storage specifier.
@@ -1287,6 +1216,11 @@ Wreorder
C++ ObjC++ Var(warn_reorder) Warning LangEnabledBy(C++ ObjC++,Wall)
Warn when the compiler reorders code.
+Wrestrict
+C ObjC C++ ObjC++ Var(warn_restrict) Warning LangEnabledBy(C ObjC C++ ObjC++, Wall)
+Warn when an argument passed to a restrict-qualified parameter aliases with
+another argument.
+
Wreturn-mismatch
C ObjC Var(warn_return_mismatch) Warning Init(1)
Warn whenever void-returning functions return a non-void expressions, or a return expression is missing in a function not returning void.
@@ -1335,10 +1269,6 @@ Wshift-negative-value
C ObjC C++ ObjC++ Var(warn_shift_negative_value) Init(-1) Warning
Warn if left shifting a negative value.
-Warith-conversion
-C ObjC C++ ObjC++ Var(warn_arith_conv) Warning
-Warn if conversion of the result of arithmetic might change the value even though converting the operands cannot.
-
Wsign-compare
C ObjC C++ ObjC++ Var(warn_sign_compare) Warning LangEnabledBy(C++ ObjC++,Wall)
Warn about signed-unsigned comparisons.
@@ -1355,26 +1285,109 @@ Wsign-promo
C++ ObjC++ Var(warn_sign_promo) Warning
Warn when overload promotes from unsigned to signed.
-Wstrict-null-sentinel
-C++ ObjC++ Warning Var(warn_strict_null_sentinel)
-Warn about uncasted NULL used as sentinel.
+Wsized-deallocation
+C++ ObjC++ Var(warn_sized_deallocation) Warning EnabledBy(Wextra)
+Warn about missing sized deallocation functions.
-Wstrict-prototypes
-C ObjC Var(warn_strict_prototypes) Warning
-Warn about unprototyped function declarations.
+Wsizeof-array-div
+C ObjC C++ ObjC++ Var(warn_sizeof_array_div) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
+Warn about divisions of two sizeof operators when the first one is applied
+to an array and the divisor does not equal the size of the array element.
+
+Wsizeof-array-argument
+C ObjC C++ ObjC++ Var(warn_sizeof_array_argument) Warning Init(1)
+Warn when sizeof is applied on a parameter declared as an array.
+
+Wsizeof-pointer-div
+C ObjC C++ ObjC++ Var(warn_sizeof_pointer_div) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
+Warn about suspicious divisions of two sizeof expressions that don't work correctly with pointers.
+
+Wsizeof-pointer-memaccess
+C ObjC C++ ObjC++ Var(warn_sizeof_pointer_memaccess) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
+Warn about suspicious length parameters to certain string functions if the argument uses sizeof.
Wstrict-aliasing=
C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall, 3, 0) IntegerRange(0, 3)
;
+Wstrict-flex-arrays
+C C++ Var(warn_strict_flex_arrays) Warning
+Warn about inproper usages of flexible array members
+according to the level of -fstrict-flex-arrays.
+
+Wstrict-null-sentinel
+C++ ObjC++ Warning Var(warn_strict_null_sentinel)
+Warn about uncasted NULL used as sentinel.
+
Wstrict-overflow=
C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0) IntegerRange(0, 5)
;
+Wstrict-prototypes
+C ObjC Var(warn_strict_prototypes) Warning
+Warn about unprototyped function declarations.
+
Wstrict-selector-match
ObjC ObjC++ Var(warn_strict_selector_match) Warning
Warn if type signatures of candidate methods do not match exactly.
+Wstring-compare
+C ObjC C++ LTO ObjC++ Warning Var(warn_string_compare) Warning LangEnabledBy(C ObjC C++ ObjC++, Wextra)
+Warn about calls to strcmp and strncmp used in equality expressions that
+are necessarily true or false due to the length of one and size of the other
+argument.
+
+Wstringop-overflow
+C ObjC C++ LTO ObjC++ Warning Alias(Wstringop-overflow=, 2, 0)
+Warn about buffer overflow in string manipulation functions like memcpy
+and strcpy.
+
+Wstringop-overflow=
+C ObjC C++ LTO ObjC++ Joined RejectNegative UInteger Var(warn_stringop_overflow) Init(2) Warning LangEnabledBy(C ObjC C++ LTO ObjC++, Wall, 2, 0) IntegerRange(0, 4)
+Under the control of Object Size type, warn about buffer overflow in string
+manipulation functions like memcpy and strcpy.
+
+Wstringop-overread
+C ObjC C++ LTO ObjC++ Var(warn_stringop_overread) Init(1) Warning LangEnabledBy(C ObjC C++ LTO ObjC++, Wall)
+Warn about reading past the end of a source array in string manipulation functions like memchr and memcpy.
+
+Wstringop-truncation
+C ObjC C++ LTO ObjC++ Var(warn_stringop_truncation) Warning Init (1) LangEnabledBy(C ObjC C++ LTO ObjC++, Wall)
+Warn about truncation in string manipulation functions like strncat and strncpy.
+
+Wsubobject-linkage
+C++ ObjC++ Var(warn_subobject_linkage) Warning Init(1)
+Warn if a class type has a base or a field whose type uses the anonymous namespace or depends on a type with no linkage.
+
+Wsuggest-attribute=format
+C ObjC C++ ObjC++ Var(warn_suggest_attribute_format) Warning
+Warn about functions which might be candidates for format attributes.
+
+Wsuggest-override
+C++ ObjC++ Var(warn_override) Warning
+Suggest that the override keyword be used when the declaration of a virtual
+function overrides another.
+
+Wswitch
+C ObjC C++ ObjC++ Var(warn_switch) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
+Warn about enumerated switches, with no default, missing a case.
+
+Wswitch-default
+C ObjC C++ ObjC++ Var(warn_switch_default) Warning
+Warn about enumerated switches missing a \"default:\" statement.
+
+Wswitch-enum
+C ObjC C++ ObjC++ Var(warn_switch_enum) Warning
+Warn about all enumerated switches missing a specific case.
+
+Wswitch-bool
+C ObjC C++ ObjC++ Var(warn_switch_bool) Warning Init(1)
+Warn about switches with boolean controlling expression.
+
+Wswitch-outside-range
+C ObjC C++ ObjC++ Var(warn_switch_outside_range) Warning Init(1)
+Warn about switch values that are outside of the switch's type range.
+
Wsync-nand
C C++ Var(warn_sync_nand) Init(1) Warning
Warn when __sync_fetch_and_nand and __sync_nand_and_fetch built-in functions are used.
@@ -1387,6 +1400,10 @@ Wsystem-headers
C ObjC C++ ObjC++ Warning
; Documented in common.opt
+Wtemplates
+C++ ObjC++ Var(warn_templates) Warning
+Warn on primary template declaration.
+
Wtautological-compare
C ObjC C++ ObjC++ Var(warn_tautological_compare) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
Warn if a comparison always evaluates to true or false.
@@ -1423,10 +1440,6 @@ Wuninitialized
C ObjC C++ ObjC++ LTO LangEnabledBy(C ObjC C++ ObjC++ LTO,Wall)
;
-Wmaybe-uninitialized
-C ObjC C++ ObjC++ LTO LangEnabledBy(C ObjC C++ ObjC++ LTO,Wall)
-;
-
Wunknown-pragmas
C ObjC C++ ObjC++ Warning Var(warn_unknown_pragmas) LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0)
Warn about unrecognized pragmas.
@@ -1439,6 +1452,14 @@ Wunused
C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall)
; documented in common.opt
+Wunused-const-variable
+C ObjC C++ ObjC++ Warning Alias(Wunused-const-variable=, 2, 0)
+Warn when a const variable is unused.
+
+Wunused-const-variable=
+C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_unused_const_variable) Warning LangEnabledBy(C ObjC,Wunused-variable, 1, 0) IntegerRange(0, 2)
+Warn when a const variable is unused.
+
Wunused-local-typedefs
C ObjC C++ ObjC++ Var(warn_unused_local_typedefs) Warning EnabledBy(Wunused)
Warn when typedefs locally defined in a function are not used.
@@ -1455,14 +1476,6 @@ Wunused-variable
C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wunused)
; documented in common.opt
-Wunused-const-variable
-C ObjC C++ ObjC++ Warning Alias(Wunused-const-variable=, 2, 0)
-Warn when a const variable is unused.
-
-Wunused-const-variable=
-C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_unused_const_variable) Warning LangEnabledBy(C ObjC,Wunused-variable, 1, 0) IntegerRange(0, 2)
-Warn when a const variable is unused.
-
; Defining this option here in addition to common.opt is necessary
; in order for the default -Wall setting of -Wuse-after-free=2 to take
; effect.
@@ -1471,6 +1484,10 @@ Wuse-after-free=
LangEnabledBy(C ObjC C++ LTO ObjC++, Wall,2,0)
; in common.opt
+Wuseless-cast
+C ObjC C++ ObjC++ Var(warn_useless_cast) Warning
+Warn about useless casts.
+
Wvariadic-macros
C ObjC C++ ObjC++ CPP(warn_variadic_macros) CppReason(CPP_W_VARIADIC_MACROS) Var(cpp_warn_variadic_macros) Init(0) Warning LangEnabledBy(C ObjC C++ ObjC++,Wpedantic || Wtraditional)
Warn about using variadic macros.
@@ -1483,6 +1500,10 @@ Wvexing-parse
C++ ObjC++ Warning Var(warn_vexing_parse) Init(1)
Warn about the most vexing parse syntactic ambiguity.
+Wvirtual-move-assign
+C++ ObjC++ Var(warn_virtual_move_assign) Warning Init(1)
+Warn if a virtual base has a non-trivial move assignment operator.
+
Wvla
C ObjC C++ ObjC++ Var(warn_vla) Init(-1) Warning
Warn if a variable length array is used.
@@ -1513,10 +1534,6 @@ Wvirtual-inheritance
C++ ObjC++ Var(warn_virtual_inheritance) Warning
Warn on direct virtual inheritance.
-Wvirtual-move-assign
-C++ ObjC++ Var(warn_virtual_move_assign) Warning Init(1)
-Warn if a virtual base has a non-trivial move assignment operator.
-
Wwrite-strings
C ObjC C++ ObjC++ Var(warn_write_strings) Warning
In C++, nonzero means warn about deprecated conversion from string literals to 'char *'. In C, similar warning, except that the conversion is of course not deprecated by the ISO C standard.
@@ -1529,26 +1546,9 @@ Wzero-as-null-pointer-constant
C++ ObjC++ Var(warn_zero_as_null_pointer_constant) Warning
Warn when a literal '0' is used as null pointer.
-Wuseless-cast
-C ObjC C++ ObjC++ Var(warn_useless_cast) Warning
-Warn about useless casts.
-
-Wsubobject-linkage
-C++ ObjC++ Var(warn_subobject_linkage) Warning Init(1)
-Warn if a class type has a base or a field whose type uses the anonymous namespace or depends on a type with no linkage.
-
-Welaborated-enum-base
-C++ ObjC++ Var(warn_elaborated_enum_base) Warning Init(1)
-Warn if an additional enum-base is used in an elaborated-type-specifier.
-
-Wduplicate-decl-specifier
-C ObjC Var(warn_duplicate_decl_specifier) Warning LangEnabledBy(C ObjC,Wall)
-Warn when a declaration has duplicate const, volatile, restrict or _Atomic specifier.
-
-Wrestrict
-C ObjC C++ ObjC++ Var(warn_restrict) Warning LangEnabledBy(C ObjC C++ ObjC++, Wall)
-Warn when an argument passed to a restrict-qualified parameter aliases with
-another argument.
+Wzero-length-bounds
+C ObjC C++ ObjC++ Var(warn_zero_length_bounds) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
+Warn about accesses to interior zero-length array members.
ansi
C ObjC C++ ObjC++
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog
index e7bcd95..b1c887b 100644
--- a/gcc/c/ChangeLog
+++ b/gcc/c/ChangeLog
@@ -1,3 +1,10 @@
+2024-01-21 Martin Uecker <uecker@tugraz.at>
+
+ PR c/113492
+ * c-decl.cc (grokdeclarator): Use c_common_unsigned_type instead of
+ unsigned_type_for to create the unsigned type for bitfields declared
+ with int when using -funsigned-bitfields.
+
2024-01-12 Jakub Jelinek <jakub@redhat.com>
PR c/113315
diff --git a/gcc/c/c-decl.cc b/gcc/c/c-decl.cc
index 4029bbc..8d18a3e 100644
--- a/gcc/c/c-decl.cc
+++ b/gcc/c/c-decl.cc
@@ -6947,7 +6947,7 @@ grokdeclarator (const struct c_declarator *declarator,
"signed". */
if (bitfield && !flag_signed_bitfields && !declspecs->explicit_signed_p
&& TREE_CODE (type) == INTEGER_TYPE)
- type = unsigned_type_for (type);
+ type = c_common_unsigned_type (type);
/* Figure out the type qualifiers for the declaration. There are
two ways a declaration can become qualified. One is something
diff --git a/gcc/calls.cc b/gcc/calls.cc
index 7c35b1a..01f44734 100644
--- a/gcc/calls.cc
+++ b/gcc/calls.cc
@@ -4580,8 +4580,8 @@ emit_library_call_value_1 (int retval, rtx orgfun, rtx value,
}
}
- emit_push_insn (val, mode, NULL_TREE, NULL_RTX, parm_align,
- partial, reg, 0, argblock,
+ emit_push_insn (val, mode, lang_hooks.types.type_for_mode (mode, 0),
+ NULL_RTX, parm_align, partial, reg, 0, argblock,
(gen_int_mode
(argvec[argnum].locate.offset.constant, Pmode)),
reg_parm_stack_space,
diff --git a/gcc/ccmp.cc b/gcc/ccmp.cc
index 09d6b55..7cb525a 100644
--- a/gcc/ccmp.cc
+++ b/gcc/ccmp.cc
@@ -90,9 +90,10 @@ ccmp_tree_comparison_p (tree t, basic_block bb)
If all checks OK in expand_ccmp_expr, it emits insns in prep_seq, then
insns in gen_seq. */
-/* Check whether G is a potential conditional compare candidate. */
+/* Check whether G is a potential conditional compare candidate; OUTER is true if
+ G is the outer most AND/IOR. */
static bool
-ccmp_candidate_p (gimple *g)
+ccmp_candidate_p (gimple *g, bool outer = false)
{
tree lhs, op0, op1;
gimple *gs0, *gs1;
@@ -109,8 +110,9 @@ ccmp_candidate_p (gimple *g)
lhs = gimple_assign_lhs (g);
op0 = gimple_assign_rhs1 (g);
op1 = gimple_assign_rhs2 (g);
- if ((TREE_CODE (op0) != SSA_NAME) || (TREE_CODE (op1) != SSA_NAME)
- || !has_single_use (lhs))
+ if ((TREE_CODE (op0) != SSA_NAME) || (TREE_CODE (op1) != SSA_NAME))
+ return false;
+ if (!outer && !has_single_use (lhs))
return false;
bb = gimple_bb (g);
@@ -284,7 +286,7 @@ expand_ccmp_expr (gimple *g, machine_mode mode)
rtx_insn *last;
rtx tmp;
- if (!ccmp_candidate_p (g))
+ if (!ccmp_candidate_p (g, true))
return NULL_RTX;
last = get_last_insn ();
diff --git a/gcc/cfgexpand.cc b/gcc/cfgexpand.cc
index 9ce0118..316b883 100644
--- a/gcc/cfgexpand.cc
+++ b/gcc/cfgexpand.cc
@@ -3997,37 +3997,18 @@ expand_gimple_stmt_1 (gimple *stmt)
{
rtx target, temp;
bool nontemporal = gimple_assign_nontemporal_move_p (assign_stmt);
- struct separate_ops ops;
bool promoted = false;
target = expand_expr (lhs, NULL_RTX, VOIDmode, EXPAND_WRITE);
if (GET_CODE (target) == SUBREG && SUBREG_PROMOTED_VAR_P (target))
promoted = true;
- ops.code = gimple_assign_rhs_code (assign_stmt);
- ops.type = TREE_TYPE (lhs);
- switch (get_gimple_rhs_class (ops.code))
- {
- case GIMPLE_TERNARY_RHS:
- ops.op2 = gimple_assign_rhs3 (assign_stmt);
- /* Fallthru */
- case GIMPLE_BINARY_RHS:
- ops.op1 = gimple_assign_rhs2 (assign_stmt);
- /* Fallthru */
- case GIMPLE_UNARY_RHS:
- ops.op0 = gimple_assign_rhs1 (assign_stmt);
- break;
- default:
- gcc_unreachable ();
- }
- ops.location = gimple_location (stmt);
-
- /* If we want to use a nontemporal store, force the value to
- register first. If we store into a promoted register,
- don't directly expand to target. */
+ /* If we want to use a nontemporal store, force the value to
+ register first. If we store into a promoted register,
+ don't directly expand to target. */
temp = nontemporal || promoted ? NULL_RTX : target;
- temp = expand_expr_real_2 (&ops, temp, GET_MODE (target),
- EXPAND_NORMAL);
+ temp = expand_expr_real_gassign (assign_stmt, temp,
+ GET_MODE (target), EXPAND_NORMAL);
if (temp == target)
;
@@ -4039,7 +4020,7 @@ expand_gimple_stmt_1 (gimple *stmt)
if (CONSTANT_P (temp) && GET_MODE (temp) == VOIDmode)
{
temp = convert_modes (GET_MODE (target),
- TYPE_MODE (ops.type),
+ TYPE_MODE (TREE_TYPE (lhs)),
temp, unsignedp);
temp = convert_modes (GET_MODE (SUBREG_REG (target)),
GET_MODE (target), temp, unsignedp);
@@ -6380,11 +6361,15 @@ discover_nonconstant_array_refs_r (tree * tp, int *walk_subtrees,
/* References of size POLY_INT_CST to a fixed-size object must go
through memory. It's more efficient to force that here than
to create temporary slots on the fly.
- RTL expansion expectes TARGET_MEM_REF to always address actual memory. */
+ RTL expansion expectes TARGET_MEM_REF to always address actual memory.
+ Also, force to stack non-BLKmode vars accessed through VIEW_CONVERT_EXPR
+ to BLKmode type. */
else if (TREE_CODE (t) == TARGET_MEM_REF
|| (TREE_CODE (t) == MEM_REF
&& TYPE_SIZE (TREE_TYPE (t))
- && POLY_INT_CST_P (TYPE_SIZE (TREE_TYPE (t)))))
+ && POLY_INT_CST_P (TYPE_SIZE (TREE_TYPE (t))))
+ || (TREE_CODE (t) == VIEW_CONVERT_EXPR
+ && TYPE_MODE (TREE_TYPE (t)) == BLKmode))
{
tree base = get_base_address (t);
if (base
diff --git a/gcc/cgraph.cc b/gcc/cgraph.cc
index d565c00..0ac8f73 100644
--- a/gcc/cgraph.cc
+++ b/gcc/cgraph.cc
@@ -1403,11 +1403,17 @@ cgraph_edge::redirect_callee (cgraph_node *n)
speculative indirect call, remove "speculative" of the indirect call and
also redirect stmt to it's final direct target.
+ When called from within tree-inline, KILLED_SSAs has to contain the pointer
+ to killed_new_ssa_names within the copy_body_data structure and SSAs
+ discovered to be useless (if LHS is removed) will be added to it, otherwise
+ it needs to be NULL.
+
It is up to caller to iteratively transform each "speculative"
direct call as appropriate. */
gimple *
-cgraph_edge::redirect_call_stmt_to_callee (cgraph_edge *e)
+cgraph_edge::redirect_call_stmt_to_callee (cgraph_edge *e,
+ hash_set <tree> *killed_ssas)
{
tree decl = gimple_call_fndecl (e->call_stmt);
gcall *new_stmt;
@@ -1527,7 +1533,7 @@ cgraph_edge::redirect_call_stmt_to_callee (cgraph_edge *e)
remove_stmt_from_eh_lp (e->call_stmt);
tree old_fntype = gimple_call_fntype (e->call_stmt);
- new_stmt = padjs->modify_call (e, false);
+ new_stmt = padjs->modify_call (e, false, killed_ssas);
cgraph_node *origin = e->callee;
while (origin->clone_of)
origin = origin->clone_of;
diff --git a/gcc/cgraph.h b/gcc/cgraph.h
index b4f028b..47f35e8 100644
--- a/gcc/cgraph.h
+++ b/gcc/cgraph.h
@@ -1837,9 +1837,16 @@ public:
speculative indirect call, remove "speculative" of the indirect call and
also redirect stmt to it's final direct target.
+ When called from within tree-inline, KILLED_SSAs has to contain the
+ pointer to killed_new_ssa_names within the copy_body_data structure and
+ SSAs discovered to be useless (if LHS is removed) will be added to it,
+ otherwise it needs to be NULL.
+
It is up to caller to iteratively transform each "speculative"
direct call as appropriate. */
- static gimple *redirect_call_stmt_to_callee (cgraph_edge *e);
+ static gimple *redirect_call_stmt_to_callee (cgraph_edge *e,
+ hash_set <tree>
+ *killed_ssas = nullptr);
/* Create clone of edge in the node N represented
by CALL_EXPR the callgraph. */
diff --git a/gcc/cgraphunit.cc b/gcc/cgraphunit.cc
index 3805267..5c40525 100644
--- a/gcc/cgraphunit.cc
+++ b/gcc/cgraphunit.cc
@@ -918,7 +918,8 @@ process_function_and_variable_attributes (cgraph_node *first,
/* redefining extern inline function makes it DECL_UNINLINABLE. */
&& !DECL_UNINLINABLE (decl))
warning_at (DECL_SOURCE_LOCATION (decl), OPT_Wattributes,
- "%<always_inline%> function might not be inlinable");
+ "%<always_inline%> function might not be inlinable"
+ " unless also declared %<inline%>");
process_common_attributes (node, decl);
}
diff --git a/gcc/common.opt b/gcc/common.opt
index 7dc380c..51c4a17 100644
--- a/gcc/common.opt
+++ b/gcc/common.opt
@@ -1040,9 +1040,6 @@ Align the start of functions.
falign-functions=
Common RejectNegative Joined Var(str_align_functions) Optimization
-flimit-function-alignment
-Common Var(flag_limit_function_alignment) Optimization Init(0)
-
falign-jumps
Common Var(flag_align_jumps) Optimization
Align labels which are only reached by jumping.
@@ -2277,6 +2274,10 @@ fmessage-length=
Common RejectNegative Joined UInteger
-fmessage-length=<number> Limit diagnostics to <number> characters per line. 0 suppresses line-wrapping.
+fmin-function-alignment=
+Common Joined RejectNegative UInteger Var(flag_min_function_alignment) Optimization
+Align the start of every function.
+
fmodulo-sched
Common Var(flag_modulo_sched) Optimization
Perform SMS based modulo scheduling before the first scheduling pass.
@@ -2601,6 +2602,9 @@ starts and when the destructor finishes.
flifetime-dse=
Common Joined RejectNegative UInteger Var(flag_lifetime_dse) Optimization IntegerRange(0, 2)
+flimit-function-alignment
+Common Var(flag_limit_function_alignment) Optimization Init(0)
+
flive-patching
Common RejectNegative Alias(flive-patching=,inline-clone) Optimization
diff --git a/gcc/common/config/riscv/riscv-common.cc b/gcc/common/config/riscv/riscv-common.cc
index 0301d17..6ac0422 100644
--- a/gcc/common/config/riscv/riscv-common.cc
+++ b/gcc/common/config/riscv/riscv-common.cc
@@ -96,8 +96,6 @@ static const riscv_implied_info_t riscv_implied_info[] =
{"zks", "zksed"},
{"zks", "zksh"},
- {"ztso", "a"},
-
{"v", "zvl128b"},
{"v", "zve64d"},
@@ -279,6 +277,9 @@ static const struct riscv_ext_version riscv_ext_version_table[] =
{"zicbom",ISA_SPEC_CLASS_NONE, 1, 0},
{"zicbop",ISA_SPEC_CLASS_NONE, 1, 0},
+ {"zicntr", ISA_SPEC_CLASS_NONE, 2, 0},
+ {"zihpm", ISA_SPEC_CLASS_NONE, 2, 0},
+
{"zk", ISA_SPEC_CLASS_NONE, 1, 0},
{"zkn", ISA_SPEC_CLASS_NONE, 1, 0},
{"zks", ISA_SPEC_CLASS_NONE, 1, 0},
@@ -355,6 +356,7 @@ static const struct riscv_ext_version riscv_ext_version_table[] =
{"xcvmac", ISA_SPEC_CLASS_NONE, 1, 0},
{"xcvalu", ISA_SPEC_CLASS_NONE, 1, 0},
{"xcvelw", ISA_SPEC_CLASS_NONE, 1, 0},
+ {"xcvsimd", ISA_SPEC_CLASS_NONE, 1, 0},
{"xtheadba", ISA_SPEC_CLASS_NONE, 1, 0},
{"xtheadbb", ISA_SPEC_CLASS_NONE, 1, 0},
@@ -368,6 +370,7 @@ static const struct riscv_ext_version riscv_ext_version_table[] =
{"xtheadmemidx", ISA_SPEC_CLASS_NONE, 1, 0},
{"xtheadmempair", ISA_SPEC_CLASS_NONE, 1, 0},
{"xtheadsync", ISA_SPEC_CLASS_NONE, 1, 0},
+ {"xtheadvector", ISA_SPEC_CLASS_NONE, 1, 0},
{"xventanacondops", ISA_SPEC_CLASS_NONE, 1, 0},
@@ -970,25 +973,37 @@ riscv_subset_list::parsing_subset_version (const char *ext,
return p;
}
-/* Parsing function for standard extensions.
+/* Parsing function for base extensions, rv[32|64][i|e|g]
Return Value:
- Points to the end of extensions.
+ Points to the end of extensions, return NULL if any error.
Arguments:
`p`: Current parsing position. */
-
const char *
-riscv_subset_list::parse_std_ext (const char *p)
+riscv_subset_list::parse_base_ext (const char *p)
{
- const char *all_std_exts = riscv_supported_std_ext ();
- const char *std_exts = all_std_exts;
-
unsigned major_version = 0;
unsigned minor_version = 0;
- char std_ext = '\0';
bool explicit_version_p = false;
+ if (startswith (p, "rv32"))
+ {
+ m_xlen = 32;
+ p += 4;
+ }
+ else if (startswith (p, "rv64"))
+ {
+ m_xlen = 64;
+ p += 4;
+ }
+ else
+ {
+ error_at (m_loc, "%<-march=%s%>: ISA string must begin with rv32 or rv64",
+ m_arch);
+ return NULL;
+ }
+
/* First letter must start with i, e or g. */
switch (*p)
{
@@ -1043,51 +1058,6 @@ riscv_subset_list::parse_std_ext (const char *p)
"%<i%> or %<g%>", m_arch);
return NULL;
}
-
- while (p != NULL && *p)
- {
- char subset[2] = {0, 0};
-
- if (*p == 'x' || *p == 's' || *p == 'z')
- break;
-
- if (*p == '_')
- {
- p++;
- continue;
- }
-
- std_ext = *p;
-
- /* Checking canonical order. */
- const char *prior_std_exts = std_exts;
-
- while (*std_exts && std_ext != *std_exts)
- std_exts++;
-
- subset[0] = std_ext;
- if (std_ext != *std_exts && standard_extensions_p (subset))
- {
- error_at (m_loc,
- "%<-march=%s%>: ISA string is not in canonical order. "
- "%<%c%>",
- m_arch, *p);
- /* Extension ordering is invalid. Ignore this extension and keep
- searching for other issues with remaining extensions. */
- std_exts = prior_std_exts;
- p++;
- continue;
- }
-
- std_exts++;
-
- p++;
-
- p = parsing_subset_version (subset, p, &major_version, &minor_version,
- /* std_ext_p= */ true, &explicit_version_p);
-
- add (subset, major_version, minor_version, explicit_version_p, false);
- }
return p;
}
@@ -1097,10 +1067,12 @@ riscv_subset_list::parse_std_ext (const char *p)
Points to the end of extensions.
Arguments:
- `p`: Current parsing position. */
+ `p`: Current parsing position.
+ `exact_single_p`: True if input string is exactly an extension and end
+ with '\0'. */
const char *
-riscv_subset_list::parse_single_std_ext (const char *p)
+riscv_subset_list::parse_single_std_ext (const char *p, bool exact_single_p)
{
if (*p == 'x' || *p == 's' || *p == 'z')
{
@@ -1111,6 +1083,11 @@ riscv_subset_list::parse_single_std_ext (const char *p)
return nullptr;
}
+ if (exact_single_p && strlen (p) > 1)
+ {
+ return nullptr;
+ }
+
unsigned major_version = 0;
unsigned minor_version = 0;
bool explicit_version_p = false;
@@ -1251,6 +1228,15 @@ riscv_subset_list::check_conflict_ext ()
if (lookup ("zcmp"))
error_at (m_loc, "%<-march=%s%>: zcd conflicts with zcmp", m_arch);
}
+
+ if ((lookup ("v") || lookup ("zve32x")
+ || lookup ("zve64x") || lookup ("zve32f")
+ || lookup ("zve64f") || lookup ("zve64d")
+ || lookup ("zvl32b") || lookup ("zvl64b")
+ || lookup ("zvl128b") || lookup ("zvfh"))
+ && lookup ("xtheadvector"))
+ error_at (m_loc, "%<-march=%s%>: xtheadvector conflicts with vector "
+ "extension or its sub-extensions", m_arch);
}
/* Parsing function for multi-letter extensions.
@@ -1261,13 +1247,16 @@ riscv_subset_list::check_conflict_ext ()
Arguments:
`p`: Current parsing position.
`ext_type`: What kind of extensions, 's', 'z' or 'x'.
- `ext_type_str`: Full name for kind of extension. */
+ `ext_type_str`: Full name for kind of extension.
+ `exact_single_p`: True if input string is exactly an extension and end
+ with '\0'. */
const char *
riscv_subset_list::parse_single_multiletter_ext (const char *p,
const char *ext_type,
- const char *ext_type_str)
+ const char *ext_type_str,
+ bool exact_single_p)
{
unsigned major_version = 0;
unsigned minor_version = 0;
@@ -1279,6 +1268,7 @@ riscv_subset_list::parse_single_multiletter_ext (const char *p,
char *subset = xstrdup (p);
const char *end_of_version;
bool explicit_version_p = false;
+ char *q = subset;
char *ext;
char backup;
size_t len = strlen (p);
@@ -1286,6 +1276,17 @@ riscv_subset_list::parse_single_multiletter_ext (const char *p,
bool found_any_number = false;
bool found_minor_version = false;
+ if (!exact_single_p)
+ {
+ /* Extension may not ended with '\0', may come with another extension
+ which concat by '_' */
+ /* Parse until end of this extension including version number. */
+ while (*++q != '\0' && *q != '_')
+ ;
+
+ len = q - subset;
+ }
+
end_of_version_pos = len;
/* Find the begin of version string. */
for (i = len -1; i > 0; --i)
@@ -1352,139 +1353,32 @@ riscv_subset_list::parse_single_multiletter_ext (const char *p,
}
-/* Parsing function for multi-letter extensions.
-
- Return Value:
- Points to the end of extensions.
-
- Arguments:
- `p`: Current parsing position.
- `ext_type`: What kind of extensions, 's', 'z' or 'x'.
- `ext_type_str`: Full name for kind of extension. */
-
-const char *
-riscv_subset_list::parse_multiletter_ext (const char *p,
- const char *ext_type,
- const char *ext_type_str)
-{
- unsigned major_version = 0;
- unsigned minor_version = 0;
- size_t ext_type_len = strlen (ext_type);
-
- while (*p)
- {
- if (*p == '_')
- {
- p++;
- continue;
- }
-
- if (strncmp (p, ext_type, ext_type_len) != 0)
- break;
-
- char *subset = xstrdup (p);
- char *q = subset;
- const char *end_of_version;
- bool explicit_version_p = false;
- char *ext;
- char backup;
- size_t len;
- size_t end_of_version_pos, i;
- bool found_any_number = false;
- bool found_minor_version = false;
-
- /* Parse until end of this extension including version number. */
- while (*++q != '\0' && *q != '_')
- ;
-
- backup = *q;
- *q = '\0';
- len = q - subset;
- *q = backup;
-
- end_of_version_pos = len;
- /* Find the begin of version string. */
- for (i = len -1; i > 0; --i)
- {
- if (ISDIGIT (subset[i]))
- {
- found_any_number = true;
- continue;
- }
- /* Might be version seperator, but need to check one more char,
- we only allow <major>p<minor>, so we could stop parsing if found
- any more `p`. */
- if (subset[i] == 'p' &&
- !found_minor_version &&
- found_any_number && ISDIGIT (subset[i-1]))
- {
- found_minor_version = true;
- continue;
- }
-
- end_of_version_pos = i + 1;
- break;
- }
-
- backup = subset[end_of_version_pos];
- subset[end_of_version_pos] = '\0';
- ext = xstrdup (subset);
- subset[end_of_version_pos] = backup;
-
- end_of_version
- = parsing_subset_version (ext, subset + end_of_version_pos, &major_version, &minor_version,
- /* std_ext_p= */ false, &explicit_version_p);
- free (ext);
-
- if (end_of_version == NULL)
- return NULL;
-
- subset[end_of_version_pos] = '\0';
-
- if (strlen (subset) == 1)
- {
- error_at (m_loc, "%<-march=%s%>: name of %s must be more than 1 letter",
- m_arch, ext_type_str);
- free (subset);
- return NULL;
- }
-
- add (subset, major_version, minor_version, explicit_version_p, false);
- p += end_of_version - subset;
- free (subset);
-
- if (*p != '\0' && *p != '_')
- {
- error_at (m_loc, "%<-march=%s%>: %s must separate with %<_%>",
- m_arch, ext_type_str);
- return NULL;
- }
- }
-
- return p;
-}
-
/* Parsing function for a single-letter or multi-letter extensions.
Return Value:
Points to the end of extensions.
Arguments:
- `p`: Current parsing position. */
+ `p`: Current parsing position.
+ `exact_single_p`: True if input string is exactly an extension and end
+ with '\0'. */
const char *
-riscv_subset_list::parse_single_ext (const char *p)
+riscv_subset_list::parse_single_ext (const char *p, bool exact_single_p)
{
switch (p[0])
{
case 'x':
- return parse_single_multiletter_ext (p, "x", "non-standard extension");
+ return parse_single_multiletter_ext (p, "x", "non-standard extension",
+ exact_single_p);
case 'z':
- return parse_single_multiletter_ext (p, "z", "sub-extension");
+ return parse_single_multiletter_ext (p, "z", "sub-extension",
+ exact_single_p);
case 's':
- return parse_single_multiletter_ext (p, "s", "supervisor extension");
+ return parse_single_multiletter_ext (p, "s", "supervisor extension",
+ exact_single_p);
default:
- return parse_single_std_ext (p);
+ return parse_single_std_ext (p, exact_single_p);
}
}
@@ -1499,54 +1393,31 @@ riscv_subset_list::parse (const char *arch, location_t loc)
riscv_subset_list *subset_list = new riscv_subset_list (arch, loc);
riscv_subset_t *itr;
const char *p = arch;
- if (startswith (p, "rv32"))
- {
- subset_list->m_xlen = 32;
- p += 4;
- }
- else if (startswith (p, "rv64"))
- {
- subset_list->m_xlen = 64;
- p += 4;
- }
- else
- {
- error_at (loc, "%<-march=%s%>: ISA string must begin with rv32 or rv64",
- arch);
- goto fail;
- }
-
- /* Parsing standard extension. */
- p = subset_list->parse_std_ext (p);
-
+ p = subset_list->parse_base_ext (p);
if (p == NULL)
goto fail;
- /* Parsing sub-extensions. */
- p = subset_list->parse_multiletter_ext (p, "z", "sub-extension");
-
- if (p == NULL)
- goto fail;
-
- /* Parsing supervisor extension. */
- p = subset_list->parse_multiletter_ext (p, "s", "supervisor extension");
-
- if (p == NULL)
- goto fail;
-
- /* Parsing non-standard extension. */
- p = subset_list->parse_multiletter_ext (p, "x", "non-standard extension");
+ while (p && *p)
+ {
+ switch (*p)
+ {
+ case '_':
+ ++p;
+ continue;
+ case 'e':
+ case 'i':
+ case 'g':
+ error_at (loc, "%<-march=%s%>: i, e or g must be the first extension",
+ arch);
+ goto fail;
+ default:
+ p = subset_list->parse_single_ext (p, /*exact_single_p=*/ false);
+ }
+ }
if (p == NULL)
goto fail;
- if (*p != '\0')
- {
- error_at (loc, "%<-march=%s%>: unexpected ISA string at end: %qs",
- arch, p);
- goto fail;
- }
-
for (itr = subset_list->m_head; itr != NULL; itr = itr->next)
{
subset_list->handle_implied_ext (itr->name.c_str ());
@@ -1730,6 +1601,7 @@ static const riscv_ext_flag_table_t riscv_ext_flag_table[] =
{"xcvmac", &gcc_options::x_riscv_xcv_subext, MASK_XCVMAC},
{"xcvalu", &gcc_options::x_riscv_xcv_subext, MASK_XCVALU},
{"xcvelw", &gcc_options::x_riscv_xcv_subext, MASK_XCVELW},
+ {"xcvsimd", &gcc_options::x_riscv_xcv_subext, MASK_XCVSIMD},
{"xtheadba", &gcc_options::x_riscv_xthead_subext, MASK_XTHEADBA},
{"xtheadbb", &gcc_options::x_riscv_xthead_subext, MASK_XTHEADBB},
@@ -1743,6 +1615,19 @@ static const riscv_ext_flag_table_t riscv_ext_flag_table[] =
{"xtheadmemidx", &gcc_options::x_riscv_xthead_subext, MASK_XTHEADMEMIDX},
{"xtheadmempair", &gcc_options::x_riscv_xthead_subext, MASK_XTHEADMEMPAIR},
{"xtheadsync", &gcc_options::x_riscv_xthead_subext, MASK_XTHEADSYNC},
+ {"xtheadvector", &gcc_options::x_riscv_xthead_subext, MASK_XTHEADVECTOR},
+ {"xtheadvector", &gcc_options::x_riscv_vector_elen_flags, MASK_VECTOR_ELEN_32},
+ {"xtheadvector", &gcc_options::x_riscv_vector_elen_flags, MASK_VECTOR_ELEN_64},
+ {"xtheadvector", &gcc_options::x_riscv_vector_elen_flags, MASK_VECTOR_ELEN_FP_32},
+ {"xtheadvector", &gcc_options::x_riscv_vector_elen_flags, MASK_VECTOR_ELEN_FP_64},
+ {"xtheadvector", &gcc_options::x_riscv_vector_elen_flags, MASK_VECTOR_ELEN_FP_16},
+ {"xtheadvector", &gcc_options::x_riscv_zvl_flags, MASK_ZVL32B},
+ {"xtheadvector", &gcc_options::x_riscv_zvl_flags, MASK_ZVL64B},
+ {"xtheadvector", &gcc_options::x_riscv_zvl_flags, MASK_ZVL128B},
+ {"xtheadvector", &gcc_options::x_riscv_zf_subext, MASK_ZVFHMIN},
+ {"xtheadvector", &gcc_options::x_riscv_zf_subext, MASK_ZVFH},
+ {"xtheadvector", &gcc_options::x_target_flags, MASK_FULL_V},
+ {"xtheadvector", &gcc_options::x_target_flags, MASK_VECTOR},
{"xventanacondops", &gcc_options::x_riscv_xventana_subext, MASK_XVENTANACONDOPS},
diff --git a/gcc/config.gcc b/gcc/config.gcc
index 0035550..a0f9c67 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -549,7 +549,7 @@ riscv*)
extra_objs="${extra_objs} riscv-vector-builtins.o riscv-vector-builtins-shapes.o riscv-vector-builtins-bases.o"
extra_objs="${extra_objs} thead.o riscv-target-attr.o"
d_target_objs="riscv-d.o"
- extra_headers="riscv_vector.h riscv_crypto.h riscv_bitmanip.h"
+ extra_headers="riscv_vector.h riscv_crypto.h riscv_bitmanip.h riscv_th_vector.h"
target_gtfiles="$target_gtfiles \$(srcdir)/config/riscv/riscv-vector-builtins.cc"
target_gtfiles="$target_gtfiles \$(srcdir)/config/riscv/riscv-vector-builtins.h"
;;
@@ -4564,7 +4564,7 @@ case "${target}" in
TM_MULTILIB_CONFIG=
;;
xdefault | xyes)
- TM_MULTILIB_CONFIG=`echo "gfx900,gfx906,gfx908,gfx90a" | sed "s/${with_arch},\?//;s/,$//"`
+ TM_MULTILIB_CONFIG=`echo "gfx900,gfx906,gfx908,gfx90a,gfx1030,gfx1100" | sed "s/${with_arch},\?//;s/,$//"`
;;
*)
TM_MULTILIB_CONFIG="${with_multilib_list}"
diff --git a/gcc/config.in b/gcc/config.in
index 99fd2d8..ce1d073 100644
--- a/gcc/config.in
+++ b/gcc/config.in
@@ -2356,6 +2356,12 @@
#endif
+/* Define if assembler supports %reloc. */
+#ifndef USED_FOR_TARGET
+#undef MIPS_EXPLICIT_RELOCS
+#endif
+
+
/* Define if host mkdir takes a single argument. */
#ifndef USED_FOR_TARGET
#undef MKDIR_TAKES_ONE_ARG
diff --git a/gcc/config/aarch64/aarch64-early-ra.cc b/gcc/config/aarch64/aarch64-early-ra.cc
index 033eac7..1a03d86 100644
--- a/gcc/config/aarch64/aarch64-early-ra.cc
+++ b/gcc/config/aarch64/aarch64-early-ra.cc
@@ -478,7 +478,7 @@ private:
void broaden_colors ();
void finalize_allocation ();
- bool replace_regs (df_ref);
+ bool replace_regs (rtx_insn *, df_ref);
int try_enforce_constraints (rtx_insn *, vec<std::pair<int, int>> &);
void enforce_constraints (rtx_insn *);
bool maybe_convert_to_strided_access (rtx_insn *);
@@ -1173,6 +1173,15 @@ early_ra::preprocess_insns ()
if (!NONDEBUG_INSN_P (insn))
continue;
+ // Mark all registers that occur in addresses as needing a GPR.
+ vec_rtx_properties properties;
+ properties.add_insn (insn, true);
+ for (rtx_obj_reference ref : properties.refs ())
+ if (ref.is_reg ()
+ && ref.in_address ()
+ && !HARD_REGISTER_NUM_P (ref.regno))
+ m_pseudo_regs[ref.regno].flags |= ALLOWS_NONFPR | NEEDS_NONFPR;
+
if (GET_CODE (PATTERN (insn)) == USE
|| GET_CODE (PATTERN (insn)) == CLOBBER)
continue;
@@ -2981,8 +2990,9 @@ early_ra::finalize_allocation ()
}
// Replace any allocno references in REFS with the allocated register.
+// INSN is the instruction that contains REFS.
bool
-early_ra::replace_regs (df_ref refs)
+early_ra::replace_regs (rtx_insn *insn, df_ref refs)
{
bool changed = false;
for (df_ref ref = refs; ref; ref = DF_REF_NEXT_LOC (ref))
@@ -2992,6 +3002,14 @@ early_ra::replace_regs (df_ref refs)
continue;
auto new_regno = range.allocno (0)->hard_regno;
+ if (new_regno == FIRST_PSEUDO_REGISTER)
+ {
+ // Reset a debug instruction if, after DCE, the only remaining
+ // references to a register are in such instructions.
+ gcc_assert (DEBUG_INSN_P (insn));
+ INSN_VAR_LOCATION_LOC (insn) = gen_rtx_UNKNOWN_VAR_LOC ();
+ return true;
+ }
*DF_REF_LOC (ref) = gen_rtx_REG (GET_MODE (DF_REF_REG (ref)), new_regno);
changed = true;
}
@@ -3224,8 +3242,8 @@ early_ra::apply_allocation ()
continue;
bool changed = maybe_convert_to_strided_access (insn);
- changed |= replace_regs (DF_INSN_DEFS (insn));
- changed |= replace_regs (DF_INSN_USES (insn));
+ changed |= replace_regs (insn, DF_INSN_DEFS (insn));
+ changed |= replace_regs (insn, DF_INSN_USES (insn));
if (changed && NONDEBUG_INSN_P (insn))
{
if (GET_CODE (PATTERN (insn)) != USE
@@ -3245,7 +3263,7 @@ early_ra::apply_allocation ()
else
ptr = &XEXP (*ptr, 1);
}
- changed |= replace_regs (DF_INSN_EQ_USES (insn));
+ changed |= replace_regs (insn, DF_INSN_EQ_USES (insn));
if (changed)
df_insn_rescan (insn);
}
diff --git a/gcc/config/aarch64/aarch64-ldp-fusion.cc b/gcc/config/aarch64/aarch64-ldp-fusion.cc
index 689a8c8..22ed95e 100644
--- a/gcc/config/aarch64/aarch64-ldp-fusion.cc
+++ b/gcc/config/aarch64/aarch64-ldp-fusion.cc
@@ -844,11 +844,138 @@ def_upwards_move_range (def_info *def)
return range;
}
+// Class that implements a state machine for building the changes needed to form
+// a store pair instruction. This allows us to easily build the changes in
+// program order, as required by rtl-ssa.
+struct stp_change_builder
+{
+ enum class state
+ {
+ FIRST,
+ INSERT,
+ FIXUP_USE,
+ LAST,
+ DONE
+ };
+
+ enum class action
+ {
+ TOMBSTONE,
+ CHANGE,
+ INSERT,
+ FIXUP_USE
+ };
+
+ struct change
+ {
+ action type;
+ insn_info *insn;
+ };
+
+ bool done () const { return m_state == state::DONE; }
+
+ stp_change_builder (insn_info *insns[2],
+ insn_info *repurpose,
+ insn_info *dest)
+ : m_state (state::FIRST), m_insns { insns[0], insns[1] },
+ m_repurpose (repurpose), m_dest (dest), m_use (nullptr) {}
+
+ change get_change () const
+ {
+ switch (m_state)
+ {
+ case state::FIRST:
+ return {
+ m_insns[0] == m_repurpose ? action::CHANGE : action::TOMBSTONE,
+ m_insns[0]
+ };
+ case state::LAST:
+ return {
+ m_insns[1] == m_repurpose ? action::CHANGE : action::TOMBSTONE,
+ m_insns[1]
+ };
+ case state::INSERT:
+ return { action::INSERT, m_dest };
+ case state::FIXUP_USE:
+ return { action::FIXUP_USE, m_use->insn () };
+ case state::DONE:
+ break;
+ }
+
+ gcc_unreachable ();
+ }
+
+ // Transition to the next state.
+ void advance ()
+ {
+ switch (m_state)
+ {
+ case state::FIRST:
+ if (m_repurpose)
+ m_state = state::LAST;
+ else
+ m_state = state::INSERT;
+ break;
+ case state::INSERT:
+ {
+ def_info *def = memory_access (m_insns[0]->defs ());
+ while (*def->next_def ()->insn () <= *m_dest)
+ def = def->next_def ();
+
+ // Now we know DEF feeds the insertion point for the new stp.
+ // Look for any uses of DEF that will consume the new stp.
+ gcc_assert (*def->insn () <= *m_dest
+ && *def->next_def ()->insn () > *m_dest);
+
+ auto set = as_a<set_info *> (def);
+ for (auto use : set->nondebug_insn_uses ())
+ if (*use->insn () > *m_dest)
+ {
+ m_use = use;
+ break;
+ }
+
+ if (m_use)
+ m_state = state::FIXUP_USE;
+ else
+ m_state = state::LAST;
+ break;
+ }
+ case state::FIXUP_USE:
+ m_use = m_use->next_nondebug_insn_use ();
+ if (!m_use)
+ m_state = state::LAST;
+ break;
+ case state::LAST:
+ m_state = state::DONE;
+ break;
+ case state::DONE:
+ gcc_unreachable ();
+ }
+ }
+
+private:
+ state m_state;
+
+ // Original candidate stores.
+ insn_info *m_insns[2];
+
+ // If non-null, this is a candidate insn to change into an stp. Otherwise we
+ // are deleting both original insns and inserting a new insn for the stp.
+ insn_info *m_repurpose;
+
+ // Destionation of the stp, it will be placed immediately after m_dest.
+ insn_info *m_dest;
+
+ // Current nondebug use that needs updating due to stp insertion.
+ use_info *m_use;
+};
+
// Given candidate store insns FIRST and SECOND, see if we can re-purpose one
// of them (together with its def of memory) for the stp insn. If so, return
// that insn. Otherwise, return null.
static insn_info *
-decide_stp_strategy (insn_info *first,
+try_repurpose_store (insn_info *first,
insn_info *second,
const insn_range_info &move_range)
{
@@ -1215,6 +1342,315 @@ ldp_bb_info::track_tombstone (int uid)
gcc_unreachable (); // Bit should have changed.
}
+// Reset the debug insn containing USE (the debug insn has been
+// optimized away).
+static void
+reset_debug_use (use_info *use)
+{
+ auto use_insn = use->insn ();
+ auto use_rtl = use_insn->rtl ();
+ insn_change change (use_insn);
+ change.new_uses = {};
+ INSN_VAR_LOCATION_LOC (use_rtl) = gen_rtx_UNKNOWN_VAR_LOC ();
+ crtl->ssa->change_insn (change);
+}
+
+// USE is a debug use that needs updating because DEF (a def of the same
+// register) is being re-ordered over it. If BASE is non-null, then DEF
+// is an update of the register BASE by a constant, given by WB_OFFSET,
+// and we can preserve debug info by accounting for the change in side
+// effects.
+static void
+fixup_debug_use (obstack_watermark &attempt,
+ use_info *use,
+ def_info *def,
+ rtx base,
+ poly_int64 wb_offset)
+{
+ auto use_insn = use->insn ();
+ if (base)
+ {
+ auto use_rtl = use_insn->rtl ();
+ insn_change change (use_insn);
+
+ gcc_checking_assert (REG_P (base) && use->regno () == REGNO (base));
+ change.new_uses = check_remove_regno_access (attempt,
+ change.new_uses,
+ use->regno ());
+
+ // The effect of the writeback is to add WB_OFFSET to BASE. If
+ // we're re-ordering DEF below USE, then we update USE by adding
+ // WB_OFFSET to it. Otherwise, if we're re-ordering DEF above
+ // USE, we update USE by undoing the effect of the writeback
+ // (subtracting WB_OFFSET).
+ use_info *new_use;
+ if (*def->insn () > *use_insn)
+ {
+ // We now need USE_INSN to consume DEF. Create a new use of DEF.
+ //
+ // N.B. this means until we call change_insns for the main change
+ // group we will temporarily have a debug use consuming a def that
+ // comes after it, but RTL-SSA doesn't currently support updating
+ // debug insns as part of the main change group (together with
+ // nondebug changes), so we will have to live with this update
+ // leaving the IR being temporarily inconsistent. It seems to
+ // work out OK once the main change group is applied.
+ wb_offset *= -1;
+ new_use = crtl->ssa->create_use (attempt,
+ use_insn,
+ as_a<set_info *> (def));
+ }
+ else
+ new_use = find_access (def->insn ()->uses (), use->regno ());
+
+ change.new_uses = insert_access (attempt, new_use, change.new_uses);
+
+ if (dump_file)
+ {
+ const char *dir = (*def->insn () < *use_insn) ? "down" : "up";
+ pretty_printer pp;
+ pp_string (&pp, "[");
+ pp_access (&pp, use, 0);
+ pp_string (&pp, "]");
+ pp_string (&pp, " due to wb def ");
+ pp_string (&pp, "[");
+ pp_access (&pp, def, 0);
+ pp_string (&pp, "]");
+ fprintf (dump_file,
+ " i%d: fix up debug use %s re-ordered %s, "
+ "sub r%u -> r%u + ",
+ use_insn->uid (), pp_formatted_text (&pp),
+ dir, REGNO (base), REGNO (base));
+ print_dec (wb_offset, dump_file);
+ fprintf (dump_file, "\n");
+ }
+
+ insn_propagation prop (use_rtl, base,
+ plus_constant (GET_MODE (base), base, wb_offset));
+ if (prop.apply_to_pattern (&INSN_VAR_LOCATION_LOC (use_rtl)))
+ crtl->ssa->change_insn (change);
+ else
+ {
+ if (dump_file)
+ fprintf (dump_file, " i%d: RTL substitution failed (%s)"
+ ", resetting debug insn", use_insn->uid (),
+ prop.failure_reason);
+ reset_debug_use (use);
+ }
+ }
+ else
+ {
+ if (dump_file)
+ {
+ pretty_printer pp;
+ pp_string (&pp, "[");
+ pp_access (&pp, use, 0);
+ pp_string (&pp, "] due to re-ordered load def [");
+ pp_access (&pp, def, 0);
+ pp_string (&pp, "]");
+ fprintf (dump_file, " i%d: resetting debug use %s\n",
+ use_insn->uid (), pp_formatted_text (&pp));
+ }
+ reset_debug_use (use);
+ }
+}
+
+// Update debug uses when folding in a trailing add insn to form a
+// writeback pair.
+//
+// ATTEMPT is used to allocate RTL-SSA temporaries for the changes,
+// the final pair is placed immediately after PAIR_DST, TRAILING_ADD
+// is a trailing add insn which is being folded into the pair to make it
+// use writeback addressing, and WRITEBACK_EFFECT is the pattern for
+// TRAILING_ADD.
+static void
+fixup_debug_uses_trailing_add (obstack_watermark &attempt,
+ insn_info *pair_dst,
+ insn_info *trailing_add,
+ rtx writeback_effect)
+{
+ rtx base = SET_DEST (writeback_effect);
+
+ poly_int64 wb_offset;
+ rtx base2 = strip_offset (SET_SRC (writeback_effect), &wb_offset);
+ gcc_checking_assert (rtx_equal_p (base, base2));
+
+ auto defs = trailing_add->defs ();
+ gcc_checking_assert (defs.size () == 1);
+ def_info *def = defs[0];
+
+ if (auto set = safe_dyn_cast<set_info *> (def->prev_def ()))
+ for (auto use : iterate_safely (set->debug_insn_uses ()))
+ if (*use->insn () > *pair_dst)
+ // DEF is getting re-ordered above USE, fix up USE accordingly.
+ fixup_debug_use (attempt, use, def, base, wb_offset);
+}
+
+// Called from fuse_pair, fixes up any debug uses that will be affected
+// by the changes.
+//
+// ATTEMPT is the obstack watermark used to allocate RTL-SSA temporaries for
+// the changes, INSNS gives the candidate insns: at this point the use/def
+// information should still be as on entry to fuse_pair, but the patterns may
+// have changed, hence we pass ORIG_RTL which contains the original patterns
+// for the candidate insns.
+//
+// The final pair will be placed immediately after PAIR_DST, LOAD_P is true if
+// it is a load pair, bit I of WRITEBACK is set if INSNS[I] originally had
+// writeback, and WRITEBACK_EFFECT is an rtx describing the overall update to
+// the base register in the final pair (if any). BASE_REGNO gives the register
+// number of the base register used in the final pair.
+static void
+fixup_debug_uses (obstack_watermark &attempt,
+ insn_info *insns[2],
+ rtx orig_rtl[2],
+ insn_info *pair_dst,
+ insn_info *trailing_add,
+ bool load_p,
+ int writeback,
+ rtx writeback_effect,
+ unsigned base_regno)
+{
+ // USE is a debug use that needs updating because DEF (a def of the
+ // resource) is being re-ordered over it. If WRITEBACK_PAT is non-NULL,
+ // then it gives the original RTL pattern for DEF's insn, and DEF is a
+ // writeback update of the base register.
+ //
+ // This simply unpacks WRITEBACK_PAT if needed and calls fixup_debug_use.
+ auto update_debug_use = [&](use_info *use, def_info *def,
+ rtx writeback_pat)
+ {
+ poly_int64 offset = 0;
+ rtx base = NULL_RTX;
+ if (writeback_pat)
+ {
+ rtx mem = XEXP (writeback_pat, load_p);
+ gcc_checking_assert (GET_RTX_CLASS (GET_CODE (XEXP (mem, 0)))
+ == RTX_AUTOINC);
+
+ base = ldp_strip_offset (mem, &offset);
+ gcc_checking_assert (REG_P (base) && REGNO (base) == base_regno);
+ }
+ fixup_debug_use (attempt, use, def, base, offset);
+ };
+
+ // Reset any debug uses of mem over which we re-ordered a store.
+ //
+ // It would be nice to try and preserve debug info here, but it seems that
+ // would require doing alias analysis to see if the store aliases with the
+ // debug use, which seems a little extravagant just to preserve debug info.
+ if (!load_p)
+ {
+ auto def = memory_access (insns[0]->defs ());
+ auto last_def = memory_access (insns[1]->defs ());
+ for (; def != last_def; def = def->next_def ())
+ {
+ auto set = as_a<set_info *> (def);
+ for (auto use : iterate_safely (set->debug_insn_uses ()))
+ {
+ if (dump_file)
+ fprintf (dump_file, " i%d: resetting debug use of mem\n",
+ use->insn ()->uid ());
+ reset_debug_use (use);
+ }
+ }
+ }
+
+ // Now let's take care of register uses, starting with debug uses
+ // attached to defs from our first insn.
+ for (auto def : insns[0]->defs ())
+ {
+ auto set = dyn_cast<set_info *> (def);
+ if (!set || set->is_mem () || !set->first_debug_insn_use ())
+ continue;
+
+ def_info *defs[2] = {
+ def,
+ find_access (insns[1]->defs (), def->regno ())
+ };
+
+ rtx writeback_pats[2] = {};
+ if (def->regno () == base_regno)
+ for (int i = 0; i < 2; i++)
+ if (writeback & (1 << i))
+ {
+ gcc_checking_assert (defs[i]);
+ writeback_pats[i] = orig_rtl[i];
+ }
+
+ // Now that we've characterized the defs involved, go through the
+ // debug uses and determine how to update them (if needed).
+ for (auto use : iterate_safely (set->debug_insn_uses ()))
+ {
+ if (*pair_dst < *use->insn () && defs[1])
+ // We're re-ordering defs[1] above a previous use of the
+ // same resource.
+ update_debug_use (use, defs[1], writeback_pats[1]);
+ else if (*pair_dst >= *use->insn ())
+ // We're re-ordering defs[0] below its use.
+ update_debug_use (use, defs[0], writeback_pats[0]);
+ }
+ }
+
+ // Now let's look at registers which are def'd by the second insn
+ // but not by the first insn, there may still be debug uses of a
+ // previous def which can be affected by moving the second insn up.
+ for (auto def : insns[1]->defs ())
+ {
+ // This should be M log N where N is the number of defs in
+ // insns[0] and M is the number of defs in insns[1].
+ if (def->is_mem () || find_access (insns[0]->defs (), def->regno ()))
+ continue;
+
+ auto prev_set = safe_dyn_cast<set_info *> (def->prev_def ());
+ if (!prev_set)
+ continue;
+
+ rtx writeback_pat = NULL_RTX;
+ if (def->regno () == base_regno && (writeback & 2))
+ writeback_pat = orig_rtl[1];
+
+ // We have a def in insns[1] which isn't def'd by the first insn.
+ // Look to the previous def and see if it has any debug uses.
+ for (auto use : iterate_safely (prev_set->debug_insn_uses ()))
+ if (*pair_dst < *use->insn ())
+ // We're ordering DEF above a previous use of the same register.
+ update_debug_use (use, def, writeback_pat);
+ }
+
+ if ((writeback & 2) && !writeback_effect)
+ {
+ // If the second insn initially had writeback but the final
+ // pair does not, then there may be trailing debug uses of the
+ // second writeback def which need re-parenting: do that.
+ auto def = find_access (insns[1]->defs (), base_regno);
+ gcc_assert (def);
+ auto set = as_a<set_info *> (def);
+ for (auto use : iterate_safely (set->debug_insn_uses ()))
+ {
+ insn_change change (use->insn ());
+ change.new_uses = check_remove_regno_access (attempt,
+ change.new_uses,
+ base_regno);
+ auto new_use = find_access (insns[0]->uses (), base_regno);
+
+ // N.B. insns must have already shared a common base due to writeback.
+ gcc_assert (new_use);
+
+ if (dump_file)
+ fprintf (dump_file,
+ " i%d: cancelling wb, re-parenting trailing debug use\n",
+ use->insn ()->uid ());
+
+ change.new_uses = insert_access (attempt, new_use, change.new_uses);
+ crtl->ssa->change_insn (change);
+ }
+ }
+ else if (trailing_add)
+ fixup_debug_uses_trailing_add (attempt, pair_dst, trailing_add,
+ writeback_effect);
+}
+
// Try and actually fuse the pair given by insns I1 and I2.
//
// Here we've done enough analysis to know this is safe, we only
@@ -1251,9 +1687,12 @@ ldp_bb_info::fuse_pair (bool load_p,
insn_info *first = (*i1 < *i2) ? i1 : i2;
insn_info *second = (first == i1) ? i2 : i1;
+ insn_info *pair_dst = move_range.singleton ();
+ gcc_assert (pair_dst);
+
insn_info *insns[2] = { first, second };
- auto_vec<insn_change *, 4> changes (4);
+ auto_vec<insn_change *> changes;
auto_vec<int, 2> tombstone_uids (2);
rtx pats[2] = {
@@ -1261,6 +1700,13 @@ ldp_bb_info::fuse_pair (bool load_p,
PATTERN (second->rtl ())
};
+ // Make copies of the patterns as we might need to refer to the original RTL
+ // later, for example when updating debug uses (which is after we've updated
+ // one or both of the patterns in the candidate insns).
+ rtx orig_rtl[2];
+ for (int i = 0; i < 2; i++)
+ orig_rtl[i] = copy_rtx (pats[i]);
+
use_array input_uses[2] = { first->uses (), second->uses () };
def_array input_defs[2] = { first->defs (), second->defs () };
@@ -1455,9 +1901,9 @@ ldp_bb_info::fuse_pair (bool load_p,
if (load_p)
{
- changes.quick_push (make_delete (first));
+ changes.safe_push (make_delete (first));
pair_change = make_change (second);
- changes.quick_push (pair_change);
+ changes.safe_push (pair_change);
pair_change->move_range = move_range;
pair_change->new_defs = merge_access_arrays (attempt,
@@ -1474,18 +1920,20 @@ ldp_bb_info::fuse_pair (bool load_p,
}
else
{
- insn_info *store_to_change = decide_stp_strategy (first, second,
+ using Action = stp_change_builder::action;
+ insn_info *store_to_change = try_repurpose_store (first, second,
move_range);
-
- if (store_to_change && dump_file)
- fprintf (dump_file, " stp: re-purposing store %d\n",
- store_to_change->uid ());
-
+ stp_change_builder builder (insns, store_to_change, pair_dst);
insn_change *change;
- for (int i = 0; i < 2; i++)
+ set_info *new_set = nullptr;
+ for (; !builder.done (); builder.advance ())
{
- change = make_change (insns[i]);
- if (insns[i] == store_to_change)
+ auto action = builder.get_change ();
+ change = (action.type == Action::INSERT)
+ ? nullptr : make_change (action.insn);
+ switch (action.type)
+ {
+ case Action::CHANGE:
{
set_pair_pat (change);
change->new_uses = merge_access_arrays (attempt,
@@ -1495,67 +1943,100 @@ ldp_bb_info::fuse_pair (bool load_p,
auto d2 = drop_memory_access (input_defs[1]);
change->new_defs = merge_access_arrays (attempt, d1, d2);
gcc_assert (change->new_defs.is_valid ());
- def_info *stp_def = memory_access (store_to_change->defs ());
+ def_info *stp_def = memory_access (change->insn ()->defs ());
change->new_defs = insert_access (attempt,
stp_def,
change->new_defs);
gcc_assert (change->new_defs.is_valid ());
change->move_range = move_range;
pair_change = change;
+ break;
}
- else
+ case Action::TOMBSTONE:
{
- // Note that we are turning this insn into a tombstone,
- // we need to keep track of these if we go ahead with the
- // change.
- tombstone_uids.quick_push (insns[i]->uid ());
- rtx_insn *rti = insns[i]->rtl ();
+ tombstone_uids.quick_push (change->insn ()->uid ());
+ rtx_insn *rti = change->insn ()->rtl ();
validate_change (rti, &PATTERN (rti), gen_tombstone (), true);
validate_change (rti, &REG_NOTES (rti), NULL_RTX, true);
change->new_uses = use_array (nullptr, 0);
+ break;
}
- gcc_assert (change->new_uses.is_valid ());
- changes.quick_push (change);
- }
+ case Action::INSERT:
+ {
+ if (dump_file)
+ fprintf (dump_file,
+ " stp: cannot re-purpose candidate stores\n");
- if (!store_to_change)
- {
- // Tricky case. Cannot re-purpose existing insns for stp.
- // Need to insert new insn.
- if (dump_file)
- fprintf (dump_file,
- " stp fusion: cannot re-purpose candidate stores\n");
-
- auto new_insn = crtl->ssa->create_insn (attempt, INSN, pair_pat);
- change = make_change (new_insn);
- change->move_range = move_range;
- change->new_uses = merge_access_arrays (attempt,
- input_uses[0],
- input_uses[1]);
- gcc_assert (change->new_uses.is_valid ());
-
- auto d1 = drop_memory_access (input_defs[0]);
- auto d2 = drop_memory_access (input_defs[1]);
- change->new_defs = merge_access_arrays (attempt, d1, d2);
- gcc_assert (change->new_defs.is_valid ());
-
- auto new_set = crtl->ssa->create_set (attempt, new_insn, memory);
- change->new_defs = insert_access (attempt, new_set,
- change->new_defs);
- gcc_assert (change->new_defs.is_valid ());
- changes.safe_insert (1, change);
- pair_change = change;
+ auto new_insn = crtl->ssa->create_insn (attempt, INSN, pair_pat);
+ change = make_change (new_insn);
+ change->move_range = move_range;
+ change->new_uses = merge_access_arrays (attempt,
+ input_uses[0],
+ input_uses[1]);
+ gcc_assert (change->new_uses.is_valid ());
+
+ auto d1 = drop_memory_access (input_defs[0]);
+ auto d2 = drop_memory_access (input_defs[1]);
+ change->new_defs = merge_access_arrays (attempt, d1, d2);
+ gcc_assert (change->new_defs.is_valid ());
+
+ new_set = crtl->ssa->create_set (attempt, new_insn, memory);
+ change->new_defs = insert_access (attempt, new_set,
+ change->new_defs);
+ gcc_assert (change->new_defs.is_valid ());
+ pair_change = change;
+ break;
+ }
+ case Action::FIXUP_USE:
+ {
+ // This use now needs to consume memory from our stp.
+ if (dump_file)
+ fprintf (dump_file,
+ " stp: changing i%d to use mem from new stp "
+ "(after i%d)\n",
+ action.insn->uid (), pair_dst->uid ());
+ change->new_uses = drop_memory_access (change->new_uses);
+ gcc_assert (new_set);
+ auto new_use = crtl->ssa->create_use (attempt, action.insn,
+ new_set);
+ change->new_uses = insert_access (attempt, new_use,
+ change->new_uses);
+ break;
+ }
+ }
+ changes.safe_push (change);
}
}
if (trailing_add)
- changes.quick_push (make_delete (trailing_add));
-
- auto n_changes = changes.length ();
- gcc_checking_assert (n_changes >= 2 && n_changes <= 4);
+ changes.safe_push (make_delete (trailing_add));
+ else if ((writeback & 2) && !writeback_effect)
+ {
+ // The second insn initially had writeback but now the pair does not,
+ // need to update any nondebug uses of the base register def in the
+ // second insn. We'll take care of debug uses later.
+ auto def = find_access (insns[1]->defs (), base_regno);
+ gcc_assert (def);
+ auto set = dyn_cast<set_info *> (def);
+ if (set && set->has_nondebug_uses ())
+ {
+ auto orig_use = find_access (insns[0]->uses (), base_regno);
+ for (auto use : set->nondebug_insn_uses ())
+ {
+ auto change = make_change (use->insn ());
+ change->new_uses = check_remove_regno_access (attempt,
+ change->new_uses,
+ base_regno);
+ change->new_uses = insert_access (attempt,
+ orig_use,
+ change->new_uses);
+ changes.safe_push (change);
+ }
+ }
+ }
auto is_changing = insn_is_changing (changes);
- for (unsigned i = 0; i < n_changes; i++)
+ for (unsigned i = 0; i < changes.length (); i++)
gcc_assert (rtl_ssa::restrict_movement_ignoring (*changes[i], is_changing));
// Check the pair pattern is recog'd.
@@ -1577,6 +2058,11 @@ ldp_bb_info::fuse_pair (bool load_p,
gcc_assert (crtl->ssa->verify_insn_changes (changes));
+ // Fix up any debug uses that will be affected by the changes.
+ if (MAY_HAVE_DEBUG_INSNS)
+ fixup_debug_uses (attempt, insns, orig_rtl, pair_dst, trailing_add,
+ load_p, writeback, writeback_effect, base_regno);
+
confirm_change_group ();
crtl->ssa->change_insns (changes);
@@ -2076,11 +2562,11 @@ ldp_bb_info::try_fuse_pair (bool load_p, unsigned access_size,
ignore[j] = &XEXP (cand_mems[j], 0);
insn_info *h = first_hazard_after (insns[0], ignore[0]);
- if (h && *h <= *insns[1])
+ if (h && *h < *insns[1])
cand.hazards[0] = h;
h = latest_hazard_before (insns[1], ignore[1]);
- if (h && *h >= *insns[0])
+ if (h && *h > *insns[0])
cand.hazards[1] = h;
if (!cand.viable ())
@@ -2439,26 +2925,16 @@ ldp_bb_info::cleanup_tombstones ()
if (!m_emitted_tombstone)
return;
- insn_info *insn = m_bb->head_insn ();
- while (insn)
+ for (auto insn : iterate_safely (m_bb->nondebug_insns ()))
{
- insn_info *next = insn->next_nondebug_insn ();
if (!insn->is_real ()
|| !bitmap_bit_p (&m_tombstone_bitmap, insn->uid ()))
- {
- insn = next;
- continue;
- }
+ continue;
- auto def = memory_access (insn->defs ());
- auto set = dyn_cast<set_info *> (def);
- if (set && set->has_any_uses ())
+ auto set = as_a<set_info *> (memory_access (insn->defs ()));
+ if (set->has_any_uses ())
{
- def_info *prev_def = def->prev_def ();
- auto prev_set = dyn_cast<set_info *> (prev_def);
- if (!prev_set)
- gcc_unreachable ();
-
+ auto prev_set = as_a<set_info *> (set->prev_def ());
while (set->first_use ())
crtl->ssa->reparent_use (set->first_use (), prev_set);
}
@@ -2466,7 +2942,6 @@ ldp_bb_info::cleanup_tombstones ()
// Now set has no uses, we can delete it.
insn_change change (insn, insn_change::DELETE);
crtl->ssa->change_insn (change);
- insn = next;
}
}
@@ -2643,7 +3118,7 @@ try_promote_writeback (insn_info *insn)
rtx wb_effect = NULL_RTX;
def_info *add_def;
- const insn_range_info pair_range (insn->prev_nondebug_insn ());
+ const insn_range_info pair_range (insn);
insn_info *insns[2] = { nullptr, insn };
insn_info *trailing_add = find_trailing_add (insns, pair_range, 0, &wb_effect,
&add_def, base_def, offset,
@@ -2666,14 +3141,24 @@ try_promote_writeback (insn_info *insn)
pair_change.new_defs);
gcc_assert (pair_change.new_defs.is_valid ());
- pair_change.move_range = insn_range_info (insn->prev_nondebug_insn ());
-
auto is_changing = insn_is_changing (changes);
for (unsigned i = 0; i < ARRAY_SIZE (changes); i++)
gcc_assert (rtl_ssa::restrict_movement_ignoring (*changes[i], is_changing));
- gcc_assert (rtl_ssa::recog_ignoring (attempt, pair_change, is_changing));
+ if (!rtl_ssa::recog_ignoring (attempt, pair_change, is_changing))
+ {
+ if (dump_file)
+ fprintf (dump_file, "i%d: recog failed on wb pair, bailing out\n",
+ insn->uid ());
+ cancel_changes (0);
+ return;
+ }
+
gcc_assert (crtl->ssa->verify_insn_changes (changes));
+
+ if (MAY_HAVE_DEBUG_INSNS)
+ fixup_debug_uses_trailing_add (attempt, insn, trailing_add, wb_effect);
+
confirm_change_group ();
crtl->ssa->change_insns (changes);
}
diff --git a/gcc/config/aarch64/aarch64-ldpstp.md b/gcc/config/aarch64/aarch64-ldpstp.md
index b668fa8..b7c0bf0 100644
--- a/gcc/config/aarch64/aarch64-ldpstp.md
+++ b/gcc/config/aarch64/aarch64-ldpstp.md
@@ -23,7 +23,7 @@
(match_operand:GPI 1 "memory_operand" ""))
(set (match_operand:GPI 2 "register_operand" "")
(match_operand:GPI 3 "memory_operand" ""))]
- "aarch64_operands_ok_for_ldpstp (operands, true, <MODE>mode)"
+ "aarch64_operands_ok_for_ldpstp (operands, true)"
[(const_int 0)]
{
aarch64_finish_ldpstp_peephole (operands, true);
@@ -35,7 +35,7 @@
(match_operand:GPI 1 "aarch64_reg_or_zero" ""))
(set (match_operand:GPI 2 "memory_operand" "")
(match_operand:GPI 3 "aarch64_reg_or_zero" ""))]
- "aarch64_operands_ok_for_ldpstp (operands, false, <MODE>mode)"
+ "aarch64_operands_ok_for_ldpstp (operands, false)"
[(const_int 0)]
{
aarch64_finish_ldpstp_peephole (operands, false);
@@ -47,7 +47,7 @@
(match_operand:GPF 1 "memory_operand" ""))
(set (match_operand:GPF 2 "register_operand" "")
(match_operand:GPF 3 "memory_operand" ""))]
- "aarch64_operands_ok_for_ldpstp (operands, true, <MODE>mode)"
+ "aarch64_operands_ok_for_ldpstp (operands, true)"
[(const_int 0)]
{
aarch64_finish_ldpstp_peephole (operands, true);
@@ -59,7 +59,7 @@
(match_operand:GPF 1 "aarch64_reg_or_fp_zero" ""))
(set (match_operand:GPF 2 "memory_operand" "")
(match_operand:GPF 3 "aarch64_reg_or_fp_zero" ""))]
- "aarch64_operands_ok_for_ldpstp (operands, false, <MODE>mode)"
+ "aarch64_operands_ok_for_ldpstp (operands, false)"
[(const_int 0)]
{
aarch64_finish_ldpstp_peephole (operands, false);
@@ -71,7 +71,7 @@
(match_operand:DREG 1 "memory_operand" ""))
(set (match_operand:DREG2 2 "register_operand" "")
(match_operand:DREG2 3 "memory_operand" ""))]
- "aarch64_operands_ok_for_ldpstp (operands, true, <DREG:MODE>mode)"
+ "aarch64_operands_ok_for_ldpstp (operands, true)"
[(const_int 0)]
{
aarch64_finish_ldpstp_peephole (operands, true);
@@ -83,7 +83,7 @@
(match_operand:DREG 1 "register_operand" ""))
(set (match_operand:DREG2 2 "memory_operand" "")
(match_operand:DREG2 3 "register_operand" ""))]
- "aarch64_operands_ok_for_ldpstp (operands, false, <DREG:MODE>mode)"
+ "aarch64_operands_ok_for_ldpstp (operands, false)"
[(const_int 0)]
{
aarch64_finish_ldpstp_peephole (operands, false);
@@ -96,7 +96,7 @@
(set (match_operand:VQ2 2 "register_operand" "")
(match_operand:VQ2 3 "memory_operand" ""))]
"TARGET_FLOAT
- && aarch64_operands_ok_for_ldpstp (operands, true, <VQ:MODE>mode)
+ && aarch64_operands_ok_for_ldpstp (operands, true)
&& (aarch64_tune_params.extra_tuning_flags
& AARCH64_EXTRA_TUNE_NO_LDP_STP_QREGS) == 0"
[(const_int 0)]
@@ -111,7 +111,7 @@
(set (match_operand:VQ2 2 "memory_operand" "")
(match_operand:VQ2 3 "register_operand" ""))]
"TARGET_FLOAT
- && aarch64_operands_ok_for_ldpstp (operands, false, <VQ:MODE>mode)
+ && aarch64_operands_ok_for_ldpstp (operands, false)
&& (aarch64_tune_params.extra_tuning_flags
& AARCH64_EXTRA_TUNE_NO_LDP_STP_QREGS) == 0"
[(const_int 0)]
@@ -128,7 +128,7 @@
(sign_extend:DI (match_operand:SI 1 "memory_operand" "")))
(set (match_operand:DI 2 "register_operand" "")
(sign_extend:DI (match_operand:SI 3 "memory_operand" "")))]
- "aarch64_operands_ok_for_ldpstp (operands, true, SImode)"
+ "aarch64_operands_ok_for_ldpstp (operands, true)"
[(const_int 0)]
{
aarch64_finish_ldpstp_peephole (operands, true, SIGN_EXTEND);
@@ -140,7 +140,7 @@
(zero_extend:DI (match_operand:SI 1 "memory_operand" "")))
(set (match_operand:DI 2 "register_operand" "")
(zero_extend:DI (match_operand:SI 3 "memory_operand" "")))]
- "aarch64_operands_ok_for_ldpstp (operands, true, SImode)"
+ "aarch64_operands_ok_for_ldpstp (operands, true)"
[(const_int 0)]
{
aarch64_finish_ldpstp_peephole (operands, true, ZERO_EXTEND);
@@ -162,7 +162,7 @@
(match_operand:DSX 1 "aarch64_reg_zero_or_fp_zero" ""))
(set (match_operand:<FCVT_TARGET> 2 "memory_operand" "")
(match_operand:<FCVT_TARGET> 3 "aarch64_reg_zero_or_fp_zero" ""))]
- "aarch64_operands_ok_for_ldpstp (operands, false, <V_INT_EQUIV>mode)"
+ "aarch64_operands_ok_for_ldpstp (operands, false)"
[(const_int 0)]
{
aarch64_finish_ldpstp_peephole (operands, false);
diff --git a/gcc/config/aarch64/aarch64-protos.h b/gcc/config/aarch64/aarch64-protos.h
index 4c70e8a..a0b142e 100644
--- a/gcc/config/aarch64/aarch64-protos.h
+++ b/gcc/config/aarch64/aarch64-protos.h
@@ -1043,7 +1043,7 @@ int aarch64_ccmp_mode_to_code (machine_mode mode);
bool extract_base_offset_in_addr (rtx mem, rtx *base, rtx *offset);
bool aarch64_mergeable_load_pair_p (machine_mode, rtx, rtx);
-bool aarch64_operands_ok_for_ldpstp (rtx *, bool, machine_mode);
+bool aarch64_operands_ok_for_ldpstp (rtx *, bool);
bool aarch64_operands_adjust_ok_for_ldpstp (rtx *, bool, machine_mode);
bool aarch64_mem_ok_with_ldpstp_policy_model (rtx, bool, machine_mode);
bool aarch64_ldpstp_operand_mode_p (machine_mode);
diff --git a/gcc/config/aarch64/aarch64-simd.md b/gcc/config/aarch64/aarch64-simd.md
index 6f48b4d..f036f6c 100644
--- a/gcc/config/aarch64/aarch64-simd.md
+++ b/gcc/config/aarch64/aarch64-simd.md
@@ -389,26 +389,6 @@
[(set_attr "type" "neon_mul_<Vetype><q>")]
)
-;; Advanced SIMD does not support vector DImode MUL, but SVE does.
-;; Make use of the overlap between Z and V registers to implement the V2DI
-;; optab for TARGET_SVE. The mulvnx2di3 expander can
-;; handle the TARGET_SVE2 case transparently.
-(define_expand "mulv2di3"
- [(set (match_operand:V2DI 0 "register_operand")
- (mult:V2DI (match_operand:V2DI 1 "register_operand")
- (match_operand:V2DI 2 "aarch64_sve_vsm_operand")))]
- "TARGET_SVE"
- {
- machine_mode sve_mode = VNx2DImode;
- rtx sve_op0 = simplify_gen_subreg (sve_mode, operands[0], V2DImode, 0);
- rtx sve_op1 = simplify_gen_subreg (sve_mode, operands[1], V2DImode, 0);
- rtx sve_op2 = simplify_gen_subreg (sve_mode, operands[2], V2DImode, 0);
-
- emit_insn (gen_mulvnx2di3 (sve_op0, sve_op1, sve_op2));
- DONE;
- }
-)
-
(define_insn "bswap<mode>2"
[(set (match_operand:VDQHSD 0 "register_operand" "=w")
(bswap:VDQHSD (match_operand:VDQHSD 1 "register_operand" "w")))]
@@ -2678,27 +2658,6 @@
[(set_attr "type" "neon_fp_div_<stype><q>")]
)
-;; SVE has vector integer divisions, unlike Advanced SIMD.
-;; We can use it with Advanced SIMD modes to expose the V2DI and V4SI
-;; optabs to the midend.
-(define_expand "<su_optab>div<mode>3"
- [(set (match_operand:VQDIV 0 "register_operand")
- (ANY_DIV:VQDIV
- (match_operand:VQDIV 1 "register_operand")
- (match_operand:VQDIV 2 "register_operand")))]
- "TARGET_SVE"
- {
- machine_mode sve_mode
- = aarch64_full_sve_mode (GET_MODE_INNER (<MODE>mode)).require ();
- rtx sve_op0 = simplify_gen_subreg (sve_mode, operands[0], <MODE>mode, 0);
- rtx sve_op1 = simplify_gen_subreg (sve_mode, operands[1], <MODE>mode, 0);
- rtx sve_op2 = simplify_gen_subreg (sve_mode, operands[2], <MODE>mode, 0);
-
- emit_insn (gen_<su_optab>div<vnx>3 (sve_op0, sve_op1, sve_op2));
- DONE;
- }
-)
-
(define_insn "neg<mode>2<vczle><vczbe>"
[(set (match_operand:VHSDF 0 "register_operand" "=w")
(neg:VHSDF (match_operand:VHSDF 1 "register_operand" "w")))]
@@ -8262,11 +8221,21 @@
|| (memory_operand (operands[0], V8DImode)
&& register_operand (operands[1], V8DImode)))
{
+ std::pair<rtx, rtx> last_pair = {};
for (int offset = 0; offset < 64; offset += 16)
- emit_move_insn (simplify_gen_subreg (TImode, operands[0],
- V8DImode, offset),
- simplify_gen_subreg (TImode, operands[1],
- V8DImode, offset));
+ {
+ std::pair<rtx, rtx> pair = {
+ simplify_gen_subreg (TImode, operands[0], V8DImode, offset),
+ simplify_gen_subreg (TImode, operands[1], V8DImode, offset)
+ };
+ if (register_operand (pair.first, TImode)
+ && reg_overlap_mentioned_p (pair.first, pair.second))
+ last_pair = pair;
+ else
+ emit_move_insn (pair.first, pair.second);
+ }
+ if (last_pair.first)
+ emit_move_insn (last_pair.first, last_pair.second);
DONE;
}
else
@@ -8546,6 +8515,18 @@
[(set_attr "type" "neon_permute<q>")]
)
+;; ZIP1 ignores the contents of the upper halves of the registers,
+;; so we can describe 128-bit operations in terms of 64-bit inputs.
+(define_insn "aarch64_zip1<mode>_low"
+ [(set (match_operand:VQ 0 "register_operand" "=w")
+ (unspec:VQ [(match_operand:<VHALF> 1 "register_operand" "w")
+ (match_operand:<VHALF> 2 "register_operand" "w")]
+ UNSPEC_ZIP1))]
+ "TARGET_SIMD"
+ "zip1\t%0.<Vtype>, %1.<Vtype>, %2.<Vtype>"
+ [(set_attr "type" "neon_permute_q")]
+)
+
;; This instruction's pattern is generated directly by
;; aarch64_expand_vec_perm_const, so any changes to the pattern would
;; need corresponding changes there. Note that the immediate (third)
@@ -9726,9 +9707,8 @@
not sufficient uses of the zero to make the split worthwhile. */
rtx res = simplify_gen_subreg (<VNARROWQ2>mode, operands[0],
<MODE>mode, 0);
- rtx zero = aarch64_gen_shareable_zero (<VNARROWQ2>mode);
- rtx op = lowpart_subreg (<VNARROWQ2>mode, operands[1], <VNARROWQ>mode);
- emit_insn (gen_aarch64_zip1<Vnarrowq2> (res, op, zero));
+ rtx zero = aarch64_gen_shareable_zero (<VNARROWQ>mode);
+ emit_insn (gen_aarch64_zip1<Vnarrowq2>_low (res, operands[1], zero));
DONE;
}
[(set_attr "type" "neon_shift_imm_long")]
diff --git a/gcc/config/aarch64/aarch64-sve-builtins-shapes.cc b/gcc/config/aarch64/aarch64-sve-builtins-shapes.cc
index 2692b08..f190770 100644
--- a/gcc/config/aarch64/aarch64-sve-builtins-shapes.cc
+++ b/gcc/config/aarch64/aarch64-sve-builtins-shapes.cc
@@ -338,6 +338,14 @@ build_one (function_builder &b, const char *signature,
unsigned int ti, unsigned int gi, unsigned int pi,
bool force_direct_overloads)
{
+ /* For simplicity, function definitions are allowed to use the group
+ suffix lists vg2 and vg4 for shapes that have _single forms,
+ even though the _single form applies only to vgNx2 and vgNx4,
+ not to vgNx1. */
+ if (mode_suffix_id == MODE_single
+ && group_suffixes[group.groups[gi]].vectors_per_tuple == 1)
+ return;
+
/* Byte forms of svdupq take 16 arguments. */
auto_vec<tree, 16> argument_types;
function_instance instance (group.base_name, *group.base, *group.shape,
diff --git a/gcc/config/aarch64/aarch64-sve-builtins.cc b/gcc/config/aarch64/aarch64-sve-builtins.cc
index c2f1486..11f5c5c 100644
--- a/gcc/config/aarch64/aarch64-sve-builtins.cc
+++ b/gcc/config/aarch64/aarch64-sve-builtins.cc
@@ -3474,7 +3474,7 @@ vector_cst_all_same (tree v, unsigned int step)
unsigned int nelts = lcm * VECTOR_CST_NELTS_PER_PATTERN (v);
tree first_el = VECTOR_CST_ENCODED_ELT (v, 0);
for (unsigned int i = 0; i < nelts; i += step)
- if (!operand_equal_p (VECTOR_CST_ENCODED_ELT (v, i), first_el, 0))
+ if (!operand_equal_p (VECTOR_CST_ELT (v, i), first_el, 0))
return false;
return true;
diff --git a/gcc/config/aarch64/aarch64-sve.md b/gcc/config/aarch64/aarch64-sve.md
index e1e3c1b..eca8623 100644
--- a/gcc/config/aarch64/aarch64-sve.md
+++ b/gcc/config/aarch64/aarch64-sve.md
@@ -3789,16 +3789,35 @@
[(set (match_operand:SVE_I 0 "register_operand")
(unspec:SVE_I
[(match_dup 3)
- (SVE_INT_BINARY_IMM:SVE_I
+ (SVE_INT_BINARY_MULTI:SVE_I
(match_operand:SVE_I 1 "register_operand")
(match_operand:SVE_I 2 "aarch64_sve_<sve_imm_con>_operand"))]
UNSPEC_PRED_X))]
"TARGET_SVE"
{
+ operands[3] = aarch64_ptrue_reg (<VPRED>mode);
+ }
+)
+
+;; Unpredicated integer binary operations that have an immediate form.
+;; Advanced SIMD does not support vector DImode MUL, but SVE does.
+;; Make use of the overlap between Z and V registers to implement the V2DI
+;; optab for TARGET_SVE. The mulvnx2di3 expander can
+;; handle the TARGET_SVE2 case transparently.
+(define_expand "mul<mode>3"
+ [(set (match_operand:SVE_I_SIMD_DI 0 "register_operand")
+ (unspec:SVE_I_SIMD_DI
+ [(match_dup 3)
+ (mult:SVE_I_SIMD_DI
+ (match_operand:SVE_I_SIMD_DI 1 "register_operand")
+ (match_operand:SVE_I_SIMD_DI 2 "aarch64_sve_vsm_operand"))]
+ UNSPEC_PRED_X))]
+ "TARGET_SVE"
+ {
/* SVE2 supports the MUL (vectors, unpredicated) form. Emit the simple
pattern for it here rather than splitting off the MULT expander
separately. */
- if (TARGET_SVE2 && <CODE> == MULT)
+ if (TARGET_SVE2)
{
emit_move_insn (operands[0], gen_rtx_MULT (<MODE>mode,
operands[1], operands[2]));
@@ -3814,26 +3833,26 @@
;; and would make the instruction seem less uniform to the register
;; allocator.
(define_insn_and_split "@aarch64_pred_<optab><mode>"
- [(set (match_operand:SVE_I 0 "register_operand")
- (unspec:SVE_I
+ [(set (match_operand:SVE_I_SIMD_DI 0 "register_operand")
+ (unspec:SVE_I_SIMD_DI
[(match_operand:<VPRED> 1 "register_operand")
- (SVE_INT_BINARY_IMM:SVE_I
- (match_operand:SVE_I 2 "register_operand")
- (match_operand:SVE_I 3 "aarch64_sve_<sve_imm_con>_operand"))]
+ (SVE_INT_BINARY_IMM:SVE_I_SIMD_DI
+ (match_operand:SVE_I_SIMD_DI 2 "register_operand")
+ (match_operand:SVE_I_SIMD_DI 3 "aarch64_sve_<sve_imm_con>_operand"))]
UNSPEC_PRED_X))]
"TARGET_SVE"
{@ [ cons: =0 , 1 , 2 , 3 ; attrs: movprfx ]
[ w , Upl , %0 , <sve_imm_con> ; * ] #
- [ w , Upl , 0 , w ; * ] <sve_int_op>\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype>
+ [ w , Upl , 0 , w ; * ] <sve_int_op>\t%Z0.<Vetype>, %1/m, %Z0.<Vetype>, %Z3.<Vetype>
[ ?&w , Upl , w , <sve_imm_con> ; yes ] #
- [ ?&w , Upl , w , w ; yes ] movprfx\t%0, %2\;<sve_int_op>\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype>
+ [ ?&w , Upl , w , w ; yes ] movprfx\t%Z0, %Z2\;<sve_int_op>\t%Z0.<Vetype>, %1/m, %Z0.<Vetype>, %Z3.<Vetype>
}
; Split the unpredicated form after reload, so that we don't have
; the unnecessary PTRUE.
"&& reload_completed
&& !register_operand (operands[3], <MODE>mode)"
[(set (match_dup 0)
- (SVE_INT_BINARY_IMM:SVE_I (match_dup 2) (match_dup 3)))]
+ (SVE_INT_BINARY_IMM:SVE_I_SIMD_DI (match_dup 2) (match_dup 3)))]
""
)
@@ -3841,14 +3860,14 @@
;; These are generated by splitting a predicated instruction whose
;; predicate is unused.
(define_insn "*post_ra_<optab><mode>3"
- [(set (match_operand:SVE_I 0 "register_operand" "=w, ?&w")
- (SVE_INT_BINARY_IMM:SVE_I
- (match_operand:SVE_I 1 "register_operand" "0, w")
- (match_operand:SVE_I 2 "aarch64_sve_<sve_imm_con>_immediate")))]
+ [(set (match_operand:SVE_I_SIMD_DI 0 "register_operand" "=w, ?&w")
+ (SVE_INT_BINARY_IMM:SVE_I_SIMD_DI
+ (match_operand:SVE_I_SIMD_DI 1 "register_operand" "0, w")
+ (match_operand:SVE_I_SIMD_DI 2 "aarch64_sve_<sve_imm_con>_immediate")))]
"TARGET_SVE && reload_completed"
"@
- <sve_int_op>\t%0.<Vetype>, %0.<Vetype>, #%<sve_imm_prefix>2
- movprfx\t%0, %1\;<sve_int_op>\t%0.<Vetype>, %0.<Vetype>, #%<sve_imm_prefix>2"
+ <sve_int_op>\t%Z0.<Vetype>, %Z0.<Vetype>, #%<sve_imm_prefix>2
+ movprfx\t%Z0, %Z1\;<sve_int_op>\t%Z0.<Vetype>, %Z0.<Vetype>, #%<sve_imm_prefix>2"
[(set_attr "movprfx" "*,yes")]
)
@@ -4458,13 +4477,16 @@
;; -------------------------------------------------------------------------
;; Unpredicated integer division.
+;; SVE has vector integer divisions, unlike Advanced SIMD.
+;; We can use it with Advanced SIMD modes to expose the V2DI and V4SI
+;; optabs to the midend.
(define_expand "<optab><mode>3"
- [(set (match_operand:SVE_FULL_SDI 0 "register_operand")
- (unspec:SVE_FULL_SDI
+ [(set (match_operand:SVE_FULL_SDI_SIMD 0 "register_operand")
+ (unspec:SVE_FULL_SDI_SIMD
[(match_dup 3)
- (SVE_INT_BINARY_SD:SVE_FULL_SDI
- (match_operand:SVE_FULL_SDI 1 "register_operand")
- (match_operand:SVE_FULL_SDI 2 "register_operand"))]
+ (SVE_INT_BINARY_SD:SVE_FULL_SDI_SIMD
+ (match_operand:SVE_FULL_SDI_SIMD 1 "register_operand")
+ (match_operand:SVE_FULL_SDI_SIMD 2 "register_operand"))]
UNSPEC_PRED_X))]
"TARGET_SVE"
{
@@ -4474,18 +4496,18 @@
;; Integer division predicated with a PTRUE.
(define_insn "@aarch64_pred_<optab><mode>"
- [(set (match_operand:SVE_FULL_SDI 0 "register_operand")
- (unspec:SVE_FULL_SDI
+ [(set (match_operand:SVE_FULL_SDI_SIMD 0 "register_operand")
+ (unspec:SVE_FULL_SDI_SIMD
[(match_operand:<VPRED> 1 "register_operand")
- (SVE_INT_BINARY_SD:SVE_FULL_SDI
- (match_operand:SVE_FULL_SDI 2 "register_operand")
- (match_operand:SVE_FULL_SDI 3 "register_operand"))]
+ (SVE_INT_BINARY_SD:SVE_FULL_SDI_SIMD
+ (match_operand:SVE_FULL_SDI_SIMD 2 "register_operand")
+ (match_operand:SVE_FULL_SDI_SIMD 3 "register_operand"))]
UNSPEC_PRED_X))]
"TARGET_SVE"
{@ [ cons: =0 , 1 , 2 , 3 ; attrs: movprfx ]
- [ w , Upl , 0 , w ; * ] <sve_int_op>\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype>
- [ w , Upl , w , 0 ; * ] <sve_int_op>r\t%0.<Vetype>, %1/m, %0.<Vetype>, %2.<Vetype>
- [ ?&w , Upl , w , w ; yes ] movprfx\t%0, %2\;<sve_int_op>\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype>
+ [ w , Upl , 0 , w ; * ] <sve_int_op>\t%Z0.<Vetype>, %1/m, %Z0.<Vetype>, %Z3.<Vetype>
+ [ w , Upl , w , 0 ; * ] <sve_int_op>r\t%Z0.<Vetype>, %1/m, %Z0.<Vetype>, %Z2.<Vetype>
+ [ ?&w , Upl , w , w ; yes ] movprfx\t%Z0, %Z2\;<sve_int_op>\t%Z0.<Vetype>, %1/m, %Z0.<Vetype>, %Z3.<Vetype>
}
)
diff --git a/gcc/config/aarch64/aarch64-sve2.md b/gcc/config/aarch64/aarch64-sve2.md
index 1d1eb8b..934e570 100644
--- a/gcc/config/aarch64/aarch64-sve2.md
+++ b/gcc/config/aarch64/aarch64-sve2.md
@@ -615,29 +615,29 @@
;; -------------------------------------------------------------------------
(define_insn "@aarch64_mul_lane_<mode>"
- [(set (match_operand:SVE_FULL_HSDI 0 "register_operand" "=w")
- (mult:SVE_FULL_HSDI
- (unspec:SVE_FULL_HSDI
- [(match_operand:SVE_FULL_HSDI 2 "register_operand" "<sve_lane_con>")
+ [(set (match_operand:SVE_FULL_HSDI_SIMD_DI 0 "register_operand" "=w")
+ (mult:SVE_FULL_HSDI_SIMD_DI
+ (unspec:SVE_FULL_HSDI_SIMD_DI
+ [(match_operand:SVE_FULL_HSDI_SIMD_DI 2 "register_operand" "<sve_lane_con>")
(match_operand:SI 3 "const_int_operand")]
UNSPEC_SVE_LANE_SELECT)
- (match_operand:SVE_FULL_HSDI 1 "register_operand" "w")))]
+ (match_operand:SVE_FULL_HSDI_SIMD_DI 1 "register_operand" "w")))]
"TARGET_SVE2"
- "mul\t%0.<Vetype>, %1.<Vetype>, %2.<Vetype>[%3]"
+ "mul\t%Z0.<Vetype>, %Z1.<Vetype>, %Z2.<Vetype>[%3]"
)
;; The 2nd and 3rd alternatives are valid for just TARGET_SVE as well but
;; we include them here to allow matching simpler, unpredicated RTL.
(define_insn "*aarch64_mul_unpredicated_<mode>"
- [(set (match_operand:SVE_I 0 "register_operand")
- (mult:SVE_I
- (match_operand:SVE_I 1 "register_operand")
- (match_operand:SVE_I 2 "aarch64_sve_vsm_operand")))]
+ [(set (match_operand:SVE_I_SIMD_DI 0 "register_operand")
+ (mult:SVE_I_SIMD_DI
+ (match_operand:SVE_I_SIMD_DI 1 "register_operand")
+ (match_operand:SVE_I_SIMD_DI 2 "aarch64_sve_vsm_operand")))]
"TARGET_SVE2"
{@ [ cons: =0 , 1 , 2 ; attrs: movprfx ]
- [ w , w , w ; * ] mul\t%0.<Vetype>, %1.<Vetype>, %2.<Vetype>
- [ w , 0 , vsm ; * ] mul\t%0.<Vetype>, %0.<Vetype>, #%2
- [ ?&w , w , vsm ; yes ] movprfx\t%0, %1\;mul\t%0.<Vetype>, %0.<Vetype>, #%2
+ [ w , w , w ; * ] mul\t%Z0.<Vetype>, %Z1.<Vetype>, %Z2.<Vetype>
+ [ w , 0 , vsm ; * ] mul\t%Z0.<Vetype>, %Z0.<Vetype>, #%2
+ [ ?&w , w , vsm ; yes ] movprfx\t%Z0, %Z1\;mul\t%Z0.<Vetype>, %Z0.<Vetype>, #%2
}
)
diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc
index e6bd3fd..a37d47b 100644
--- a/gcc/config/aarch64/aarch64.cc
+++ b/gcc/config/aarch64/aarch64.cc
@@ -2637,6 +2637,28 @@ aarch64_gen_compare_reg_maybe_ze (RTX_CODE code, rtx x, rtx y,
return aarch64_gen_compare_reg (code, x, y);
}
+/* Generate conditional branch to LABEL, comparing X to 0 using CODE.
+ Return the jump instruction. */
+
+static rtx
+aarch64_gen_compare_zero_and_branch (rtx_code code, rtx x,
+ rtx_code_label *label)
+{
+ if (aarch64_track_speculation)
+ {
+ /* Emit an explicit compare instruction, so that we can correctly
+ track the condition codes. */
+ rtx cc_reg = aarch64_gen_compare_reg (code, x, const0_rtx);
+ x = gen_rtx_fmt_ee (code, GET_MODE (cc_reg), cc_reg, const0_rtx);
+ }
+ else
+ x = gen_rtx_fmt_ee (code, VOIDmode, x, const0_rtx);
+
+ x = gen_rtx_IF_THEN_ELSE (VOIDmode, x,
+ gen_rtx_LABEL_REF (Pmode, label), pc_rtx);
+ return gen_rtx_SET (pc_rtx, x);
+}
+
/* Consider the operation:
OPERANDS[0] = CODE (OPERANDS[1], OPERANDS[2]) + OPERANDS[3]
@@ -7221,6 +7243,10 @@ aarch64_function_arg_boundary (machine_mode mode, const_tree type)
static fixed_size_mode
aarch64_get_reg_raw_mode (int regno)
{
+ /* Don't use any non GP registers for __builtin_apply and
+ __builtin_return if general registers only mode is requested. */
+ if (TARGET_GENERAL_REGS_ONLY && !GP_REGNUM_P (regno))
+ return as_a <fixed_size_mode> (VOIDmode);
if (TARGET_SVE && FP_REGNUM_P (regno))
/* Don't use the SVE part of the register for __builtin_apply and
__builtin_return. The SVE registers aren't used by the normal PCS,
@@ -9878,11 +9904,10 @@ aarch64_expand_epilogue (rtx_call_insn *sibcall)
to be SP; letting the CFA move during this adjustment
is just as correct as retaining the CFA from the body
of the function. Therefore, do nothing special. */
- rtx label = gen_label_rtx ();
- rtx x = gen_rtx_EQ (VOIDmode, EH_RETURN_TAKEN_RTX, const0_rtx);
- x = gen_rtx_IF_THEN_ELSE (VOIDmode, x,
- gen_rtx_LABEL_REF (Pmode, label), pc_rtx);
- rtx jump = emit_jump_insn (gen_rtx_SET (pc_rtx, x));
+ rtx_code_label *label = gen_label_rtx ();
+ rtx x = aarch64_gen_compare_zero_and_branch (EQ, EH_RETURN_TAKEN_RTX,
+ label);
+ rtx jump = emit_jump_insn (x);
JUMP_LABEL (jump) = label;
LABEL_NUSES (label)++;
emit_insn (gen_add2_insn (stack_pointer_rtx,
@@ -10221,7 +10246,9 @@ aarch64_classify_index (struct aarch64_address_info *info, rtx x,
type = ADDRESS_REG_UXTW;
index = XEXP (XEXP (x, 0), 0);
shift = exact_log2 (INTVAL (XEXP (XEXP (x, 0), 1)));
- if (INTVAL (XEXP (x, 1)) != (HOST_WIDE_INT)0xffffffff << shift)
+ /* Avoid undefined code dealing with shift being -1. */
+ if (shift != -1
+ && INTVAL (XEXP (x, 1)) != (HOST_WIDE_INT)0xffffffff << shift)
shift = -1;
}
/* (and:DI (ashift:DI (reg:DI) (const_int shift))
@@ -24653,19 +24680,8 @@ aarch64_split_compare_and_swap (rtx operands[])
if (!is_weak)
{
- if (aarch64_track_speculation)
- {
- /* Emit an explicit compare instruction, so that we can correctly
- track the condition codes. */
- rtx cc_reg = aarch64_gen_compare_reg (NE, scratch, const0_rtx);
- x = gen_rtx_NE (GET_MODE (cc_reg), cc_reg, const0_rtx);
- }
- else
- x = gen_rtx_NE (VOIDmode, scratch, const0_rtx);
-
- x = gen_rtx_IF_THEN_ELSE (VOIDmode, x,
- gen_rtx_LABEL_REF (Pmode, label1), pc_rtx);
- aarch64_emit_unlikely_jump (gen_rtx_SET (pc_rtx, x));
+ x = aarch64_gen_compare_zero_and_branch (NE, scratch, label1);
+ aarch64_emit_unlikely_jump (x);
}
else
aarch64_gen_compare_reg (NE, scratch, const0_rtx);
@@ -24681,18 +24697,8 @@ aarch64_split_compare_and_swap (rtx operands[])
emit_label (label2);
aarch64_emit_store_exclusive (mode, scratch, mem, rval, model_rtx);
- if (aarch64_track_speculation)
- {
- /* Emit an explicit compare instruction, so that we can correctly
- track the condition codes. */
- rtx cc_reg = aarch64_gen_compare_reg (NE, scratch, const0_rtx);
- x = gen_rtx_NE (GET_MODE (cc_reg), cc_reg, const0_rtx);
- }
- else
- x = gen_rtx_NE (VOIDmode, scratch, const0_rtx);
- x = gen_rtx_IF_THEN_ELSE (VOIDmode, x,
- gen_rtx_LABEL_REF (Pmode, label1), pc_rtx);
- aarch64_emit_unlikely_jump (gen_rtx_SET (pc_rtx, x));
+ x = aarch64_gen_compare_zero_and_branch (NE, scratch, label1);
+ aarch64_emit_unlikely_jump (x);
label2 = label3;
}
@@ -24776,19 +24782,8 @@ aarch64_split_atomic_op (enum rtx_code code, rtx old_out, rtx new_out, rtx mem,
aarch64_emit_store_exclusive (mode, cond, mem,
gen_lowpart (mode, new_out), model_rtx);
- if (aarch64_track_speculation)
- {
- /* Emit an explicit compare instruction, so that we can correctly
- track the condition codes. */
- rtx cc_reg = aarch64_gen_compare_reg (NE, cond, const0_rtx);
- x = gen_rtx_NE (GET_MODE (cc_reg), cc_reg, const0_rtx);
- }
- else
- x = gen_rtx_NE (VOIDmode, cond, const0_rtx);
-
- x = gen_rtx_IF_THEN_ELSE (VOIDmode, x,
- gen_rtx_LABEL_REF (Pmode, label), pc_rtx);
- aarch64_emit_unlikely_jump (gen_rtx_SET (pc_rtx, x));
+ x = aarch64_gen_compare_zero_and_branch (NE, cond, label);
+ aarch64_emit_unlikely_jump (x);
/* Emit any final barrier needed for a __sync operation. */
if (is_sync)
@@ -27671,12 +27666,10 @@ aarch64_mem_ok_with_ldpstp_policy_model (rtx mem, bool load, machine_mode mode)
}
/* Given OPERANDS of consecutive load/store, check if we can merge
- them into ldp/stp. LOAD is true if they are load instructions.
- MODE is the mode of memory operands. */
+ them into ldp/stp. LOAD is true if they are load instructions. */
bool
-aarch64_operands_ok_for_ldpstp (rtx *operands, bool load,
- machine_mode mode)
+aarch64_operands_ok_for_ldpstp (rtx *operands, bool load)
{
enum reg_class rclass_1, rclass_2;
rtx mem_1, mem_2, reg_1, reg_2;
@@ -27705,10 +27698,6 @@ aarch64_operands_ok_for_ldpstp (rtx *operands, bool load,
if (MEM_VOLATILE_P (mem_1) || MEM_VOLATILE_P (mem_2))
return false;
- /* Check if mem_1 is ok with the ldp-stp policy model. */
- if (!aarch64_mem_ok_with_ldpstp_policy_model (mem_1, load, mode))
- return false;
-
/* Check if the addresses are in the form of [base+offset]. */
bool reversed = false;
if (!aarch64_check_consecutive_mems (&mem_1, &mem_2, &reversed))
@@ -27720,7 +27709,13 @@ aarch64_operands_ok_for_ldpstp (rtx *operands, bool load,
/* The lower memory access must be a mem-pair operand. */
rtx lower_mem = reversed ? mem_2 : mem_1;
- if (!aarch64_mem_pair_operand (lower_mem, GET_MODE (lower_mem)))
+ machine_mode lower_mem_mode = GET_MODE (lower_mem);
+ if (!aarch64_mem_pair_operand (lower_mem, lower_mem_mode))
+ return false;
+
+ /* Check if lower_mem is ok with the ldp-stp policy model. */
+ if (!aarch64_mem_ok_with_ldpstp_policy_model (lower_mem, load,
+ lower_mem_mode))
return false;
if (REG_P (reg_1) && FP_REGNUM_P (REGNO (reg_1)))
@@ -28620,7 +28615,8 @@ aarch64_simd_clone_compute_vecsize_and_simdlen (struct cgraph_node *node,
if (known_eq (clonei->simdlen, 0U))
{
simdlen = exact_div (poly_uint64 (64), nds_elt_bits);
- simdlens.safe_push (simdlen);
+ if (maybe_ne (simdlen, 1U))
+ simdlens.safe_push (simdlen);
simdlens.safe_push (simdlen * 2);
}
else
diff --git a/gcc/config/aarch64/aarch64.opt b/gcc/config/aarch64/aarch64.opt
index c495cb3..ceed5cd 100644
--- a/gcc/config/aarch64/aarch64.opt
+++ b/gcc/config/aarch64/aarch64.opt
@@ -290,12 +290,12 @@ Target Var(aarch64_track_speculation)
Generate code to track when the CPU might be speculating incorrectly.
mearly-ldp-fusion
-Target Var(flag_aarch64_early_ldp_fusion) Optimization Init(0)
+Target Var(flag_aarch64_early_ldp_fusion) Optimization Init(1)
Enable the copy of the AArch64 load/store pair fusion pass that runs before
register allocation.
mlate-ldp-fusion
-Target Var(flag_aarch64_late_ldp_fusion) Optimization Init(0)
+Target Var(flag_aarch64_late_ldp_fusion) Optimization Init(1)
Enable the copy of the AArch64 load/store pair fusion pass that runs after
register allocation.
diff --git a/gcc/config/aarch64/constraints.md b/gcc/config/aarch64/constraints.md
index 8566bef..a2569ce 100644
--- a/gcc/config/aarch64/constraints.md
+++ b/gcc/config/aarch64/constraints.md
@@ -118,7 +118,7 @@
(define_constraint "J"
"A constant that can be used with a SUB operation (once negated)."
(and (match_code "const_int")
- (match_test "aarch64_uimm12_shift (-ival)")))
+ (match_test "aarch64_uimm12_shift (- (unsigned HOST_WIDE_INT) ival)")))
;; We can't use the mode of a CONST_INT to determine the context in
;; which it is being used, so we must have a separate constraint for
diff --git a/gcc/config/aarch64/iterators.md b/gcc/config/aarch64/iterators.md
index 942270e..99cde46 100644
--- a/gcc/config/aarch64/iterators.md
+++ b/gcc/config/aarch64/iterators.md
@@ -108,9 +108,6 @@
;; Copy of the above.
(define_mode_iterator DREG2 [DREG])
-;; Advanced SIMD modes for integer divides.
-(define_mode_iterator VQDIV [V4SI V2DI])
-
;; All modes suitable to store/load pair (2 elements) using STP/LDP.
(define_mode_iterator VP_2E [V2SI V2SF V2DI V2DF])
@@ -471,6 +468,10 @@
;; elements.
(define_mode_iterator SVE_FULL_HSDI [VNx8HI VNx4SI VNx2DI])
+;; Fully-packed SVE integer vector modes that have 16-bit, 32-bit or 64-bit
+;; elements and Advanced SIMD Fully-packed 64-bit elements.
+(define_mode_iterator SVE_FULL_HSDI_SIMD_DI [SVE_FULL_HSDI V2DI])
+
;; Fully-packed SVE integer vector modes that have 16-bit or 32-bit
;; elements.
(define_mode_iterator SVE_FULL_HSI [VNx8HI VNx4SI])
@@ -488,6 +489,10 @@
;; Fully-packed SVE integer vector modes that have 32-bit or 64-bit elements.
(define_mode_iterator SVE_FULL_SDI [VNx4SI VNx2DI])
+;; Fully-packed SVE and Advanced SIMD integer vector modes that have 32-bit or
+;; 64-bit elements.
+(define_mode_iterator SVE_FULL_SDI_SIMD [SVE_FULL_SDI V4SI V2DI])
+
;; 2x and 4x tuples of the above, excluding 2x DI.
(define_mode_iterator SVE_FULL_SIx2_SDIx4 [VNx8SI VNx16SI VNx8DI])
@@ -550,6 +555,10 @@
VNx4SI VNx2SI
VNx2DI])
+;; All SVE integer vector modes and Advanced SIMD 64-bit vector
+;; element modes
+(define_mode_iterator SVE_I_SIMD_DI [SVE_I V2DI])
+
;; SVE integer vector modes whose elements are 16 bits or wider.
(define_mode_iterator SVE_HSDI [VNx8HI VNx4HI VNx2HI
VNx4SI VNx2SI
@@ -2268,7 +2277,8 @@
(VNx32HI "VNx8BI") (VNx32HF "VNx8BI")
(VNx32BF "VNx8BI")
(VNx16SI "VNx4BI") (VNx16SF "VNx4BI")
- (VNx8DI "VNx2BI") (VNx8DF "VNx2BI")])
+ (VNx8DI "VNx2BI") (VNx8DF "VNx2BI")
+ (V4SI "VNx4BI") (V2DI "VNx2BI")])
;; ...and again in lower case.
(define_mode_attr vpred [(VNx16QI "vnx16bi") (VNx8QI "vnx8bi")
@@ -2370,6 +2380,7 @@
;; The constraint to use for an SVE [SU]DOT, FMUL, FMLA or FMLS lane index.
(define_mode_attr sve_lane_con [(VNx8HI "y") (VNx4SI "y") (VNx2DI "x")
+ (V2DI "x")
(VNx8HF "y") (VNx4SF "y") (VNx2DF "x")])
;; The constraint to use for an SVE FCMLA lane index.
diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md
index 4a98f2d..5816409 100644
--- a/gcc/config/arm/arm.md
+++ b/gcc/config/arm/arm.md
@@ -12578,7 +12578,10 @@
"arm_arch6
&& aarch_rev16_shleft_mask_imm_p (operands[3], SImode)
&& aarch_rev16_shright_mask_imm_p (operands[2], SImode)"
- "rev16\\t%0, %1"
+ "@
+ rev16\t%0, %1
+ rev16%?\t%0, %1
+ rev16%?\t%0, %1"
[(set_attr "arch" "t1,t2,32")
(set_attr "length" "2,2,4")
(set_attr "type" "rev")]
@@ -12595,22 +12598,28 @@
"arm_arch6
&& aarch_rev16_shleft_mask_imm_p (operands[3], SImode)
&& aarch_rev16_shright_mask_imm_p (operands[2], SImode)"
- "rev16\\t%0, %1"
+ "@
+ rev16\t%0, %1
+ rev16%?\t%0, %1
+ rev16%?\t%0, %1"
[(set_attr "arch" "t1,t2,32")
(set_attr "length" "2,2,4")
(set_attr "type" "rev")]
)
-(define_expand "arm_rev16si2"
- [(set (match_operand:SI 0 "s_register_operand")
- (bswap:SI (match_operand:SI 1 "s_register_operand")))]
+;; Similar pattern to match (rotate (bswap) 16)
+(define_insn "arm_rev16si2"
+ [(set (match_operand:SI 0 "register_operand" "=l,l,r")
+ (rotate:SI (bswap:SI (match_operand:SI 1 "register_operand" "l,l,r"))
+ (const_int 16)))]
"arm_arch6"
- {
- rtx left = gen_int_mode (HOST_WIDE_INT_C (0xff00ff00ff00ff00), SImode);
- rtx right = gen_int_mode (HOST_WIDE_INT_C (0xff00ff00ff00ff), SImode);
- emit_insn (gen_arm_rev16si2_alt1 (operands[0], operands[1], right, left));
- DONE;
- }
+ "@
+ rev16\t%0, %1
+ rev16%?\t%0, %1
+ rev16%?\t%0, %1"
+ [(set_attr "arch" "t1,t2,32")
+ (set_attr "length" "2,2,4")
+ (set_attr "type" "rev")]
)
(define_expand "bswaphi2"
diff --git a/gcc/config/arm/parsecpu.awk b/gcc/config/arm/parsecpu.awk
index ddd4f3b..384462b 100644
--- a/gcc/config/arm/parsecpu.awk
+++ b/gcc/config/arm/parsecpu.awk
@@ -529,7 +529,7 @@ function check_cpu (name) {
for (n = 2; n <= exts; n++) {
if (!((cpu_name, extensions[n]) in cpu_opt_remove) \
- && !((cpu_name, extensions[n]) in cpu_optaliases)) {
+ && !((cpu_name, extensions[n]) in cpu_opt_alias)) {
return "error"
}
}
@@ -552,7 +552,7 @@ function check_arch (name) {
for (n = 2; n <= exts; n++) {
if (!((extensions[1], extensions[n]) in arch_opt_remove) \
- && !((extensions[1], extensions[n]) in arch_optaliases)) {
+ && !((extensions[1], extensions[n]) in arch_opt_alias)) {
return "error"
}
}
diff --git a/gcc/config/avr/avr-c.cc b/gcc/config/avr/avr-c.cc
index a122402..60905a7 100644
--- a/gcc/config/avr/avr-c.cc
+++ b/gcc/config/avr/avr-c.cc
@@ -61,190 +61,190 @@ avr_resolve_overloaded_builtin (unsigned int iloc, tree fndecl, void *vargs)
case AVR_BUILTIN_ABSFX:
if (args.length() != 1)
- {
- error_at (loc, "%qs expects 1 argument but %d given",
- "absfx", (int) args.length());
+ {
+ error_at (loc, "%qs expects 1 argument but %d given",
+ "absfx", (int) args.length());
- fold = error_mark_node;
- break;
- }
+ fold = error_mark_node;
+ break;
+ }
type0 = TREE_TYPE (args[0]);
if (!FIXED_POINT_TYPE_P (type0))
- {
- error_at (loc, "%qs expects a fixed-point value as argument",
- "absfx");
+ {
+ error_at (loc, "%qs expects a fixed-point value as argument",
+ "absfx");
- fold = error_mark_node;
- }
+ fold = error_mark_node;
+ }
switch (TYPE_MODE (type0))
- {
- case E_QQmode: id = AVR_BUILTIN_ABSHR; break;
- case E_HQmode: id = AVR_BUILTIN_ABSR; break;
- case E_SQmode: id = AVR_BUILTIN_ABSLR; break;
- case E_DQmode: id = AVR_BUILTIN_ABSLLR; break;
-
- case E_HAmode: id = AVR_BUILTIN_ABSHK; break;
- case E_SAmode: id = AVR_BUILTIN_ABSK; break;
- case E_DAmode: id = AVR_BUILTIN_ABSLK; break;
- case E_TAmode: id = AVR_BUILTIN_ABSLLK; break;
-
- case E_UQQmode:
- case E_UHQmode:
- case E_USQmode:
- case E_UDQmode:
- case E_UHAmode:
- case E_USAmode:
- case E_UDAmode:
- case E_UTAmode:
- warning_at (loc, 0, "using %qs with unsigned type has no effect",
- "absfx");
- return args[0];
-
- default:
- error_at (loc, "no matching fixed-point overload found for %qs",
- "absfx");
-
- fold = error_mark_node;
- break;
- }
+ {
+ case E_QQmode: id = AVR_BUILTIN_ABSHR; break;
+ case E_HQmode: id = AVR_BUILTIN_ABSR; break;
+ case E_SQmode: id = AVR_BUILTIN_ABSLR; break;
+ case E_DQmode: id = AVR_BUILTIN_ABSLLR; break;
+
+ case E_HAmode: id = AVR_BUILTIN_ABSHK; break;
+ case E_SAmode: id = AVR_BUILTIN_ABSK; break;
+ case E_DAmode: id = AVR_BUILTIN_ABSLK; break;
+ case E_TAmode: id = AVR_BUILTIN_ABSLLK; break;
+
+ case E_UQQmode:
+ case E_UHQmode:
+ case E_USQmode:
+ case E_UDQmode:
+ case E_UHAmode:
+ case E_USAmode:
+ case E_UDAmode:
+ case E_UTAmode:
+ warning_at (loc, 0, "using %qs with unsigned type has no effect",
+ "absfx");
+ return args[0];
+
+ default:
+ error_at (loc, "no matching fixed-point overload found for %qs",
+ "absfx");
+
+ fold = error_mark_node;
+ break;
+ }
fold = targetm.builtin_decl (id, true);
if (fold != error_mark_node)
- fold = build_function_call_vec (loc, vNULL, fold, &args, NULL);
+ fold = build_function_call_vec (loc, vNULL, fold, &args, NULL);
break; // absfx
case AVR_BUILTIN_ROUNDFX:
if (args.length() != 2)
- {
- error_at (loc, "%qs expects 2 arguments but %d given",
- "roundfx", (int) args.length());
+ {
+ error_at (loc, "%qs expects 2 arguments but %d given",
+ "roundfx", (int) args.length());
- fold = error_mark_node;
- break;
- }
+ fold = error_mark_node;
+ break;
+ }
type0 = TREE_TYPE (args[0]);
type1 = TREE_TYPE (args[1]);
if (!FIXED_POINT_TYPE_P (type0))
- {
- error_at (loc, "%qs expects a fixed-point value as first argument",
- "roundfx");
+ {
+ error_at (loc, "%qs expects a fixed-point value as first argument",
+ "roundfx");
- fold = error_mark_node;
- }
+ fold = error_mark_node;
+ }
if (!INTEGRAL_TYPE_P (type1))
- {
- error_at (loc, "%qs expects an integer value as second argument",
- "roundfx");
+ {
+ error_at (loc, "%qs expects an integer value as second argument",
+ "roundfx");
- fold = error_mark_node;
- }
+ fold = error_mark_node;
+ }
switch (TYPE_MODE (type0))
- {
- case E_QQmode: id = AVR_BUILTIN_ROUNDHR; break;
- case E_HQmode: id = AVR_BUILTIN_ROUNDR; break;
- case E_SQmode: id = AVR_BUILTIN_ROUNDLR; break;
- case E_DQmode: id = AVR_BUILTIN_ROUNDLLR; break;
-
- case E_UQQmode: id = AVR_BUILTIN_ROUNDUHR; break;
- case E_UHQmode: id = AVR_BUILTIN_ROUNDUR; break;
- case E_USQmode: id = AVR_BUILTIN_ROUNDULR; break;
- case E_UDQmode: id = AVR_BUILTIN_ROUNDULLR; break;
-
- case E_HAmode: id = AVR_BUILTIN_ROUNDHK; break;
- case E_SAmode: id = AVR_BUILTIN_ROUNDK; break;
- case E_DAmode: id = AVR_BUILTIN_ROUNDLK; break;
- case E_TAmode: id = AVR_BUILTIN_ROUNDLLK; break;
-
- case E_UHAmode: id = AVR_BUILTIN_ROUNDUHK; break;
- case E_USAmode: id = AVR_BUILTIN_ROUNDUK; break;
- case E_UDAmode: id = AVR_BUILTIN_ROUNDULK; break;
- case E_UTAmode: id = AVR_BUILTIN_ROUNDULLK; break;
-
- default:
- error_at (loc, "no matching fixed-point overload found for %qs",
- "roundfx");
-
- fold = error_mark_node;
- break;
- }
+ {
+ case E_QQmode: id = AVR_BUILTIN_ROUNDHR; break;
+ case E_HQmode: id = AVR_BUILTIN_ROUNDR; break;
+ case E_SQmode: id = AVR_BUILTIN_ROUNDLR; break;
+ case E_DQmode: id = AVR_BUILTIN_ROUNDLLR; break;
+
+ case E_UQQmode: id = AVR_BUILTIN_ROUNDUHR; break;
+ case E_UHQmode: id = AVR_BUILTIN_ROUNDUR; break;
+ case E_USQmode: id = AVR_BUILTIN_ROUNDULR; break;
+ case E_UDQmode: id = AVR_BUILTIN_ROUNDULLR; break;
+
+ case E_HAmode: id = AVR_BUILTIN_ROUNDHK; break;
+ case E_SAmode: id = AVR_BUILTIN_ROUNDK; break;
+ case E_DAmode: id = AVR_BUILTIN_ROUNDLK; break;
+ case E_TAmode: id = AVR_BUILTIN_ROUNDLLK; break;
+
+ case E_UHAmode: id = AVR_BUILTIN_ROUNDUHK; break;
+ case E_USAmode: id = AVR_BUILTIN_ROUNDUK; break;
+ case E_UDAmode: id = AVR_BUILTIN_ROUNDULK; break;
+ case E_UTAmode: id = AVR_BUILTIN_ROUNDULLK; break;
+
+ default:
+ error_at (loc, "no matching fixed-point overload found for %qs",
+ "roundfx");
+
+ fold = error_mark_node;
+ break;
+ }
fold = targetm.builtin_decl (id, true);
if (fold != error_mark_node)
- fold = build_function_call_vec (loc, vNULL, fold, &args, NULL);
+ fold = build_function_call_vec (loc, vNULL, fold, &args, NULL);
break; // roundfx
case AVR_BUILTIN_COUNTLSFX:
if (args.length() != 1)
- {
- error_at (loc, "%qs expects 1 argument but %d given",
- "countlsfx", (int) args.length());
+ {
+ error_at (loc, "%qs expects 1 argument but %d given",
+ "countlsfx", (int) args.length());
- fold = error_mark_node;
- break;
- }
+ fold = error_mark_node;
+ break;
+ }
type0 = TREE_TYPE (args[0]);
if (!FIXED_POINT_TYPE_P (type0))
- {
- error_at (loc, "%qs expects a fixed-point value as first argument",
- "countlsfx");
+ {
+ error_at (loc, "%qs expects a fixed-point value as first argument",
+ "countlsfx");
- fold = error_mark_node;
- }
+ fold = error_mark_node;
+ }
switch (TYPE_MODE (type0))
- {
- case E_QQmode: id = AVR_BUILTIN_COUNTLSHR; break;
- case E_HQmode: id = AVR_BUILTIN_COUNTLSR; break;
- case E_SQmode: id = AVR_BUILTIN_COUNTLSLR; break;
- case E_DQmode: id = AVR_BUILTIN_COUNTLSLLR; break;
-
- case E_UQQmode: id = AVR_BUILTIN_COUNTLSUHR; break;
- case E_UHQmode: id = AVR_BUILTIN_COUNTLSUR; break;
- case E_USQmode: id = AVR_BUILTIN_COUNTLSULR; break;
- case E_UDQmode: id = AVR_BUILTIN_COUNTLSULLR; break;
-
- case E_HAmode: id = AVR_BUILTIN_COUNTLSHK; break;
- case E_SAmode: id = AVR_BUILTIN_COUNTLSK; break;
- case E_DAmode: id = AVR_BUILTIN_COUNTLSLK; break;
- case E_TAmode: id = AVR_BUILTIN_COUNTLSLLK; break;
-
- case E_UHAmode: id = AVR_BUILTIN_COUNTLSUHK; break;
- case E_USAmode: id = AVR_BUILTIN_COUNTLSUK; break;
- case E_UDAmode: id = AVR_BUILTIN_COUNTLSULK; break;
- case E_UTAmode: id = AVR_BUILTIN_COUNTLSULLK; break;
-
- default:
- error_at (loc, "no matching fixed-point overload found for %qs",
- "countlsfx");
-
- fold = error_mark_node;
- break;
- }
+ {
+ case E_QQmode: id = AVR_BUILTIN_COUNTLSHR; break;
+ case E_HQmode: id = AVR_BUILTIN_COUNTLSR; break;
+ case E_SQmode: id = AVR_BUILTIN_COUNTLSLR; break;
+ case E_DQmode: id = AVR_BUILTIN_COUNTLSLLR; break;
+
+ case E_UQQmode: id = AVR_BUILTIN_COUNTLSUHR; break;
+ case E_UHQmode: id = AVR_BUILTIN_COUNTLSUR; break;
+ case E_USQmode: id = AVR_BUILTIN_COUNTLSULR; break;
+ case E_UDQmode: id = AVR_BUILTIN_COUNTLSULLR; break;
+
+ case E_HAmode: id = AVR_BUILTIN_COUNTLSHK; break;
+ case E_SAmode: id = AVR_BUILTIN_COUNTLSK; break;
+ case E_DAmode: id = AVR_BUILTIN_COUNTLSLK; break;
+ case E_TAmode: id = AVR_BUILTIN_COUNTLSLLK; break;
+
+ case E_UHAmode: id = AVR_BUILTIN_COUNTLSUHK; break;
+ case E_USAmode: id = AVR_BUILTIN_COUNTLSUK; break;
+ case E_UDAmode: id = AVR_BUILTIN_COUNTLSULK; break;
+ case E_UTAmode: id = AVR_BUILTIN_COUNTLSULLK; break;
+
+ default:
+ error_at (loc, "no matching fixed-point overload found for %qs",
+ "countlsfx");
+
+ fold = error_mark_node;
+ break;
+ }
fold = targetm.builtin_decl (id, true);
if (fold != error_mark_node)
- fold = build_function_call_vec (loc, vNULL, fold, &args, NULL);
+ fold = build_function_call_vec (loc, vNULL, fold, &args, NULL);
break; // countlsfx
}
return fold;
}
-
+
/* Implement `REGISTER_TARGET_PRAGMAS'. */
@@ -264,7 +264,7 @@ avr_register_target_pragmas (void)
gcc_assert (i == avr_addrspace[i].id);
if (!ADDR_SPACE_GENERIC_P (i))
- c_register_addr_space (avr_addrspace[i].name, avr_addrspace[i].id);
+ c_register_addr_space (avr_addrspace[i].name, avr_addrspace[i].id);
}
targetm.resolve_overloaded_builtin = avr_resolve_overloaded_builtin;
@@ -333,21 +333,21 @@ avr_cpu_cpp_builtins (struct cpp_reader *pfile)
cpp_define (pfile, "__AVR_TINY__");
/* Define macro "__AVR_TINY_PM_BASE_ADDRESS__" with mapped program memory
- start address. This macro shall be used where mapped program
- memory is accessed, eg. copying data section (__do_copy_data)
- contents to data memory region.
- NOTE:
- Program memory of AVR_TINY devices cannot be accessed directly,
- it has been mapped to the data memory. For AVR_TINY devices
- (ATtiny4/5/9/10/20 and 40) mapped program memory starts at 0x4000. */
+ start address. This macro shall be used where mapped program
+ memory is accessed, eg. copying data section (__do_copy_data)
+ contents to data memory region.
+ NOTE:
+ Program memory of AVR_TINY devices cannot be accessed directly,
+ it has been mapped to the data memory. For AVR_TINY devices
+ (ATtiny4/5/9/10/20 and 40) mapped program memory starts at 0x4000. */
cpp_define_formatted (pfile, "__AVR_TINY_PM_BASE_ADDRESS__=0x%x",
- avr_arch->flash_pm_offset);
+ avr_arch->flash_pm_offset);
}
if (avr_arch->flash_pm_offset)
cpp_define_formatted (pfile, "__AVR_PM_BASE_ADDRESS__=0x%x",
- avr_arch->flash_pm_offset);
+ avr_arch->flash_pm_offset);
if (AVR_HAVE_EIJMP_EICALL)
{
@@ -377,14 +377,14 @@ avr_cpu_cpp_builtins (struct cpp_reader *pfile)
cpp_define (pfile, "__AVR_ERRATA_SKIP__");
if (AVR_HAVE_JMP_CALL)
- cpp_define (pfile, "__AVR_ERRATA_SKIP_JMP_CALL__");
+ cpp_define (pfile, "__AVR_ERRATA_SKIP_JMP_CALL__");
}
if (TARGET_RMW)
cpp_define (pfile, "__AVR_ISA_RMW__");
cpp_define_formatted (pfile, "__AVR_SFR_OFFSET__=0x%x",
- avr_arch->sfr_offset);
+ avr_arch->sfr_offset);
#ifdef WITH_AVRLIBC
cpp_define (pfile, "__WITH_AVRLIBC__");
@@ -478,17 +478,17 @@ avr_cpu_cpp_builtins (struct cpp_reader *pfile)
if (lang_GNU_C ())
{
for (int i = 0; i < ADDR_SPACE_COUNT; i++)
- if (!ADDR_SPACE_GENERIC_P (i)
- /* Only supply __FLASH<n> macro if the address space is reasonable
- for this target. The address space qualifier itself is still
- supported, but using it will throw an error. */
- && avr_addr_space_supported_p ((addr_space_t) i))
- {
- const char *name = avr_addrspace[i].name;
- char *Name = (char*) alloca (1 + strlen (name));
-
- cpp_define (pfile, avr_toupper (Name, name));
- }
+ if (!ADDR_SPACE_GENERIC_P (i)
+ /* Only supply __FLASH<n> macro if the address space is reasonable
+ for this target. The address space qualifier itself is still
+ supported, but using it will throw an error. */
+ && avr_addr_space_supported_p ((addr_space_t) i))
+ {
+ const char *name = avr_addrspace[i].name;
+ char *Name = (char*) alloca (1 + strlen (name));
+
+ cpp_define (pfile, avr_toupper (Name, name));
+ }
}
/* Define builtin macros so that the user can easily query whether or
@@ -502,8 +502,8 @@ avr_cpu_cpp_builtins (struct cpp_reader *pfile)
/* Builtin macros for the __int24 and __uint24 type. */
cpp_define_formatted (pfile, "__INT24_MAX__=8388607%s",
- INT_TYPE_SIZE == 8 ? "LL" : "L");
+ INT_TYPE_SIZE == 8 ? "LL" : "L");
cpp_define (pfile, "__INT24_MIN__=(-__INT24_MAX__-1)");
cpp_define_formatted (pfile, "__UINT24_MAX__=16777215%s",
- INT_TYPE_SIZE == 8 ? "ULL" : "UL");
+ INT_TYPE_SIZE == 8 ? "ULL" : "UL");
}
diff --git a/gcc/config/avr/avr-devices.cc b/gcc/config/avr/avr-devices.cc
index 43d38eb..456a6b7 100644
--- a/gcc/config/avr/avr-devices.cc
+++ b/gcc/config/avr/avr-devices.cc
@@ -130,7 +130,7 @@ avr_mcu_types[] =
#ifndef IN_GEN_AVR_MMCU_TEXI
-static char*
+static char *
avr_archs_str (void)
{
char *archs = concat ("", NULL);
@@ -144,7 +144,7 @@ avr_archs_str (void)
return archs;
}
-
+
void
avr_inform_core_architectures (void)
{
diff --git a/gcc/config/avr/avr-log.cc b/gcc/config/avr/avr-log.cc
index 395e6e6..d702c5f 100644
--- a/gcc/config/avr/avr-log.cc
+++ b/gcc/config/avr/avr-log.cc
@@ -85,7 +85,7 @@ int
avr_vdump (FILE *stream, const char *caller, ...)
{
va_list ap;
-
+
if (stream == NULL && dump_file)
stream = dump_file;
@@ -112,161 +112,161 @@ avr_log_vadump (FILE *file, const char *caller, va_list ap)
while (*fmt)
{
switch (*fmt++)
- {
- default:
- fputc (*(fmt-1), file);
- break;
-
- case '\\':
- bs[1] = *fmt++;
- fputs (bs, file);
- break;
-
- case '%':
- switch (*fmt++)
- {
- case '%':
- fputc ('%', file);
- break;
-
- case 't':
- {
- tree t = va_arg (ap, tree);
- if (NULL_TREE == t)
- fprintf (file, "<NULL-TREE>");
- else
- {
- if (stderr == file)
- debug_tree (t);
- else
- {
- print_node (file, "", t, 0);
- putc ('\n', file);
- }
- }
- break;
- }
-
- case 'T':
- {
- tree t = va_arg (ap, tree);
- if (NULL_TREE == t)
- fprintf (file, "<NULL-TREE>");
- else
- print_node_brief (file, "", t, 3);
- }
- break;
-
- case 'd':
- fprintf (file, "%d", va_arg (ap, int));
- break;
-
- case 'x':
- fprintf (file, "%x", va_arg (ap, int));
- break;
-
- case 'b':
- fprintf (file, "%s", va_arg (ap, int) ? "true" : "false");
- break;
-
- case 'c':
- fputc (va_arg (ap, int), file);
- break;
-
- case 'r':
- print_inline_rtx (file, va_arg (ap, rtx), 0);
- break;
-
- case 'L':
- {
- rtx_insn *insn = safe_as_a <rtx_insn *> (va_arg (ap, rtx));
-
- while (insn)
- {
- print_inline_rtx (file, insn, 0);
- fprintf (file, "\n");
- insn = NEXT_INSN (insn);
- }
- break;
- }
-
- case 'f':
- if (cfun && cfun->decl)
- fputs (current_function_name(), file);
- break;
-
- case 's':
- {
- const char *str = va_arg (ap, char*);
- fputs (str ? str : "(null)", file);
- }
- break;
-
- case 'm':
- fputs (GET_MODE_NAME ((machine_mode) va_arg (ap, int)),
- file);
- break;
-
- case 'C':
- fputs (rtx_name[va_arg (ap, int)], file);
- break;
-
- case 'R':
- fputs (reg_class_names[va_arg (ap, int)], file);
- break;
-
- case 'F':
- fputs (caller, file);
- break;
-
- case 'H':
- {
- location_t loc = va_arg (ap, location_t);
-
- if (BUILTINS_LOCATION == loc)
- fprintf (file, "<BUILTIN-LOCATION>");
- else if (UNKNOWN_LOCATION == loc)
- fprintf (file, "<UNKNOWN-LOCATION>");
- else
- fprintf (file, "%s:%d",
- LOCATION_FILE (loc), LOCATION_LINE (loc));
-
- break;
- }
-
- case '!':
- if (!current_pass)
- return;
- /* FALLTHRU */
-
- case '?':
- avr_vdump (file, caller, "%F[%f:%P]");
- break;
-
- case 'P':
- if (current_pass)
- fprintf (file, "%s(%d)",
- current_pass->name,
- current_pass->static_pass_number);
- else
- fprintf (file, "pass=?");
-
- break;
-
- case 'A':
- fflush (file);
- abort();
-
- default:
- /* Unknown %-code: Stop printing */
-
- fprintf (file, "??? %%%c ???%s\n", *(fmt-1), fmt);
- fmt = "";
-
- break;
- }
- break; /* % */
- }
+ {
+ default:
+ fputc (*(fmt-1), file);
+ break;
+
+ case '\\':
+ bs[1] = *fmt++;
+ fputs (bs, file);
+ break;
+
+ case '%':
+ switch (*fmt++)
+ {
+ case '%':
+ fputc ('%', file);
+ break;
+
+ case 't':
+ {
+ tree t = va_arg (ap, tree);
+ if (NULL_TREE == t)
+ fprintf (file, "<NULL-TREE>");
+ else
+ {
+ if (stderr == file)
+ debug_tree (t);
+ else
+ {
+ print_node (file, "", t, 0);
+ putc ('\n', file);
+ }
+ }
+ break;
+ }
+
+ case 'T':
+ {
+ tree t = va_arg (ap, tree);
+ if (NULL_TREE == t)
+ fprintf (file, "<NULL-TREE>");
+ else
+ print_node_brief (file, "", t, 3);
+ }
+ break;
+
+ case 'd':
+ fprintf (file, "%d", va_arg (ap, int));
+ break;
+
+ case 'x':
+ fprintf (file, "%x", va_arg (ap, int));
+ break;
+
+ case 'b':
+ fprintf (file, "%s", va_arg (ap, int) ? "true" : "false");
+ break;
+
+ case 'c':
+ fputc (va_arg (ap, int), file);
+ break;
+
+ case 'r':
+ print_inline_rtx (file, va_arg (ap, rtx), 0);
+ break;
+
+ case 'L':
+ {
+ rtx_insn *insn = safe_as_a <rtx_insn *> (va_arg (ap, rtx));
+
+ while (insn)
+ {
+ print_inline_rtx (file, insn, 0);
+ fprintf (file, "\n");
+ insn = NEXT_INSN (insn);
+ }
+ break;
+ }
+
+ case 'f':
+ if (cfun && cfun->decl)
+ fputs (current_function_name(), file);
+ break;
+
+ case 's':
+ {
+ const char *str = va_arg (ap, char*);
+ fputs (str ? str : "(null)", file);
+ }
+ break;
+
+ case 'm':
+ fputs (GET_MODE_NAME ((machine_mode) va_arg (ap, int)),
+ file);
+ break;
+
+ case 'C':
+ fputs (rtx_name[va_arg (ap, int)], file);
+ break;
+
+ case 'R':
+ fputs (reg_class_names[va_arg (ap, int)], file);
+ break;
+
+ case 'F':
+ fputs (caller, file);
+ break;
+
+ case 'H':
+ {
+ location_t loc = va_arg (ap, location_t);
+
+ if (BUILTINS_LOCATION == loc)
+ fprintf (file, "<BUILTIN-LOCATION>");
+ else if (UNKNOWN_LOCATION == loc)
+ fprintf (file, "<UNKNOWN-LOCATION>");
+ else
+ fprintf (file, "%s:%d",
+ LOCATION_FILE (loc), LOCATION_LINE (loc));
+
+ break;
+ }
+
+ case '!':
+ if (!current_pass)
+ return;
+ /* FALLTHRU */
+
+ case '?':
+ avr_vdump (file, caller, "%F[%f:%P]");
+ break;
+
+ case 'P':
+ if (current_pass)
+ fprintf (file, "%s(%d)",
+ current_pass->name,
+ current_pass->static_pass_number);
+ else
+ fprintf (file, "pass=?");
+
+ break;
+
+ case 'A':
+ fflush (file);
+ abort();
+
+ default:
+ /* Unknown %-code: Stop printing */
+
+ fprintf (file, "??? %%%c ???%s\n", *(fmt-1), fmt);
+ fmt = "";
+
+ break;
+ }
+ break; /* % */
+ }
}
fflush (file);
@@ -283,7 +283,7 @@ avr_log_set_avr_log (void)
if (all)
avr_log_details = "all";
-
+
if (all || avr_log_details)
{
/* Adding , at beginning and end of string makes searching easier. */
@@ -298,13 +298,13 @@ avr_log_set_avr_log (void)
info = strstr (str, ",?,") != NULL;
if (info)
- fprintf (stderr, "\n-mlog=");
+ fprintf (stderr, "\n-mlog=");
#define SET_DUMP_DETAIL(S) \
do { \
avr_log.S = (all || strstr (str, "," #S ",") != NULL); \
- if (info) \
- fprintf (stderr, #S ","); \
+ if (info) \
+ fprintf (stderr, #S ","); \
} while (0)
SET_DUMP_DETAIL (address_cost);
@@ -320,6 +320,6 @@ avr_log_set_avr_log (void)
#undef SET_DUMP_DETAIL
if (info)
- fprintf (stderr, "?\n\n");
+ fprintf (stderr, "?\n\n");
}
}
diff --git a/gcc/config/avr/avr-mcus.def b/gcc/config/avr/avr-mcus.def
index ecdf7fb..5ffab4d 100644
--- a/gcc/config/avr/avr-mcus.def
+++ b/gcc/config/avr/avr-mcus.def
@@ -365,8 +365,8 @@ AVR_MCU ("atmega808", ARCH_AVRXMEGA3, AVR_ISA_RCALL, "__AVR_ATmega808__",
AVR_MCU ("atmega809", ARCH_AVRXMEGA3, AVR_ISA_RCALL, "__AVR_ATmega809__", 0x3c00, 0x0, 0x2000, 0x4000)
AVR_MCU ("atmega1608", ARCH_AVRXMEGA3, AVR_ISA_NONE, "__AVR_ATmega1608__", 0x3800, 0x0, 0x4000, 0x4000)
AVR_MCU ("atmega1609", ARCH_AVRXMEGA3, AVR_ISA_NONE, "__AVR_ATmega1609__", 0x3800, 0x0, 0x4000, 0x4000)
-AVR_MCU ("atmega3208", ARCH_AVRXMEGA3, AVR_ISA_NONE, "__AVR_ATmega3208__", 0x3800, 0x0, 0x8000, 0x4000)
-AVR_MCU ("atmega3209", ARCH_AVRXMEGA3, AVR_ISA_NONE, "__AVR_ATmega3209__", 0x3800, 0x0, 0x8000, 0x4000)
+AVR_MCU ("atmega3208", ARCH_AVRXMEGA3, AVR_ISA_NONE, "__AVR_ATmega3208__", 0x3000, 0x0, 0x8000, 0x4000)
+AVR_MCU ("atmega3209", ARCH_AVRXMEGA3, AVR_ISA_NONE, "__AVR_ATmega3209__", 0x3000, 0x0, 0x8000, 0x4000)
AVR_MCU ("atmega4808", ARCH_AVRXMEGA3, AVR_ISA_NONE, "__AVR_ATmega4808__", 0x2800, 0x0, 0xc000, 0x4000)
AVR_MCU ("atmega4809", ARCH_AVRXMEGA3, AVR_ISA_NONE, "__AVR_ATmega4809__", 0x2800, 0x0, 0xc000, 0x4000)
AVR_MCU ("avr16dd14", ARCH_AVRXMEGA3, AVR_ISA_NONE, "__AVR_AVR16DD14__", 0x7800, 0x0, 0x4000, 0x8000)
diff --git a/gcc/config/avr/driver-avr.cc b/gcc/config/avr/driver-avr.cc
index 727f7f0..92e875a 100644
--- a/gcc/config/avr/driver-avr.cc
+++ b/gcc/config/avr/driver-avr.cc
@@ -40,7 +40,7 @@ static const char dir_separator_str[] = { DIR_SEPARATOR, 0 };
or core name as supplied by -mmcu=*. When building GCC the path might be
relative. */
-const char*
+const char *
avr_devicespecs_file (int argc, const char **argv)
{
const char *mmcu = NULL;
@@ -48,29 +48,29 @@ avr_devicespecs_file (int argc, const char **argv)
#ifdef DEBUG_SPECS
if (verbose_flag)
fnotice (stderr, "Running spec function '%s' with %d args\n\n",
- __FUNCTION__, argc);
+ __FUNCTION__, argc);
#endif
switch (argc)
{
case 0:
fatal_error (input_location,
- "bad usage of spec function %qs", "device-specs-file");
+ "bad usage of spec function %qs", "device-specs-file");
return X_NODEVLIB;
case 1:
if (strcmp ("device-specs", argv[0]) == 0)
- {
- /* FIXME: This means "device-specs%s" from avr.h:DRIVER_SELF_SPECS
- has not been resolved to a path. That case can occur when the
- c++ testsuite is run from the build directory. DejaGNU's
- libgloss.exp:get_multilibs runs $compiler without -B, i.e.runs
- xgcc without specifying a prefix. Without any prefix, there is
- no means to find out where the specs files might be located.
- get_multilibs runs xgcc --print-multi-lib, hence we don't actually
- need information form a specs file and may skip it here. */
- return X_NODEVLIB;
- }
+ {
+ /* FIXME: This means "device-specs%s" from avr.h:DRIVER_SELF_SPECS
+ has not been resolved to a path. That case can occur when the
+ c++ testsuite is run from the build directory. DejaGNU's
+ libgloss.exp:get_multilibs runs $compiler without -B, i.e.runs
+ xgcc without specifying a prefix. Without any prefix, there is
+ no means to find out where the specs files might be located.
+ get_multilibs runs xgcc --print-multi-lib, hence we don't actually
+ need information form a specs file and may skip it here. */
+ return X_NODEVLIB;
+ }
mmcu = AVR_MMCU_DEFAULT;
break;
@@ -82,10 +82,10 @@ avr_devicespecs_file (int argc, const char **argv)
for (int i = 2; i < argc; i++)
if (strcmp (mmcu, argv[i]) != 0)
- {
- error ("specified option %qs more than once", "-mmcu");
- return X_NODEVLIB;
- }
+ {
+ error ("specified option %qs more than once", "-mmcu");
+ return X_NODEVLIB;
+ }
break;
}
@@ -94,12 +94,12 @@ avr_devicespecs_file (int argc, const char **argv)
for (const char *s = mmcu; *s; s++)
if (!ISALNUM (*s)
- && '-' != *s
- && '_' != *s)
+ && '-' != *s
+ && '_' != *s)
{
- error ("strange device name %qs after %qs: bad character %qc",
- mmcu, "-mmcu=", *s);
- return X_NODEVLIB;
+ error ("strange device name %qs after %qs: bad character %qc",
+ mmcu, "-mmcu=", *s);
+ return X_NODEVLIB;
}
return concat ("%{!nodevicespecs:-specs=device-specs", dir_separator_str,
@@ -112,9 +112,9 @@ avr_devicespecs_file (int argc, const char **argv)
// See also PR107201.
" %{mmcu=avr*:%:no-devlib(avr%*)} %{!mmcu=*:" X_NODEVLIB "}",
#else
- " " X_NODEVLIB,
+ " " X_NODEVLIB,
#endif
- NULL);
+ NULL);
}
@@ -159,30 +159,30 @@ avr_double_lib (int argc, const char **argv)
for (int i = 0; i < argc; i++)
{
if (strcmp (argv[i], "mdouble=32") == 0)
- {
- dbl = 32;
+ {
+ dbl = 32;
#ifdef HAVE_LONG_DOUBLE_IS_DOUBLE
- ldb = dbl;
+ ldb = dbl;
#endif
- }
+ }
else if (strcmp (argv[i], "mdouble=64") == 0)
- {
- ldb = dbl = 64;
- }
+ {
+ ldb = dbl = 64;
+ }
else if (strcmp (argv[i], "mlong-double=32") == 0)
- {
- ldb = dbl = 32;
- }
+ {
+ ldb = dbl = 32;
+ }
else if (strcmp (argv[i], "mlong-double=64") == 0)
- {
- ldb = 64;
+ {
+ ldb = 64;
#ifdef HAVE_LONG_DOUBLE_IS_DOUBLE
- dbl = ldb;
+ dbl = ldb;
#endif
- }
+ }
}
return concat (" %<mdouble=* -mdouble=", dbl == 32 ? "32" : "64",
- " %<mlong-double=* -mlong-double=", ldb == 32 ? "32" : "64",
- NULL);
+ " %<mlong-double=* -mlong-double=", ldb == 32 ? "32" : "64",
+ NULL);
}
diff --git a/gcc/config/avr/gen-avr-mmcu-specs.cc b/gcc/config/avr/gen-avr-mmcu-specs.cc
index eb9ab88..02778aa 100644
--- a/gcc/config/avr/gen-avr-mmcu-specs.cc
+++ b/gcc/config/avr/gen-avr-mmcu-specs.cc
@@ -44,13 +44,13 @@
#endif
-#define SPECFILE_DOC_URL \
+#define SPECFILE_DOC_URL \
"https://gcc.gnu.org/onlinedocs/gcc/Spec-Files.html"
-#define SPECFILE_USAGE_URL \
+#define SPECFILE_USAGE_URL \
"https://gcc.gnu.org/gcc-5/changes.html"
-#define WIKI_URL \
+#define WIKI_URL \
"https://gcc.gnu.org/wiki/avr-gcc#spec-files"
static const char header[] =
@@ -143,22 +143,28 @@ diagnose_mrodata_in_ram (FILE *f, const char *spec, const avr_mcu_t *mcu)
const bool rodata_in_flash = (arch_id == ARCH_AVRTINY
|| (arch_id == ARCH_AVRXMEGA3
&& have_avrxmega3_rodata_in_flash));
+ // Device name as used by the vendor, extracted from "__AVR_<Name>__".
+ char mcu_Name[50] = { 0 };
+ if (! is_arch)
+ snprintf (mcu_Name, 1 + strlen (mcu->macro) - strlen ("__AVR___"),
+ "%s", mcu->macro + strlen ("__AVR_"));
+
fprintf (f, "%s:\n", spec);
if (rodata_in_flash && is_arch)
- fprintf (f, "\t%%{mrodata-in-ram: %%e-mrodata-in-ram not supported"
+ fprintf (f, "\t%%{mrodata-in-ram: %%e-mrodata-in-ram is not supported"
" for %s}", mcu->name);
else if (rodata_in_flash)
- fprintf (f, "\t%%{mrodata-in-ram: %%e-mrodata-in-ram not supported"
- " for %s (arch=%s)}", mcu->name, arch->name);
+ fprintf (f, "\t%%{mrodata-in-ram: %%e-mrodata-in-ram is not supported"
+ " for %s (arch=%s)}", mcu_Name, arch->name);
else if (is_arch)
{
if (! have_flmap2 && ! have_flmap4)
- fprintf (f, "\t%%{mno-rodata-in-ram: %%e-mno-rodata-in-ram not"
+ fprintf (f, "\t%%{mno-rodata-in-ram: %%e-mno-rodata-in-ram is not"
" supported for %s}", mcu->name);
}
else if (! have_flmap)
- fprintf (f, "\t%%{mno-rodata-in-ram: %%e-mno-rodata-in-ram not supported"
- " for %s (arch=%s)}", mcu->name, arch->name);
+ fprintf (f, "\t%%{mno-rodata-in-ram: %%e-mno-rodata-in-ram is not supported"
+ " for %s (arch=%s)}", mcu_Name, arch->name);
fprintf (f, "\n\n");
}
@@ -204,7 +210,7 @@ print_mcu (const avr_mcu_t *mcu)
if (is_arch
&& (ARCH_AVR2 == arch_id
- || ARCH_AVR25 == arch_id))
+ || ARCH_AVR25 == arch_id))
{
// Leave "avr2" and "avr25" alone. These two architectures are
// the only ones that mix devices with 8-bit SP and 16-bit SP.
@@ -238,7 +244,7 @@ print_mcu (const avr_mcu_t *mcu)
link_arch_spec = link_arch_flmap_spec;
fprintf (f, "#\n"
- "# Auto-generated specs for AVR ");
+ "# Auto-generated specs for AVR ");
if (is_arch)
fprintf (f, "core architecture %s\n", arch->name);
else
@@ -265,29 +271,30 @@ print_mcu (const avr_mcu_t *mcu)
}
#endif // WITH_AVRLIBC
+ // Diagnose usage of -m[no-]rodata-in-ram.
+ diagnose_mrodata_in_ram (f, "*check_rodata_in_ram", mcu);
+
// avr-gcc specific specs for the compilation / the compiler proper.
int n_flash = 1 + (mcu->flash_size - 1) / 0x10000;
fprintf (f, "*cc1_n_flash:\n"
- "\t%%{!mn-flash=*:-mn-flash=%d}\n\n", n_flash);
+ "\t%%{!mn-flash=*:-mn-flash=%d}\n\n", n_flash);
fprintf (f, "*cc1_rmw:\n%s\n\n", rmw
- ? "\t%{!mno-rmw: -mrmw}"
- : "\t%{mrmw}");
+ ? "\t%{!mno-rmw: -mrmw}"
+ : "\t%{mrmw}");
fprintf (f, "*cc1_errata_skip:\n%s\n\n", errata_skip
- ? "\t%{!mno-skip-bug: -mskip-bug}"
- : "\t%{!mskip-bug: -mno-skip-bug}");
+ ? "\t%{!mno-skip-bug: -mskip-bug}"
+ : "\t%{!mskip-bug: -mno-skip-bug}");
fprintf (f, "*cc1_absdata:\n%s\n\n", absdata
- ? "\t%{!mno-absdata: -mabsdata}"
- : "\t%{mabsdata}");
+ ? "\t%{!mno-absdata: -mabsdata}"
+ : "\t%{mabsdata}");
// -m[no-]rodata-in-ram basically affects linking, but sanity-check early.
- diagnose_mrodata_in_ram (f, "*cc1_rodata_in_ram", mcu);
-
- fprintf (f, "*cc1_misc:\n\t%%(cc1_rodata_in_ram)\n\n");
+ fprintf (f, "*cc1_misc:\n\t%%(check_rodata_in_ram)\n\n");
// avr-gcc specific specs for assembling / the assembler.
@@ -299,18 +306,18 @@ print_mcu (const avr_mcu_t *mcu)
#ifdef HAVE_AS_AVR_MRMW_OPTION
fprintf (f, "*asm_rmw:\n%s\n\n", rmw
- ? "\t%{!mno-rmw: -mrmw}"
- : "\t%{mrmw}");
+ ? "\t%{!mno-rmw: -mrmw}"
+ : "\t%{mrmw}");
#endif // have avr-as -mrmw
#ifdef HAVE_AS_AVR_MGCCISR_OPTION
fprintf (f, "*asm_gccisr:\n%s\n\n",
- "\t%{!mno-gas-isr-prologues: -mgcc-isr}");
+ "\t%{!mno-gas-isr-prologues: -mgcc-isr}");
#endif // have avr-as -mgcc-isr
fprintf (f, "*asm_errata_skip:\n%s\n\n", errata_skip
- ? "\t%{mno-skip-bug}"
- : "\t%{!mskip-bug: -mno-skip-bug}");
+ ? "\t%{mno-skip-bug}"
+ : "\t%{!mskip-bug: -mno-skip-bug}");
fprintf (f, "*asm_misc:\n" /* empty */ "\n\n");
@@ -332,9 +339,6 @@ print_mcu (const avr_mcu_t *mcu)
fprintf (f, "*link_relax:\n\t%s\n\n", LINK_RELAX_SPEC);
- // -m[no-]rodata-in-ram affects linking. Sanity check its usage.
- diagnose_mrodata_in_ram (f, "*link_rodata_in_ram", mcu);
-
fprintf (f, "*link_arch:\n\t%s", link_arch_spec);
if (is_device
&& flash_pm_offset)
@@ -345,18 +349,19 @@ print_mcu (const avr_mcu_t *mcu)
{
fprintf (f, "*link_data_start:\n");
if (mcu->data_section_start
- != arch->default_data_section_start)
- fprintf (f, "\t%%{!Tdata:-Tdata 0x%lX}",
- 0x800000UL + mcu->data_section_start);
+ != arch->default_data_section_start)
+ fprintf (f, "\t%%{!Tdata:-Tdata 0x%lX}",
+ 0x800000UL + mcu->data_section_start);
fprintf (f, "\n\n");
fprintf (f, "*link_text_start:\n");
if (mcu->text_section_start != 0x0)
- fprintf (f, "\t%%{!Ttext:-Ttext 0x%lX}", 0UL + mcu->text_section_start);
+ fprintf (f, "\t%%{!Ttext:-Ttext 0x%lX}", 0UL + mcu->text_section_start);
fprintf (f, "\n\n");
}
- fprintf (f, "*link_misc:\n\t%%(link_rodata_in_ram)\n\n");
+ // -m[no-]rodata-in-ram affects linking. Sanity check its usage.
+ fprintf (f, "*link_misc:\n\t%%(check_rodata_in_ram)\n\n");
// Specs known to GCC.
diff --git a/gcc/config/avr/gen-avr-mmcu-texi.cc b/gcc/config/avr/gen-avr-mmcu-texi.cc
index d928236..70aa430 100644
--- a/gcc/config/avr/gen-avr-mmcu-texi.cc
+++ b/gcc/config/avr/gen-avr-mmcu-texi.cc
@@ -118,23 +118,23 @@ comparator (const void *va, const void *vb)
if (*a != *b)
return *a - *b;
-
+
a++;
b++;
}
return *a - *b;
-}
+}
static void
print_mcus (size_t n_mcus)
{
int duplicate = 0;
size_t i;
-
+
if (!n_mcus)
return;
-
+
qsort (mcus, n_mcus, sizeof (avr_mcu_t*), comparator);
printf ("@*@var{mcu}@tie{}=");
diff --git a/gcc/config/bpf/bpf.cc b/gcc/config/bpf/bpf.cc
index 9af1728..d6ca47e 100644
--- a/gcc/config/bpf/bpf.cc
+++ b/gcc/config/bpf/bpf.cc
@@ -420,9 +420,8 @@ bpf_expand_epilogue (void)
/* See note in bpf_expand_prologue for an explanation on why we are
not restoring callee-saved registers in BPF. */
- /* If we ever need to do anything else than just generating a return
- instruction here, please mind the `naked' function attribute. */
-
+ if (lookup_attribute ("naked", DECL_ATTRIBUTES (cfun->decl)) != NULL_TREE)
+ return;
emit_jump_insn (gen_exit ());
}
diff --git a/gcc/config/darwin.cc b/gcc/config/darwin.cc
index cf203dc..9e5d64e 100644
--- a/gcc/config/darwin.cc
+++ b/gcc/config/darwin.cc
@@ -1638,7 +1638,7 @@ darwin_objc1_section (tree decl ATTRIBUTE_UNUSED, tree meta, section * base)
else if (startswith (p, "V1_CEXT"))
return darwin_sections[objc1_class_ext_section];
- else if (startswith (p, "V2_CSTR"))
+ else if (startswith (p, "V1_CSTR"))
return darwin_sections[objc_constant_string_object_section];
return base;
@@ -1731,7 +1731,16 @@ machopic_select_section (tree decl,
base_section = darwin_sections[zobj_data_section];
}
else if (ro)
- base_section = darwin_sections[const_data_section];
+ {
+ if (VAR_P (decl) && TREE_TYPE (decl)
+ && TREE_CODE (TREE_TYPE (decl)) == RECORD_TYPE
+ && DECL_NAME (decl)
+ && strncmp (IDENTIFIER_POINTER (DECL_NAME (decl)),
+ "__anon_cfstring", 15) == 0)
+ base_section = darwin_sections[cfstring_constant_object_section];
+ else
+ base_section = darwin_sections[const_data_section];
+ }
else
base_section = data_section;
break;
@@ -1773,7 +1782,7 @@ machopic_select_section (tree decl,
return base_section; /* GNU runtime is happy with it all in one pot. */
}
- /* b) Constant string objects. */
+ /* b) Constructors for constant NSstring [but not CFString] objects. */
if (TREE_CODE (decl) == CONSTRUCTOR
&& TREE_TYPE (decl)
&& TREE_CODE (TREE_TYPE (decl)) == RECORD_TYPE
@@ -1796,7 +1805,11 @@ machopic_select_section (tree decl,
return darwin_sections[objc_string_object_section];
}
else if (!strcmp (IDENTIFIER_POINTER (name), "__builtin_CFString"))
- return darwin_sections[cfstring_constant_object_section];
+ {
+ /* We should have handled __anon_cfstrings above. */
+ gcc_checking_assert (0);
+ return darwin_sections[cfstring_constant_object_section];
+ }
else
return base_section;
}
@@ -3612,6 +3625,29 @@ darwin_patch_builtins (void)
}
#endif
+void
+darwin_rename_builtins (void)
+{
+}
+
+/* Implementation for the TARGET_LIBC_HAS_FUNCTION hook. */
+
+bool
+darwin_libc_has_function (enum function_class fn_class,
+ tree type ATTRIBUTE_UNUSED)
+{
+ if (fn_class == function_sincos && darwin_macosx_version_min)
+ return (strverscmp (darwin_macosx_version_min, "10.9") >= 0);
+#if DARWIN_PPC && SUPPORT_DARWIN_LEGACY
+ if (fn_class == function_c99_math_complex
+ || fn_class == function_c99_misc)
+ return (TARGET_64BIT
+ || (darwin_macosx_version_min &&
+ strverscmp (darwin_macosx_version_min, "10.3") >= 0));
+#endif
+ return default_libc_has_function (fn_class, type);
+}
+
/* CFStrings implementation. */
static GTY(()) tree cfstring_class_reference = NULL_TREE;
static GTY(()) tree cfstring_type_node = NULL_TREE;
@@ -3629,7 +3665,7 @@ typedef struct GTY ((for_user)) cfstring_descriptor {
/* The string literal. */
tree literal;
/* The resulting constant CFString. */
- tree constructor;
+ tree ccf_str;
} cfstring_descriptor;
struct cfstring_hasher : ggc_ptr_hash<cfstring_descriptor>
@@ -3704,7 +3740,7 @@ darwin_init_cfstring_builtins (unsigned builtin_cfstring)
/* Make a lang-specific section - dup_lang_specific_decl makes a new node
in place of the existing, which may be NULL. */
DECL_LANG_SPECIFIC (cfsfun) = NULL;
- (*lang_hooks.dup_lang_specific_decl) (cfsfun);
+ lang_hooks.dup_lang_specific_decl (cfsfun);
set_decl_built_in_function (cfsfun, BUILT_IN_MD, darwin_builtin_cfstring);
lang_hooks.builtin_function (cfsfun);
@@ -3715,7 +3751,7 @@ darwin_init_cfstring_builtins (unsigned builtin_cfstring)
TREE_PUBLIC (cfstring_class_reference) = 1;
DECL_ARTIFICIAL (cfstring_class_reference) = 1;
- (*lang_hooks.decls.pushdecl) (cfstring_class_reference);
+ lang_hooks.decls.pushdecl (cfstring_class_reference);
DECL_EXTERNAL (cfstring_class_reference) = 1;
rest_of_decl_compilation (cfstring_class_reference, 0, 0);
@@ -3752,29 +3788,6 @@ darwin_fold_builtin (tree fndecl, int n_args, tree *argp,
return NULL_TREE;
}
-void
-darwin_rename_builtins (void)
-{
-}
-
-/* Implementation for the TARGET_LIBC_HAS_FUNCTION hook. */
-
-bool
-darwin_libc_has_function (enum function_class fn_class,
- tree type ATTRIBUTE_UNUSED)
-{
- if (fn_class == function_sincos && darwin_macosx_version_min)
- return (strverscmp (darwin_macosx_version_min, "10.9") >= 0);
-#if DARWIN_PPC && SUPPORT_DARWIN_LEGACY
- if (fn_class == function_c99_math_complex
- || fn_class == function_c99_misc)
- return (TARGET_64BIT
- || (darwin_macosx_version_min &&
- strverscmp (darwin_macosx_version_min, "10.3") >= 0));
-#endif
- return default_libc_has_function (fn_class, type);
-}
-
hashval_t
cfstring_hasher::hash (cfstring_descriptor *ptr)
{
@@ -3872,29 +3885,37 @@ darwin_build_constant_cfstring (tree str)
build_int_cst (TREE_TYPE (field), length));
constructor = build_constructor (ccfstring_type_node, v);
- TREE_READONLY (constructor) = 1;
- TREE_CONSTANT (constructor) = 1;
- TREE_STATIC (constructor) = 1;
-
- /* Fromage: The C++ flavor of 'build_unary_op' expects constructor nodes
- to have the TREE_HAS_CONSTRUCTOR (...) bit set. However, this file is
- being built without any knowledge of C++ tree accessors; hence, we shall
- use the generic accessor that TREE_HAS_CONSTRUCTOR actually maps to! */
+ TREE_READONLY (constructor) = true;
+ TREE_CONSTANT (constructor) = true;
+ TREE_STATIC (constructor) = true;
+
+ /* This file is being built without any knowledge of C++ tree accessors;
+ hence, we shall use the generic accessor to set TREE_HAS_CONSTRUCTOR.
+ ??? Is this actually used any more? */
if (darwin_running_cxx)
TREE_LANG_FLAG_4 (constructor) = 1; /* TREE_HAS_CONSTRUCTOR */
/* Create an anonymous global variable for this CFString. */
- var = build_decl (input_location, CONST_DECL,
+ var = build_decl (input_location, VAR_DECL,
NULL, TREE_TYPE (constructor));
- DECL_ARTIFICIAL (var) = 1;
- TREE_STATIC (var) = 1;
+ char *name = xasprintf ("__anon_cfstring.%u", DECL_UID (var));
+ DECL_NAME (var) = get_identifier (name);
+ free (name);
+ DECL_ARTIFICIAL (var) = true;
+ TREE_STATIC (var) = true;
+ TREE_READONLY (var) = true;
+ TREE_CONSTANT (var) = true;
DECL_INITIAL (var) = constructor;
- /* FIXME: This should use a translation_unit_decl to indicate file scope. */
+ /* global namespace. */
DECL_CONTEXT (var) = NULL_TREE;
- desc->constructor = var;
+ DECL_INITIAL (var) = constructor;
+ DECL_USER_ALIGN (var) = 1;
+ lang_hooks.decls.pushdecl (var);
+ rest_of_decl_compilation (var, 1, 0);
+ desc->ccf_str = var;
}
- addr = build1 (ADDR_EXPR, pccfstring_type_node, desc->constructor);
+ addr = build1 (ADDR_EXPR, pccfstring_type_node, desc->ccf_str);
TREE_CONSTANT (addr) = 1;
return addr;
diff --git a/gcc/config/darwin.h b/gcc/config/darwin.h
index b3300b5..31019a0 100644
--- a/gcc/config/darwin.h
+++ b/gcc/config/darwin.h
@@ -314,13 +314,17 @@ extern GTY(()) int darwin_ms_struct;
# define DARWIN_RPATH_LINK \
"%{!r:%{!nostdlib:%{!nodefaultrpaths:%(darwin_rpaths)}}}"
# define DARWIN_SHARED_LIBGCC "-lgcc_s.1.1"
+# define DARWIN_SHARED_WEAK_ADDS " "
#else
# define DARWIN_RPATH_LINK ""
# define DARWIN_SHARED_LIBGCC \
-"%:version-compare(!> 10.11 mmacosx-version-min= -lgcc_s.1.1) \
- %:version-compare(>= 10.11 mmacosx-version-min= -lemutls_w) "
+"%:version-compare(!> 10.11 mmacosx-version-min= -lgcc_s.1.1)"
+# define DARWIN_SHARED_WEAK_ADDS \
+"%{%:version-compare(>= 10.11 mmacosx-version-min= -lemutls_w): \
+ " DARWIN_HEAP_T_LIB "}"
#endif
+
/* We might elect to add a path even when this compiler does not use embedded
run paths, so that we can use libraries from an alternate compiler that is
using embedded runpaths. */
@@ -398,7 +402,9 @@ extern GTY(()) int darwin_ms_struct;
%{e*} %{r} \
%{o*}%{!o:-o a.out} \
%{!r:%{!nostdlib:%{!nostartfiles:%S}}} \
- %{L*} %(link_libgcc) %o \
+ %{L*} %(link_libgcc) \
+ %{!r:%{!nostdlib:%{!nodefaultlibs: " DARWIN_WEAK_CRTS "}}} \
+ %o \
%{!r:%{!nostdlib:%{!nodefaultlibs:\
%{fprofile-arcs|fprofile-generate*|coverage:-lgcov} \
%{fopenacc|fopenmp|%:gt(%{ftree-parallelize-loops=*:%*} 1): \
@@ -412,15 +418,15 @@ extern GTY(()) int darwin_ms_struct;
%(link_ssp) \
%:version-compare(>< 10.6 10.7 mmacosx-version-min= -ld10-uwfef) \
%(link_gcc_c_sequence) \
- %{!nodefaultexport:%{dylib|dynamiclib|bundle: \
- %:version-compare(>= 10.11 asm_macosx_version_min= -U) \
- %:version-compare(>= 10.11 asm_macosx_version_min= ___emutls_get_address) \
- %:version-compare(>= 10.11 asm_macosx_version_min= -exported_symbol) \
- %:version-compare(>= 10.11 asm_macosx_version_min= ___emutls_get_address) \
- %:version-compare(>= 10.11 asm_macosx_version_min= -U) \
- %:version-compare(>= 10.11 asm_macosx_version_min= ___emutls_register_common) \
- %:version-compare(>= 10.11 asm_macosx_version_min= -exported_symbol) \
- %:version-compare(>= 10.11 asm_macosx_version_min= ___emutls_register_common) \
+ %{!nodefaultexport: \
+ %{%:version-compare(>= 10.11 asm_macosx_version_min= -U): \
+ ___emutls_get_address -exported_symbol ___emutls_get_address \
+ -U ___emutls_register_common \
+ -exported_symbol ___emutls_register_common \
+ -U ___gcc_nested_func_ptr_created \
+ -exported_symbol ___gcc_nested_func_ptr_created \
+ -U ___gcc_nested_func_ptr_deleted \
+ -exported_symbol ___gcc_nested_func_ptr_deleted \
}} \
}}}\
%{!r:%{!nostdlib:%{!nostartfiles:%E}}} %{T*} %{F*} "\
@@ -542,16 +548,21 @@ extern GTY(()) int darwin_ms_struct;
#undef REAL_LIBGCC_SPEC
#define REAL_LIBGCC_SPEC \
"%{static-libgcc|static: \
- %:version-compare(!> 10.6 mmacosx-version-min= -lgcc_eh) \
- %:version-compare(>= 10.6 mmacosx-version-min= -lemutls_w); \
+ %:version-compare(!> 10.6 mmacosx-version-min= -lgcc_eh); \
shared-libgcc|fexceptions|fobjc-exceptions|fgnu-runtime: \
" DARWIN_SHARED_LIBGCC " \
%:version-compare(!> 10.3.9 mmacosx-version-min= -lgcc_eh) \
%:version-compare(>< 10.3.9 10.5 mmacosx-version-min= -lgcc_s.10.4) \
- %:version-compare(>< 10.5 10.6 mmacosx-version-min= -lgcc_s.10.5); \
- : -lemutls_w \
+ %:version-compare(>< 10.5 10.6 mmacosx-version-min= -lgcc_s.10.5) \
} -lgcc "
+#define DARWIN_WEAK_CRTS \
+"%{static-libgcc|static: \
+ %{%:version-compare(>= 10.6 mmacosx-version-min= -lemutls_w): \
+ " DARWIN_HEAP_T_LIB "} ; \
+ : -lemutls_w " DARWIN_HEAP_T_LIB " \
+ }"
+
/* We specify crt0.o as -lcrt0.o so that ld will search the library path. */
#undef STARTFILE_SPEC
@@ -612,8 +623,7 @@ extern GTY(()) int darwin_ms_struct;
director as one being loaded. */
#define DARWIN_RPATH_SPEC \
"%:version-compare(>= 10.5 mmacosx-version-min= -rpath) \
- %:version-compare(>= 10.5 mmacosx-version-min= @loader_path) \
- %P "
+ %{%:version-compare(>= 10.5 mmacosx-version-min= @loader_path): %P }"
#else
#define DARWIN_RPATH_SPEC ""
#endif
@@ -869,6 +879,8 @@ int darwin_label_is_anonymous_local_objc_name (const char *name);
fprintf (FILE, "\"%s\"", xname); \
else if (darwin_label_is_anonymous_local_objc_name (xname)) \
fprintf (FILE, "%c%s", flag_next_runtime ? 'L' : 'l', xname); \
+ else if (strncmp (xname, "__anon_cfstring", 15) == 0) \
+ fprintf (FILE, "L%s", xname); \
else if (xname[0] != '"' && name_needs_quotes (xname)) \
asm_fprintf (FILE, "\"%U%s\"", xname); \
else \
diff --git a/gcc/config/gcn/gcn-hsa.h b/gcc/config/gcn/gcn-hsa.h
index bf7079f..e5b93f7 100644
--- a/gcc/config/gcn/gcn-hsa.h
+++ b/gcc/config/gcn/gcn-hsa.h
@@ -75,6 +75,21 @@ extern unsigned int gcn_local_sym_hash (const char *name);
supported for gcn. */
#define GOMP_SELF_SPECS ""
+/* Explicitly set the ABI version; in principle, we could use just the
+ default; however, when debugging symbols are turned on, mkoffload.cc
+ writes a new AMD GPU object file and the ABI version needs to be the
+ same. - LLVM <= 17 defaults to 4 while LLVM >= 18 defaults to 5.
+ GCC supports LLVM >= 13.0.1 and only LLVM >= 14 supports version 5.
+ Note that Fiji is only suppored with LLVM <= 17 as version 3 i no longer
+ supported in LLVM >= 18. */
+#define ABI_VERSION_SPEC "march=fiji:--amdhsa-code-object-version=3;" \
+ "!march=*|march=*:--amdhsa-code-object-version=4"
+
+/* Note that the XNACK and SRAM-ECC settings must match those in mkoffload.cc
+ as the latter creates new ELF object file when debugging is enabled and
+ the ELF flags (e_flags) of that generated file must be identical to those
+ generated by the compiler. */
+
#define NO_XNACK "march=fiji:;march=gfx1030:;march=gfx1100:;" \
/* These match the defaults set in gcn.cc. */ \
"!mxnack*|mxnack=default:%{march=gfx900|march=gfx906|march=gfx908:-mattr=-xnack};"
@@ -88,8 +103,8 @@ extern unsigned int gcn_local_sym_hash (const char *name);
/* Use LLVM assembler and linker options. */
#define ASM_SPEC "-triple=amdgcn--amdhsa " \
"%{march=*:-mcpu=%*} " \
- "%{!march=*|march=fiji:--amdhsa-code-object-version=3} " \
- "%{" NO_XNACK XNACKOPT "}" \
+ "%{" ABI_VERSION_SPEC "} " \
+ "%{" NO_XNACK XNACKOPT "} " \
"%{" NO_SRAM_ECC SRAMOPT "} " \
"%{march=gfx1030|march=gfx1100:-mattr=+wavefrontsize64} " \
"-filetype=obj"
diff --git a/gcc/config/gcn/gcn-opts.h b/gcc/config/gcn/gcn-opts.h
index 79fbda3..6be2c92 100644
--- a/gcc/config/gcn/gcn-opts.h
+++ b/gcc/config/gcn/gcn-opts.h
@@ -62,7 +62,7 @@ extern enum gcn_isa {
#define TARGET_M0_LDS_LIMIT (TARGET_GCN3)
-#define TARGET_PACKED_WORK_ITEMS (TARGET_CDNA2_PLUS)
+#define TARGET_PACKED_WORK_ITEMS (TARGET_CDNA2_PLUS || TARGET_RDNA3)
#define TARGET_XNACK (flag_xnack != HSACO_ATTR_OFF)
diff --git a/gcc/config/gcn/gcn-valu.md b/gcc/config/gcn/gcn-valu.md
index 3d5b627..23b441f 100644
--- a/gcc/config/gcn/gcn-valu.md
+++ b/gcc/config/gcn/gcn-valu.md
@@ -3555,30 +3555,63 @@
;; }}}
;; {{{ Int/int conversions
+(define_code_iterator all_convert [truncate zero_extend sign_extend])
(define_code_iterator zero_convert [truncate zero_extend])
(define_code_attr convop [
(sign_extend "extend")
(zero_extend "zero_extend")
(truncate "trunc")])
-(define_insn "<convop><V_INT_1REG_ALT:mode><V_INT_1REG:mode>2<exec>"
+(define_expand "<convop><V_INT_1REG_ALT:mode><V_INT_1REG:mode>2<exec>"
+ [(set (match_operand:V_INT_1REG 0 "register_operand" "=v")
+ (all_convert:V_INT_1REG
+ (match_operand:V_INT_1REG_ALT 1 "gcn_alu_operand" " v")))]
+ "")
+
+(define_insn "*<convop><V_INT_1REG_ALT:mode><V_INT_1REG:mode>_sdwa<exec>"
[(set (match_operand:V_INT_1REG 0 "register_operand" "=v")
(zero_convert:V_INT_1REG
(match_operand:V_INT_1REG_ALT 1 "gcn_alu_operand" " v")))]
- ""
+ "!TARGET_RDNA3"
"v_mov_b32_sdwa\t%0, %1 dst_sel:<V_INT_1REG:sdwa> dst_unused:UNUSED_PAD src0_sel:<V_INT_1REG_ALT:sdwa>"
[(set_attr "type" "vop_sdwa")
(set_attr "length" "8")])
-(define_insn "extend<V_INT_1REG_ALT:mode><V_INT_1REG:mode>2<exec>"
+(define_insn "extend<V_INT_1REG_ALT:mode><V_INT_1REG:mode>_sdwa<exec>"
[(set (match_operand:V_INT_1REG 0 "register_operand" "=v")
(sign_extend:V_INT_1REG
(match_operand:V_INT_1REG_ALT 1 "gcn_alu_operand" " v")))]
- ""
+ "!TARGET_RDNA3"
"v_mov_b32_sdwa\t%0, sext(%1) src0_sel:<V_INT_1REG_ALT:sdwa>"
[(set_attr "type" "vop_sdwa")
(set_attr "length" "8")])
+(define_insn "*<convop><V_INT_1REG_ALT:mode><V_INT_1REG:mode>_shift<exec>"
+ [(set (match_operand:V_INT_1REG 0 "register_operand" "=v")
+ (all_convert:V_INT_1REG
+ (match_operand:V_INT_1REG_ALT 1 "gcn_alu_operand" " v")))]
+ "TARGET_RDNA3"
+ {
+ enum {extend, zero_extend, trunc};
+ rtx shiftwidth = (<V_INT_1REG_ALT:SCALAR_MODE>mode == QImode
+ || <V_INT_1REG:SCALAR_MODE>mode == QImode
+ ? GEN_INT (24)
+ : <V_INT_1REG_ALT:SCALAR_MODE>mode == HImode
+ || <V_INT_1REG:SCALAR_MODE>mode == HImode
+ ? GEN_INT (16)
+ : NULL);
+ operands[2] = shiftwidth;
+
+ if (!shiftwidth)
+ return "v_mov_b32 %0, %1";
+ else if (<convop> == extend || <convop> == trunc)
+ return "v_lshlrev_b32\t%0, %2, %1\;v_ashrrev_i32\t%0, %2, %0";
+ else
+ return "v_lshlrev_b32\t%0, %2, %1\;v_lshrrev_b32\t%0, %2, %0";
+ }
+ [(set_attr "type" "mult")
+ (set_attr "length" "8")])
+
;; GCC can already do these for scalar types, but not for vector types.
;; Unfortunately you can't just do SUBREG on a vector to select the low part,
;; so there must be a few tricks here.
@@ -4241,7 +4274,8 @@
[(match_operand:<SCALAR_MODE> 0 "register_operand")
(match_operand:<SCALAR_MODE> 1 "gcn_alu_operand")
(match_operand:V_FP 2 "gcn_alu_operand")]
- "can_create_pseudo_p ()
+ "!TARGET_RDNA2_PLUS
+ && can_create_pseudo_p ()
&& (flag_openacc || flag_openmp
|| flag_associative_math)"
{
diff --git a/gcc/config/gcn/gcn.cc b/gcc/config/gcn/gcn.cc
index 50467bc..e80de2c 100644
--- a/gcc/config/gcn/gcn.cc
+++ b/gcc/config/gcn/gcn.cc
@@ -1597,8 +1597,8 @@ gcn_global_address_p (rtx addr)
rtx offset = XEXP (addr, 1);
int offsetbits = (TARGET_RDNA2_PLUS ? 11 : 12);
bool immediate_p = (CONST_INT_P (offset)
- && INTVAL (offset) >= -(1 << 12)
- && INTVAL (offset) < (1 << 12));
+ && INTVAL (offset) >= -(1 << offsetbits)
+ && INTVAL (offset) < (1 << offsetbits));
if ((gcn_address_register_p (base, DImode, false)
|| gcn_vec_address_register_p (base, DImode, false))
@@ -6565,7 +6565,8 @@ output_file_start (void)
comments that pass information to mkoffload. */
void
-gcn_hsa_declare_function_name (FILE *file, const char *name, tree decl)
+gcn_hsa_declare_function_name (FILE *file, const char *name,
+ tree decl ATTRIBUTE_UNUSED)
{
int sgpr, vgpr, avgpr;
bool xnack_enabled = TARGET_XNACK;
@@ -6596,8 +6597,10 @@ gcn_hsa_declare_function_name (FILE *file, const char *name, tree decl)
if (df_regs_ever_live_p (FIRST_AVGPR_REG + avgpr))
break;
avgpr++;
- vgpr = (vgpr + 3) & ~3;
- avgpr = (avgpr + 3) & ~3;
+
+ /* The main function epilogue uses v8, but df doesn't see that. */
+ if (vgpr < 9)
+ vgpr = 9;
if (!leaf_function_p ())
{
@@ -6610,9 +6613,18 @@ gcn_hsa_declare_function_name (FILE *file, const char *name, tree decl)
avgpr = MAX_NORMAL_AVGPR_COUNT;
}
- /* The gfx90a accum_offset field can't represent 0 registers. */
- if (gcn_arch == PROCESSOR_GFX90a && vgpr < 4)
- vgpr = 4;
+ /* SIMD32 devices count double in wavefront64 mode. */
+ if (TARGET_RDNA2_PLUS)
+ vgpr *= 2;
+
+ /* Round up to the allocation block size. */
+ int vgpr_block_size = (TARGET_RDNA3 ? 12
+ : TARGET_RDNA2_PLUS || TARGET_CDNA2_PLUS ? 8
+ : 4);
+ if (vgpr % vgpr_block_size)
+ vgpr += vgpr_block_size - (vgpr % vgpr_block_size);
+ if (avgpr % vgpr_block_size)
+ avgpr += vgpr_block_size - (avgpr % vgpr_block_size);
fputs ("\t.rodata\n"
"\t.p2align\t6\n"
@@ -6713,12 +6725,14 @@ gcn_hsa_declare_function_name (FILE *file, const char *name, tree decl)
" .private_segment_fixed_size: 0\n"
" .wavefront_size: 64\n"
" .sgpr_count: %i\n"
- " .vgpr_count: %i\n"
+ " .vgpr_count: %i%s\n"
" .max_flat_workgroup_size: 1024\n",
cfun->machine->kernarg_segment_byte_size,
cfun->machine->kernarg_segment_alignment,
LDS_SIZE,
- sgpr, next_free_vgpr);
+ sgpr, next_free_vgpr,
+ (TARGET_RDNA2_PLUS ? " ; wavefrontsize64 counts double on SIMD32"
+ : ""));
if (gcn_arch == PROCESSOR_GFX90a || gcn_arch == PROCESSOR_GFX908)
fprintf (file, " .agpr_count: %i\n", avgpr);
fputs (" .end_amdgpu_metadata\n", file);
diff --git a/gcc/config/gcn/gcn.md b/gcc/config/gcn/gcn.md
index 492b833..1f3c692 100644
--- a/gcc/config/gcn/gcn.md
+++ b/gcc/config/gcn/gcn.md
@@ -1618,7 +1618,7 @@
(mult:SI
(any_extend:SI (match_operand:HI 1 "register_operand" "%v"))
(any_extend:SI (match_operand:HI 2 "register_operand" " v"))))]
- ""
+ "!TARGET_RDNA3"
"v_mul_<iu>32_<iu>24_sdwa\t%0, %<e>1, %<e>2 src0_sel:WORD_0 src1_sel:WORD_0"
[(set_attr "type" "vop_sdwa")
(set_attr "length" "8")])
@@ -1628,7 +1628,7 @@
(mult:HI
(any_extend:HI (match_operand:QI 1 "register_operand" "%v"))
(any_extend:HI (match_operand:QI 2 "register_operand" " v"))))]
- ""
+ "!TARGET_RDNA3"
"v_mul_<iu>32_<iu>24_sdwa\t%0, %<e>1, %<e>2 src0_sel:BYTE_0 src1_sel:BYTE_0"
[(set_attr "type" "vop_sdwa")
(set_attr "length" "8")])
diff --git a/gcc/config/gcn/mkoffload.cc b/gcc/config/gcn/mkoffload.cc
index d4cd509..fe443ab 100644
--- a/gcc/config/gcn/mkoffload.cc
+++ b/gcc/config/gcn/mkoffload.cc
@@ -80,6 +80,8 @@
| EF_AMDGPU_FEATURE_XNACK_ANY_V4)
#define SET_XNACK_OFF(VAR) VAR = ((VAR & ~EF_AMDGPU_FEATURE_XNACK_V4) \
| EF_AMDGPU_FEATURE_XNACK_OFF_V4)
+#define SET_XNACK_UNSET(VAR) VAR = ((VAR & ~EF_AMDGPU_FEATURE_XNACK_V4) \
+ | EF_AMDGPU_FEATURE_SRAMECC_UNSUPPORTED_V4)
#define TEST_XNACK_ANY(VAR) ((VAR & EF_AMDGPU_FEATURE_XNACK_V4) \
== EF_AMDGPU_FEATURE_XNACK_ANY_V4)
#define TEST_XNACK_ON(VAR) ((VAR & EF_AMDGPU_FEATURE_XNACK_V4) \
@@ -94,13 +96,14 @@
| EF_AMDGPU_FEATURE_SRAMECC_ANY_V4)
#define SET_SRAM_ECC_OFF(VAR) VAR = ((VAR & ~EF_AMDGPU_FEATURE_SRAMECC_V4) \
| EF_AMDGPU_FEATURE_SRAMECC_OFF_V4)
-#define SET_SRAM_ECC_UNSUPPORTED(VAR) \
+#define SET_SRAM_ECC_UNSET(VAR) \
VAR = ((VAR & ~EF_AMDGPU_FEATURE_SRAMECC_V4) \
| EF_AMDGPU_FEATURE_SRAMECC_UNSUPPORTED_V4)
#define TEST_SRAM_ECC_ANY(VAR) ((VAR & EF_AMDGPU_FEATURE_SRAMECC_V4) \
== EF_AMDGPU_FEATURE_SRAMECC_ANY_V4)
#define TEST_SRAM_ECC_ON(VAR) ((VAR & EF_AMDGPU_FEATURE_SRAMECC_V4) \
== EF_AMDGPU_FEATURE_SRAMECC_ON_V4)
+#define TEST_SRAM_ECC_UNSET(VAR) ((VAR & EF_AMDGPU_FEATURE_SRAMECC_V4) == 0)
#ifndef R_AMDGPU_NONE
#define R_AMDGPU_NONE 0
@@ -124,8 +127,8 @@ static const char *gcn_dumpbase;
static struct obstack files_to_cleanup;
enum offload_abi offload_abi = OFFLOAD_ABI_UNSET;
-uint32_t elf_arch = EF_AMDGPU_MACH_AMDGCN_GFX803; // Default GPU architecture.
-uint32_t elf_flags = EF_AMDGPU_FEATURE_SRAMECC_ANY_V4;
+uint32_t elf_arch = EF_AMDGPU_MACH_AMDGCN_GFX900; // Default GPU architecture.
+uint32_t elf_flags = EF_AMDGPU_FEATURE_SRAMECC_UNSUPPORTED_V4;
static int gcn_stack_size = 0; /* Zero means use default. */
@@ -154,7 +157,7 @@ maybe_unlink (const char *file)
if (!save_temps)
{
if (unlink_if_ordinary (file) && errno != ENOENT)
- fatal_error (input_location, "deleting file %s: %m", file);
+ fatal_error (input_location, "deleting file %qs: %m", file);
}
else if (verbose)
fprintf (stderr, "[Leaving %s]\n", file);
@@ -320,10 +323,7 @@ copy_early_debug_info (const char *infile, const char *outfile)
errmsg = simple_object_copy_lto_debug_sections (inobj, outfile, &err, true);
if (errmsg)
- {
- unlink_if_ordinary (outfile);
- return false;
- }
+ return false;
simple_object_release_read (inobj);
close (infd);
@@ -347,10 +347,6 @@ copy_early_debug_info (const char *infile, const char *outfile)
/* Fiji devices use HSACOv3 regardless of the assembler. */
uint32_t elf_flags_actual = (elf_arch == EF_AMDGPU_MACH_AMDGCN_GFX803
? 0 : elf_flags);
- /* GFX900 devices don't support the sramecc attribute even if
- a buggy assembler thinks it does. This must match gcn-hsa.h */
- if (elf_arch == EF_AMDGPU_MACH_AMDGCN_GFX900)
- SET_SRAM_ECC_UNSUPPORTED (elf_flags_actual);
/* Patch the correct elf architecture flag into the file. */
ehdr.e_ident[7] = ELFOSABI_AMDGPU_HSA;
@@ -804,7 +800,7 @@ compile_native (const char *infile, const char *outfile, const char *compiler,
const char *collect_gcc_options = getenv ("COLLECT_GCC_OPTIONS");
if (!collect_gcc_options)
fatal_error (input_location,
- "environment variable COLLECT_GCC_OPTIONS must be set");
+ "environment variable %<COLLECT_GCC_OPTIONS%> must be set");
struct obstack argv_obstack;
obstack_init (&argv_obstack);
@@ -859,11 +855,11 @@ main (int argc, char **argv)
obstack_init (&files_to_cleanup);
if (atexit (mkoffload_cleanup) != 0)
- fatal_error (input_location, "atexit failed");
+ fatal_error (input_location, "%<atexit%> failed");
char *collect_gcc = getenv ("COLLECT_GCC");
if (collect_gcc == NULL)
- fatal_error (input_location, "COLLECT_GCC must be set.");
+ fatal_error (input_location, "%<COLLECT_GCC%> must be set");
const char *gcc_path = dirname (ASTRDUP (collect_gcc));
const char *gcc_exec = basename (ASTRDUP (collect_gcc));
@@ -909,7 +905,7 @@ main (int argc, char **argv)
if (!found)
fatal_error (input_location,
- "offload compiler %s not found", GCC_INSTALL_NAME);
+ "offload compiler %qs not found", GCC_INSTALL_NAME);
/* We may be called with all the arguments stored in some file and
passed with @file. Expand them into argv before processing. */
@@ -931,7 +927,7 @@ main (int argc, char **argv)
offload_abi = OFFLOAD_ABI_ILP32;
else
fatal_error (input_location,
- "unrecognizable argument of option " STR);
+ "unrecognizable argument of option %<" STR "%>");
}
#undef STR
else if (strcmp (argv[i], "-fopenmp") == 0)
@@ -994,7 +990,8 @@ main (int argc, char **argv)
}
if (!(fopenacc ^ fopenmp))
- fatal_error (input_location, "either -fopenacc or -fopenmp must be set");
+ fatal_error (input_location,
+ "either %<-fopenacc%> or %<-fopenmp%> must be set");
const char *abi;
switch (offload_abi)
@@ -1009,21 +1006,34 @@ main (int argc, char **argv)
gcc_unreachable ();
}
- /* Disable XNACK mode on architectures where it doesn't work (well).
- Set default to "any" otherwise. */
+ /* This must match gcn-hsa.h's settings for NO_XNACK, NO_SRAM_ECC
+ and ASM_SPEC. */
switch (elf_arch)
{
case EF_AMDGPU_MACH_AMDGCN_GFX803:
+ case EF_AMDGPU_MACH_AMDGCN_GFX1030:
+ case EF_AMDGPU_MACH_AMDGCN_GFX1100:
+ SET_XNACK_UNSET (elf_flags);
+ SET_SRAM_ECC_UNSET (elf_flags);
+ break;
case EF_AMDGPU_MACH_AMDGCN_GFX900:
+ SET_XNACK_OFF (elf_flags);
+ SET_SRAM_ECC_UNSET (elf_flags);
+ break;
case EF_AMDGPU_MACH_AMDGCN_GFX906:
+ SET_XNACK_OFF (elf_flags);
+ SET_SRAM_ECC_ANY (elf_flags);
+ break;
case EF_AMDGPU_MACH_AMDGCN_GFX908:
- case EF_AMDGPU_MACH_AMDGCN_GFX1030:
- case EF_AMDGPU_MACH_AMDGCN_GFX1100:
SET_XNACK_OFF (elf_flags);
+ if (TEST_SRAM_ECC_UNSET (elf_flags))
+ SET_SRAM_ECC_ANY (elf_flags);
break;
case EF_AMDGPU_MACH_AMDGCN_GFX90a:
if (TEST_XNACK_UNSET (elf_flags))
SET_XNACK_ANY (elf_flags);
+ if (TEST_SRAM_ECC_UNSET (elf_flags))
+ SET_SRAM_ECC_ANY (elf_flags);
break;
default:
fatal_error (input_location, "unhandled architecture");
@@ -1066,7 +1076,7 @@ main (int argc, char **argv)
cfile = fopen (gcn_cfile_name, "w");
if (!cfile)
- fatal_error (input_location, "cannot open '%s'", gcn_cfile_name);
+ fatal_error (input_location, "cannot open %qs", gcn_cfile_name);
/* Currently, we only support offloading in 64-bit configurations. */
if (offload_abi == OFFLOAD_ABI_LP64)
@@ -1130,7 +1140,6 @@ main (int argc, char **argv)
}
else
dbgobj = make_temp_file (".mkoffload.dbg.o");
- obstack_ptr_grow (&files_to_cleanup, dbgobj);
/* If the copy fails then just ignore it. */
if (copy_early_debug_info (argv[ix], dbgobj))
@@ -1139,20 +1148,25 @@ main (int argc, char **argv)
obstack_ptr_grow (&files_to_cleanup, dbgobj);
}
else
- free (dbgobj);
+ {
+ maybe_unlink (dbgobj);
+ free (dbgobj);
+ }
}
}
}
obstack_ptr_grow (&ld_argv_obstack, gcn_s2_name);
obstack_ptr_grow (&ld_argv_obstack, "-lgomp");
- obstack_ptr_grow (&ld_argv_obstack,
- (TEST_XNACK_ON (elf_flags) ? "-mxnack=on"
- : TEST_XNACK_ANY (elf_flags) ? "-mxnack=any"
- : "-mxnack=off"));
- obstack_ptr_grow (&ld_argv_obstack,
- (TEST_SRAM_ECC_ON (elf_flags) ? "-msram-ecc=on"
- : TEST_SRAM_ECC_ANY (elf_flags) ? "-msram-ecc=any"
- : "-msram-ecc=off"));
+ if (!TEST_XNACK_UNSET (elf_flags))
+ obstack_ptr_grow (&ld_argv_obstack,
+ (TEST_XNACK_ON (elf_flags) ? "-mxnack=on"
+ : TEST_XNACK_ANY (elf_flags) ? "-mxnack=any"
+ : "-mxnack=off"));
+ if (!TEST_SRAM_ECC_UNSET (elf_flags))
+ obstack_ptr_grow (&ld_argv_obstack,
+ (TEST_SRAM_ECC_ON (elf_flags) ? "-msram-ecc=on"
+ : TEST_SRAM_ECC_ANY (elf_flags) ? "-msram-ecc=any"
+ : "-msram-ecc=off"));
if (verbose)
obstack_ptr_grow (&ld_argv_obstack, "-v");
@@ -1214,7 +1228,7 @@ main (int argc, char **argv)
out = fopen (gcn_s2_name, "w");
if (!out)
- fatal_error (input_location, "cannot open '%s'", gcn_s2_name);
+ fatal_error (input_location, "cannot open %qs", gcn_s2_name);
process_asm (in, out, cfile);
diff --git a/gcc/config/i386/darwin.h b/gcc/config/i386/darwin.h
index b7814f7..8e64b4e 100644
--- a/gcc/config/i386/darwin.h
+++ b/gcc/config/i386/darwin.h
@@ -119,6 +119,8 @@ along with GCC; see the file COPYING3. If not see
/* We default to x86_64 for single-arch builds, bi-arch overrides. */
#define DARWIN_ARCH_SPEC "x86_64"
#define DARWIN_SUBARCH_SPEC DARWIN_ARCH_SPEC
+#undef DARWIN_HEAP_T_LIB
+#define DARWIN_HEAP_T_LIB " -lheapt_w "
#endif
#undef SUBTARGET_EXTRA_SPECS
diff --git a/gcc/config/i386/darwin32-biarch.h b/gcc/config/i386/darwin32-biarch.h
index 051ad12..2180f5a 100644
--- a/gcc/config/i386/darwin32-biarch.h
+++ b/gcc/config/i386/darwin32-biarch.h
@@ -27,6 +27,9 @@ along with GCC; see the file COPYING3. If not see
#undef DARWIN_SUBARCH_SPEC
#define DARWIN_SUBARCH_SPEC DARWIN_ARCH_SPEC
+#undef DARWIN_HEAP_T_LIB
+#define DARWIN_HEAP_T_LIB " %{m64:-lheapt_w}"
+
#undef SUBTARGET_EXTRA_SPECS
#define SUBTARGET_EXTRA_SPECS \
DARWIN_EXTRA_SPECS \
diff --git a/gcc/config/i386/darwin64-biarch.h b/gcc/config/i386/darwin64-biarch.h
index 8543679..6208007 100644
--- a/gcc/config/i386/darwin64-biarch.h
+++ b/gcc/config/i386/darwin64-biarch.h
@@ -28,6 +28,9 @@ along with GCC; see the file COPYING3. If not see
#undef DARWIN_SUBARCH_SPEC
#define DARWIN_SUBARCH_SPEC DARWIN_ARCH_SPEC
+#undef DARWIN_HEAP_T_LIB
+#define DARWIN_HEAP_T_LIB "%{!m32:-lheapt_w}"
+
#undef SUBTARGET_EXTRA_SPECS
#define SUBTARGET_EXTRA_SPECS \
DARWIN_EXTRA_SPECS \
diff --git a/gcc/config/i386/i386-expand.cc b/gcc/config/i386/i386-expand.cc
index 52754e1..5706220 100644
--- a/gcc/config/i386/i386-expand.cc
+++ b/gcc/config/i386/i386-expand.cc
@@ -9739,17 +9739,35 @@ ix86_expand_call (rtx retval, rtx fnaddr, rtx callarg1,
rtx use = NULL, call;
unsigned int vec_len = 0;
tree fndecl;
+ bool call_no_callee_saved_registers = false;
if (GET_CODE (XEXP (fnaddr, 0)) == SYMBOL_REF)
{
fndecl = SYMBOL_REF_DECL (XEXP (fnaddr, 0));
- if (fndecl
- && (lookup_attribute ("interrupt",
- TYPE_ATTRIBUTES (TREE_TYPE (fndecl)))))
- error ("interrupt service routine cannot be called directly");
+ if (fndecl)
+ {
+ if (lookup_attribute ("interrupt",
+ TYPE_ATTRIBUTES (TREE_TYPE (fndecl))))
+ error ("interrupt service routine cannot be called directly");
+ else if (lookup_attribute ("no_callee_saved_registers",
+ TYPE_ATTRIBUTES (TREE_TYPE (fndecl))))
+ call_no_callee_saved_registers = true;
+ }
}
else
- fndecl = NULL_TREE;
+ {
+ if (MEM_P (fnaddr))
+ {
+ tree mem_expr = MEM_EXPR (fnaddr);
+ if (mem_expr != nullptr
+ && TREE_CODE (mem_expr) == MEM_REF
+ && lookup_attribute ("no_callee_saved_registers",
+ TYPE_ATTRIBUTES (TREE_TYPE (mem_expr))))
+ call_no_callee_saved_registers = true;
+ }
+
+ fndecl = NULL_TREE;
+ }
if (pop == const0_rtx)
pop = NULL;
@@ -9884,13 +9902,15 @@ ix86_expand_call (rtx retval, rtx fnaddr, rtx callarg1,
vec[vec_len++] = pop;
}
- if (cfun->machine->no_caller_saved_registers
+ static const char ix86_call_used_regs[] = CALL_USED_REGISTERS;
+
+ if ((cfun->machine->call_saved_registers
+ == TYPE_NO_CALLER_SAVED_REGISTERS)
&& (!fndecl
|| (!TREE_THIS_VOLATILE (fndecl)
&& !lookup_attribute ("no_caller_saved_registers",
TYPE_ATTRIBUTES (TREE_TYPE (fndecl))))))
{
- static const char ix86_call_used_regs[] = CALL_USED_REGISTERS;
bool is_64bit_ms_abi = (TARGET_64BIT
&& ix86_function_abi (fndecl) == MS_ABI);
char c_mask = CALL_USED_REGISTERS_MASK (is_64bit_ms_abi);
@@ -9955,6 +9975,24 @@ ix86_expand_call (rtx retval, rtx fnaddr, rtx callarg1,
clobber_reg (&use, gen_rtx_REG (DImode, R10_REG));
}
+ if (call_no_callee_saved_registers)
+ {
+ /* After calling a no_callee_saved_registers function, all
+ registers may be clobbered. Clobber all registers that are
+ not used by the callee. */
+ bool is_64bit_ms_abi = (TARGET_64BIT
+ && ix86_function_abi (fndecl) == MS_ABI);
+ char c_mask = CALL_USED_REGISTERS_MASK (is_64bit_ms_abi);
+ for (int i = 0; i < FIRST_PSEUDO_REGISTER; i++)
+ if (!fixed_regs[i]
+ && !(ix86_call_used_regs[i] == 1
+ || (ix86_call_used_regs[i] & c_mask))
+ && !STACK_REGNO_P (i)
+ && !MMX_REGNO_P (i))
+ clobber_reg (&use,
+ gen_rtx_REG (GET_MODE (regno_reg_rtx[i]), i));
+ }
+
if (vec_len > 1)
call = gen_rtx_PARALLEL (VOIDmode, gen_rtvec_v (vec_len, vec));
rtx_insn *call_insn = emit_call_insn (call);
diff --git a/gcc/config/i386/i386-options.cc b/gcc/config/i386/i386-options.cc
index b6f634e..8f5ce81 100644
--- a/gcc/config/i386/i386-options.cc
+++ b/gcc/config/i386/i386-options.cc
@@ -2189,6 +2189,15 @@ ix86_option_override_internal (bool main_args_p,
&& opts->x_ix86_abi != DEFAULT_ABI)
error ("%<-mabi=%s%> not supported with %<-fsanitize=thread%>", abi_name);
+ /* Hwasan is supported with lam_u57 only. */
+ if (opts->x_flag_sanitize & SANITIZE_HWADDRESS)
+ {
+ if (ix86_lam_type == lam_u48)
+ warning (0, "%<-mlam=u48%> is not compatible with Hardware-assisted "
+ "AddressSanitizer, override to %<-mlam=u57%>");
+ ix86_lam_type = lam_u57;
+ }
+
/* For targets using ms ABI enable ms-extensions, if not
explicit turned off. For non-ms ABI we turn off this
option. */
@@ -3371,6 +3380,26 @@ ix86_simd_clone_adjust (struct cgraph_node *node)
static void
ix86_set_func_type (tree fndecl)
{
+ /* No need to save and restore callee-saved registers for a noreturn
+ function with nothrow or compiled with -fno-exceptions unless when
+ compiling with -O0 or -Og.
+
+ NB: Can't use just TREE_THIS_VOLATILE to check if this is a noreturn
+ function. The local-pure-const pass turns an interrupt function
+ into a noreturn function by setting TREE_THIS_VOLATILE. Normally
+ the local-pure-const pass is run after ix86_set_func_type is called.
+ When the local-pure-const pass is enabled for LTO, the interrupt
+ function is marked as noreturn in the IR output, which leads the
+ incompatible attribute error in LTO1. */
+ bool has_no_callee_saved_registers
+ = ((TREE_THIS_VOLATILE (fndecl)
+ && lookup_attribute ("noreturn", DECL_ATTRIBUTES (fndecl))
+ && optimize
+ && !optimize_debug
+ && (TREE_NOTHROW (fndecl) || !flag_exceptions))
+ || lookup_attribute ("no_callee_saved_registers",
+ TYPE_ATTRIBUTES (TREE_TYPE (fndecl))));
+
if (cfun->machine->func_type == TYPE_UNKNOWN)
{
if (lookup_attribute ("interrupt",
@@ -3380,12 +3409,18 @@ ix86_set_func_type (tree fndecl)
error_at (DECL_SOURCE_LOCATION (fndecl),
"interrupt and naked attributes are not compatible");
+ if (has_no_callee_saved_registers)
+ error_at (DECL_SOURCE_LOCATION (fndecl),
+ "%qs and %qs attributes are not compatible",
+ "interrupt", "no_callee_saved_registers");
+
int nargs = 0;
for (tree arg = DECL_ARGUMENTS (fndecl);
arg;
arg = TREE_CHAIN (arg))
nargs++;
- cfun->machine->no_caller_saved_registers = true;
+ cfun->machine->call_saved_registers
+ = TYPE_NO_CALLER_SAVED_REGISTERS;
cfun->machine->func_type
= nargs == 2 ? TYPE_EXCEPTION : TYPE_INTERRUPT;
@@ -3401,7 +3436,19 @@ ix86_set_func_type (tree fndecl)
cfun->machine->func_type = TYPE_NORMAL;
if (lookup_attribute ("no_caller_saved_registers",
TYPE_ATTRIBUTES (TREE_TYPE (fndecl))))
- cfun->machine->no_caller_saved_registers = true;
+ cfun->machine->call_saved_registers
+ = TYPE_NO_CALLER_SAVED_REGISTERS;
+ if (has_no_callee_saved_registers)
+ {
+ if (cfun->machine->call_saved_registers
+ == TYPE_NO_CALLER_SAVED_REGISTERS)
+ error_at (DECL_SOURCE_LOCATION (fndecl),
+ "%qs and %qs attributes are not compatible",
+ "no_caller_saved_registers",
+ "no_callee_saved_registers");
+ cfun->machine->call_saved_registers
+ = TYPE_NO_CALLEE_SAVED_REGISTERS;
+ }
}
}
}
@@ -3571,7 +3618,7 @@ ix86_set_current_function (tree fndecl)
}
ix86_previous_fndecl = fndecl;
- static bool prev_no_caller_saved_registers;
+ static call_saved_registers_type prev_call_saved_registers;
/* 64-bit MS and SYSV ABI have different set of call used registers.
Avoid expensive re-initialization of init_regs each time we switch
@@ -3582,12 +3629,13 @@ ix86_set_current_function (tree fndecl)
reinit_regs ();
/* Need to re-initialize init_regs if caller-saved registers are
changed. */
- else if (prev_no_caller_saved_registers
- != cfun->machine->no_caller_saved_registers)
+ else if (prev_call_saved_registers
+ != cfun->machine->call_saved_registers)
reinit_regs ();
if (cfun->machine->func_type != TYPE_NORMAL
- || cfun->machine->no_caller_saved_registers)
+ || (cfun->machine->call_saved_registers
+ == TYPE_NO_CALLER_SAVED_REGISTERS))
{
/* Don't allow SSE, MMX nor x87 instructions since they
may change processor state. */
@@ -3614,12 +3662,12 @@ ix86_set_current_function (tree fndecl)
"the %<no_caller_saved_registers%> attribute", isa);
/* Don't issue the same error twice. */
cfun->machine->func_type = TYPE_NORMAL;
- cfun->machine->no_caller_saved_registers = false;
+ cfun->machine->call_saved_registers
+ = TYPE_DEFAULT_CALL_SAVED_REGISTERS;
}
}
- prev_no_caller_saved_registers
- = cfun->machine->no_caller_saved_registers;
+ prev_call_saved_registers = cfun->machine->call_saved_registers;
}
/* Implement the TARGET_OFFLOAD_OPTIONS hook. */
@@ -4018,8 +4066,8 @@ ix86_handle_fndecl_attribute (tree *node, tree name, tree args, int,
}
static tree
-ix86_handle_no_caller_saved_registers_attribute (tree *, tree, tree,
- int, bool *)
+ix86_handle_call_saved_registers_attribute (tree *, tree, tree,
+ int, bool *)
{
return NULL_TREE;
}
@@ -4181,7 +4229,9 @@ static const attribute_spec ix86_gnu_attributes[] =
{ "interrupt", 0, 0, false, true, true, false,
ix86_handle_interrupt_attribute, NULL },
{ "no_caller_saved_registers", 0, 0, false, true, true, false,
- ix86_handle_no_caller_saved_registers_attribute, NULL },
+ ix86_handle_call_saved_registers_attribute, NULL },
+ { "no_callee_saved_registers", 0, 0, false, true, true, true,
+ ix86_handle_call_saved_registers_attribute, NULL },
{ "naked", 0, 0, true, false, false, false,
ix86_handle_fndecl_attribute, NULL },
{ "indirect_branch", 1, 1, true, false, false, false,
diff --git a/gcc/config/i386/i386.cc b/gcc/config/i386/i386.cc
index 8010532..b3e7c74 100644
--- a/gcc/config/i386/i386.cc
+++ b/gcc/config/i386/i386.cc
@@ -475,7 +475,9 @@ ix86_conditional_register_usage (void)
except fixed_regs and registers used for function return value
since aggregate_value_p checks call_used_regs[regno] on return
value. */
- if (cfun && cfun->machine->no_caller_saved_registers)
+ if (cfun
+ && (cfun->machine->call_saved_registers
+ == TYPE_NO_CALLER_SAVED_REGISTERS))
for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
if (!fixed_regs[i] && !ix86_function_value_regno_p (i))
call_used_regs[i] = 0;
@@ -944,7 +946,8 @@ ix86_function_ok_for_sibcall (tree decl, tree exp)
/* Sibling call isn't OK if there are no caller-saved registers
since all registers must be preserved before return. */
- if (cfun->machine->no_caller_saved_registers)
+ if (cfun->machine->call_saved_registers
+ == TYPE_NO_CALLER_SAVED_REGISTERS)
return false;
/* If we are generating position-independent code, we cannot sibcall
@@ -977,6 +980,14 @@ ix86_function_ok_for_sibcall (tree decl, tree exp)
decl_or_type = type;
}
+ /* Sibling call isn't OK if callee has no callee-saved registers
+ and the calling function has callee-saved registers. */
+ if ((cfun->machine->call_saved_registers
+ != TYPE_NO_CALLEE_SAVED_REGISTERS)
+ && lookup_attribute ("no_callee_saved_registers",
+ TYPE_ATTRIBUTES (type)))
+ return false;
+
/* If outgoing reg parm stack space changes, we cannot do sibcall. */
if ((OUTGOING_REG_PARM_STACK_SPACE (type)
!= OUTGOING_REG_PARM_STACK_SPACE (TREE_TYPE (current_function_decl)))
@@ -1139,6 +1150,12 @@ ix86_comp_type_attributes (const_tree type1, const_tree type2)
!= ix86_function_regparm (type2, NULL))
return 0;
+ if (lookup_attribute ("no_callee_saved_registers",
+ TYPE_ATTRIBUTES (type1))
+ != lookup_attribute ("no_callee_saved_registers",
+ TYPE_ATTRIBUTES (type2)))
+ return 0;
+
return 1;
}
@@ -6569,7 +6586,8 @@ ix86_epilogue_uses (int regno)
and restoring registers. Don't explicitly save SP register since
it is always preserved. */
return (epilogue_completed
- && cfun->machine->no_caller_saved_registers
+ && (cfun->machine->call_saved_registers
+ == TYPE_NO_CALLER_SAVED_REGISTERS)
&& !fixed_regs[regno]
&& !STACK_REGNO_P (regno)
&& !MMX_REGNO_P (regno));
@@ -6585,7 +6603,8 @@ ix86_hard_regno_scratch_ok (unsigned int regno)
as a scratch register after epilogue and use REGNO as scratch
register only if it has been used before to avoid saving and
restoring it. */
- return (!cfun->machine->no_caller_saved_registers
+ return ((cfun->machine->call_saved_registers
+ != TYPE_NO_CALLER_SAVED_REGISTERS)
|| (!epilogue_completed
&& df_regs_ever_live_p (regno)));
}
@@ -6595,14 +6614,21 @@ ix86_hard_regno_scratch_ok (unsigned int regno)
bool
ix86_save_reg (unsigned int regno, bool maybe_eh_return, bool ignore_outlined)
{
- /* If there are no caller-saved registers, we preserve all registers,
- except for MMX and x87 registers which aren't supported when saving
- and restoring registers. Don't explicitly save SP register since
- it is always preserved. */
- if (cfun->machine->no_caller_saved_registers)
+ rtx reg;
+
+ switch (cfun->machine->call_saved_registers)
{
- /* Don't preserve registers used for function return value. */
- rtx reg = crtl->return_rtx;
+ case TYPE_DEFAULT_CALL_SAVED_REGISTERS:
+ break;
+
+ case TYPE_NO_CALLER_SAVED_REGISTERS:
+ /* If there are no caller-saved registers, we preserve all
+ registers, except for MMX and x87 registers which aren't
+ supported when saving and restoring registers. Don't
+ explicitly save SP register since it is always preserved.
+
+ Don't preserve registers used for function return value. */
+ reg = crtl->return_rtx;
if (reg)
{
unsigned int i = REGNO (reg);
@@ -6618,6 +6644,9 @@ ix86_save_reg (unsigned int regno, bool maybe_eh_return, bool ignore_outlined)
&& !MMX_REGNO_P (regno)
&& (regno != HARD_FRAME_POINTER_REGNUM
|| !frame_pointer_needed));
+
+ case TYPE_NO_CALLEE_SAVED_REGISTERS:
+ return false;
}
if (regno == REAL_PIC_OFFSET_TABLE_REGNUM
@@ -7717,7 +7746,8 @@ find_drap_reg (void)
registers in epilogue, DRAP must not use caller-saved
register in such case. */
if (DECL_STATIC_CHAIN (decl)
- || cfun->machine->no_caller_saved_registers
+ || (cfun->machine->call_saved_registers
+ == TYPE_NO_CALLER_SAVED_REGISTERS)
|| crtl->tail_call_emit)
return R13_REG;
@@ -7730,7 +7760,8 @@ find_drap_reg (void)
registers in epilogue, DRAP must not use caller-saved
register in such case. */
if (DECL_STATIC_CHAIN (decl)
- || cfun->machine->no_caller_saved_registers
+ || (cfun->machine->call_saved_registers
+ == TYPE_NO_CALLER_SAVED_REGISTERS)
|| crtl->tail_call_emit
|| crtl->calls_eh_return)
return DI_REG;
@@ -22746,7 +22777,10 @@ x86_function_profiler (FILE *file, int labelno ATTRIBUTE_UNUSED)
if (TARGET_64BIT)
{
#ifndef NO_PROFILE_COUNTERS
- fprintf (file, "\tleaq\t%sP%d(%%rip),%%r11\n", LPREFIX, labelno);
+ if (ASSEMBLER_DIALECT == ASM_INTEL)
+ fprintf (file, "\tlea\tr11, %sP%d[rip]\n", LPREFIX, labelno);
+ else
+ fprintf (file, "\tleaq\t%sP%d(%%rip), %%r11\n", LPREFIX, labelno);
#endif
if (!TARGET_PECOFF)
@@ -22757,12 +22791,29 @@ x86_function_profiler (FILE *file, int labelno ATTRIBUTE_UNUSED)
/* NB: R10 is caller-saved. Although it can be used as a
static chain register, it is preserved when calling
mcount for nested functions. */
- fprintf (file, "1:\tmovabsq\t$%s, %%r10\n\tcall\t*%%r10\n",
- mcount_name);
+ if (ASSEMBLER_DIALECT == ASM_INTEL)
+ fprintf (file, "1:\tmovabs\tr10, OFFSET FLAT:%s\n"
+ "\tcall\tr10\n", mcount_name);
+ else
+ fprintf (file, "1:\tmovabsq\t$%s, %%r10\n\tcall\t*%%r10\n",
+ mcount_name);
break;
case CM_LARGE_PIC:
#ifdef NO_PROFILE_COUNTERS
- fprintf (file, "1:\tmovabsq\t$_GLOBAL_OFFSET_TABLE_-1b, %%r11\n");
+ if (ASSEMBLER_DIALECT == ASM_INTEL)
+ {
+ fprintf (file, "1:movabs\tr11, "
+ "OFFSET FLAT:_GLOBAL_OFFSET_TABLE_-1b\n");
+ fprintf (file, "\tlea\tr10, 1b[rip]\n");
+ fprintf (file, "\tadd\tr10, r11\n");
+ fprintf (file, "\tmovabs\tr11, OFFSET FLAT:%s@PLTOFF\n",
+ mcount_name);
+ fprintf (file, "\tadd\tr10, r11\n");
+ fprintf (file, "\tcall\tr10\n");
+ break;
+ }
+ fprintf (file,
+ "1:\tmovabsq\t$_GLOBAL_OFFSET_TABLE_-1b, %%r11\n");
fprintf (file, "\tleaq\t1b(%%rip), %%r10\n");
fprintf (file, "\taddq\t%%r11, %%r10\n");
fprintf (file, "\tmovabsq\t$%s@PLTOFF, %%r11\n", mcount_name);
@@ -22776,7 +22827,12 @@ x86_function_profiler (FILE *file, int labelno ATTRIBUTE_UNUSED)
case CM_MEDIUM_PIC:
if (!ix86_direct_extern_access)
{
- fprintf (file, "1:\tcall\t*%s@GOTPCREL(%%rip)\n", mcount_name);
+ if (ASSEMBLER_DIALECT == ASM_INTEL)
+ fprintf (file, "1:\tcall\t[QWORD PTR %s@GOTPCREL[rip]]",
+ mcount_name);
+ else
+ fprintf (file, "1:\tcall\t*%s@GOTPCREL(%%rip)\n",
+ mcount_name);
break;
}
/* fall through */
@@ -22791,23 +22847,37 @@ x86_function_profiler (FILE *file, int labelno ATTRIBUTE_UNUSED)
else if (flag_pic)
{
#ifndef NO_PROFILE_COUNTERS
- fprintf (file, "\tleal\t%sP%d@GOTOFF(%%ebx),%%" PROFILE_COUNT_REGISTER "\n",
- LPREFIX, labelno);
+ if (ASSEMBLER_DIALECT == ASM_INTEL)
+ fprintf (file,
+ "\tlea\t" PROFILE_COUNT_REGISTER ", %sP%d@GOTOFF[ebx]\n",
+ LPREFIX, labelno);
+ else
+ fprintf (file,
+ "\tleal\t%sP%d@GOTOFF(%%ebx), %%" PROFILE_COUNT_REGISTER "\n",
+ LPREFIX, labelno);
#endif
- fprintf (file, "1:\tcall\t*%s@GOT(%%ebx)\n", mcount_name);
+ if (ASSEMBLER_DIALECT == ASM_INTEL)
+ fprintf (file, "1:\tcall\t[DWORD PTR %s@GOT[ebx]]\n", mcount_name);
+ else
+ fprintf (file, "1:\tcall\t*%s@GOT(%%ebx)\n", mcount_name);
}
else
{
#ifndef NO_PROFILE_COUNTERS
- fprintf (file, "\tmovl\t$%sP%d,%%" PROFILE_COUNT_REGISTER "\n",
- LPREFIX, labelno);
+ if (ASSEMBLER_DIALECT == ASM_INTEL)
+ fprintf (file,
+ "\tmov\t" PROFILE_COUNT_REGISTER ", OFFSET FLAT:%sP%d\n",
+ LPREFIX, labelno);
+ else
+ fprintf (file, "\tmovl\t$%sP%d, %%" PROFILE_COUNT_REGISTER "\n",
+ LPREFIX, labelno);
#endif
x86_print_call_or_nop (file, mcount_name);
}
if (flag_record_mcount
- || lookup_attribute ("fentry_section",
- DECL_ATTRIBUTES (current_function_decl)))
+ || lookup_attribute ("fentry_section",
+ DECL_ATTRIBUTES (current_function_decl)))
{
const char *sname = "__mcount_loc";
diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
index b9c574e..35ce8b0 100644
--- a/gcc/config/i386/i386.h
+++ b/gcc/config/i386/i386.h
@@ -2724,6 +2724,17 @@ enum function_type
TYPE_EXCEPTION
};
+enum call_saved_registers_type
+{
+ TYPE_DEFAULT_CALL_SAVED_REGISTERS = 0,
+ /* The current function is a function specified with the "interrupt"
+ or "no_caller_saved_registers" attribute. */
+ TYPE_NO_CALLER_SAVED_REGISTERS,
+ /* The current function is a function specified with the "noreturn"
+ or "no_callee_saved_registers" attribute. */
+ TYPE_NO_CALLEE_SAVED_REGISTERS
+};
+
enum queued_insn_type
{
TYPE_NONE = 0,
@@ -2793,9 +2804,8 @@ struct GTY(()) machine_function {
/* How to generate function return. */
ENUM_BITFIELD(indirect_branch) function_return_type : 3;
- /* If true, the current function is a function specified with
- the "interrupt" or "no_caller_saved_registers" attribute. */
- BOOL_BITFIELD no_caller_saved_registers : 1;
+ /* Call saved registers type. */
+ ENUM_BITFIELD(call_saved_registers_type) call_saved_registers : 2;
/* If true, there is register available for argument passing. This
is used only in ix86_function_ok_for_sibcall by 32-bit to determine
diff --git a/gcc/config/ia64/ia64.cc b/gcc/config/ia64/ia64.cc
index 53a4444..ac3d5607 100644
--- a/gcc/config/ia64/ia64.cc
+++ b/gcc/config/ia64/ia64.cc
@@ -3886,7 +3886,8 @@ ia64_expand_prologue (void)
/* Output the textual info surrounding the prologue. */
void
-ia64_start_function (FILE *file, const char *fnname, tree decl)
+ia64_start_function (FILE *file, const char *fnname,
+ tree decl ATTRIBUTE_UNUSED)
{
#if TARGET_ABI_OPEN_VMS
vms_start_function (fnname);
diff --git a/gcc/config/loongarch/lasx.md b/gcc/config/loongarch/lasx.md
index 72f7161..e2115ff 100644
--- a/gcc/config/loongarch/lasx.md
+++ b/gcc/config/loongarch/lasx.md
@@ -582,21 +582,6 @@
[(set_attr "type" "simd_insert")
(set_attr "mode" "<MODE>")])
-(define_insn "@vec_concatz<mode>"
- [(set (match_operand:LASX 0 "register_operand" "=f")
- (vec_concat:LASX
- (match_operand:<VHMODE256_ALL> 1 "nonimmediate_operand")
- (match_operand:<VHMODE256_ALL> 2 "const_0_operand")))]
- "ISA_HAS_LASX"
-{
- if (MEM_P (operands[1]))
- return "vld\t%w0,%1";
- else
- return "vori.b\t%w0,%w1,0";
-}
- [(set_attr "type" "simd_splat")
- (set_attr "mode" "<MODE>")])
-
(define_insn "vec_concat<mode>"
[(set (match_operand:LASX 0 "register_operand" "=f")
(vec_concat:LASX
@@ -761,6 +746,21 @@
DONE;
})
+(define_insn_and_split "vec_extract<mode>_0"
+ [(set (match_operand:<UNITMODE> 0 "register_operand" "=f")
+ (vec_select:<UNITMODE>
+ (match_operand:FLASX 1 "register_operand" "f")
+ (parallel [(const_int 0)])))]
+ "ISA_HAS_LSX"
+ "#"
+ "&& reload_completed"
+ [(set (match_dup 0) (match_dup 1))]
+{
+ operands[1] = gen_rtx_REG (<UNITMODE>mode, REGNO (operands[1]));
+}
+ [(set_attr "move_type" "fmove")
+ (set_attr "mode" "<UNITMODE>")])
+
(define_expand "vec_perm<mode>"
[(match_operand:LASX 0 "register_operand")
(match_operand:LASX 1 "register_operand")
diff --git a/gcc/config/loongarch/loongarch.cc b/gcc/config/loongarch/loongarch.cc
index 8246747..b494040 100644
--- a/gcc/config/loongarch/loongarch.cc
+++ b/gcc/config/loongarch/loongarch.cc
@@ -1924,11 +1924,7 @@ loongarch_symbolic_constant_p (rtx x, enum loongarch_symbol_type *symbol_type)
x = UNSPEC_ADDRESS (x);
}
else if (SYMBOL_REF_P (x) || LABEL_REF_P (x))
- {
- *symbol_type = loongarch_classify_symbol (x);
- if (*symbol_type == SYMBOL_TLS)
- return true;
- }
+ *symbol_type = loongarch_classify_symbol (x);
else
return false;
@@ -1939,17 +1935,21 @@ loongarch_symbolic_constant_p (rtx x, enum loongarch_symbol_type *symbol_type)
relocations. */
switch (*symbol_type)
{
- case SYMBOL_TLS_IE:
- case SYMBOL_TLS_LE:
- case SYMBOL_TLSGD:
- case SYMBOL_TLSLDM:
case SYMBOL_PCREL:
case SYMBOL_PCREL64:
/* GAS rejects offsets outside the range [-2^31, 2^31-1]. */
return sext_hwi (INTVAL (offset), 32) == INTVAL (offset);
+ /* The following symbol types do not allow non-zero offsets. */
case SYMBOL_GOT_DISP:
+ case SYMBOL_TLS_IE:
+ case SYMBOL_TLSGD:
+ case SYMBOL_TLSLDM:
case SYMBOL_TLS:
+ /* From an implementation perspective, tls_le symbols are allowed to
+ have non-zero offsets, but currently binutils has not added support,
+ so the generation of non-zero offsets is prohibited here. */
+ case SYMBOL_TLS_LE:
return false;
}
gcc_unreachable ();
@@ -1970,11 +1970,11 @@ loongarch_explicit_relocs_p (enum loongarch_symbol_type type)
{
case SYMBOL_TLS_IE:
case SYMBOL_TLS_LE:
- case SYMBOL_TLSGD:
- case SYMBOL_TLSLDM:
case SYMBOL_PCREL64:
- /* The linker don't know how to relax TLS accesses or 64-bit
- pc-relative accesses. */
+ /* TLS IE cannot be relaxed. TLS LE relaxation is different from
+ the normal R_LARCH_RELAX-based relaxation and it **requires**
+ using the explicit %le_{lo12,hi20,add}_r relocs. The linker
+ does not relax 64-bit pc-relative accesses as at now. */
return true;
case SYMBOL_GOT_DISP:
/* The linker don't know how to relax GOT accesses in extreme
@@ -2789,7 +2789,7 @@ loongarch_call_tls_get_addr (rtx sym, enum loongarch_symbol_type type, rtx v0)
start_sequence ();
- if (la_opt_explicit_relocs != EXPLICIT_RELOCS_NONE)
+ if (la_opt_explicit_relocs == EXPLICIT_RELOCS_ALWAYS)
{
/* Split tls symbol to high and low. */
rtx high = gen_rtx_HIGH (Pmode, copy_rtx (loc));
@@ -9917,17 +9917,12 @@ loongarch_expand_vector_group_init (rtx target, rtx vals)
gcc_unreachable ();
}
- if (high == CONST0_RTX (half_mode))
- emit_insn (gen_vec_concatz (vmode, target, low, high));
- else
- {
- if (!register_operand (low, half_mode))
- low = force_reg (half_mode, low);
- if (!register_operand (high, half_mode))
- high = force_reg (half_mode, high);
- emit_insn (gen_rtx_SET (target,
- gen_rtx_VEC_CONCAT (vmode, low, high)));
- }
+ if (!register_operand (low, half_mode))
+ low = force_reg (half_mode, low);
+ if (!register_operand (high, half_mode))
+ high = force_reg (half_mode, high);
+ emit_insn (gen_rtx_SET (target,
+ gen_rtx_VEC_CONCAT (vmode, low, high)));
}
/* Expand initialization of a vector which has all same elements. */
@@ -10852,16 +10847,23 @@ void loongarch_emit_swdivsf (rtx res, rtx a, rtx b, machine_mode mode)
/* x0 = 1./b estimate. */
emit_insn (gen_rtx_SET (x0, gen_rtx_UNSPEC (mode, gen_rtvec (1, b),
unspec)));
- /* 2.0 - b * x0 */
+ /* e0 = 2.0 - b * x0. */
emit_insn (gen_rtx_SET (e0, gen_rtx_FMA (mode,
gen_rtx_NEG (mode, b), x0, mtwo)));
- /* x0 = a * x0 */
if (a != CONST1_RTX (mode))
- emit_insn (gen_rtx_SET (x0, gen_rtx_MULT (mode, a, x0)));
-
- /* res = e0 * x0 */
- emit_insn (gen_rtx_SET (res, gen_rtx_MULT (mode, e0, x0)));
+ {
+ rtx e1 = gen_reg_rtx (mode);
+ /* e1 = a * x0. */
+ emit_insn (gen_rtx_SET (e1, gen_rtx_MULT (mode, a, x0)));
+ /* res = e0 * e1. */
+ emit_insn (gen_rtx_SET (res, gen_rtx_MULT (mode, e0, e1)));
+ }
+ else
+ {
+ /* res = e0 * x0. */
+ emit_insn (gen_rtx_SET (res, gen_rtx_MULT (mode, e0, x0)));
+ }
}
static bool
diff --git a/gcc/config/loongarch/loongarch.h b/gcc/config/loongarch/loongarch.h
index 4e6ede9..8b453ab 100644
--- a/gcc/config/loongarch/loongarch.h
+++ b/gcc/config/loongarch/loongarch.h
@@ -869,6 +869,7 @@ typedef struct {
1 is the default; other values are interpreted relative to that. */
#define BRANCH_COST(speed_p, predictable_p) la_branch_cost
+#define LOGICAL_OP_NON_SHORT_CIRCUIT 0
/* Return the asm template for a conditional branch instruction.
OPCODE is the opcode's mnemonic and OPERANDS is the asm template for
diff --git a/gcc/config/loongarch/loongarch.md b/gcc/config/loongarch/loongarch.md
index ebc0476..dda3cdf 100644
--- a/gcc/config/loongarch/loongarch.md
+++ b/gcc/config/loongarch/loongarch.md
@@ -2197,8 +2197,8 @@
})
(define_insn_and_split "*movsi_internal"
- [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,r,w,*f,f,*r,*m,*r,*z")
- (match_operand:SI 1 "move_operand" "r,Yd,w,rJ,*r*J,m,*f,*f,*z,*r"))]
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,r,w,*f,f,*r,*m")
+ (match_operand:SI 1 "move_operand" "r,Yd,w,rJ,*r*J,m,*f,*f"))]
"(register_operand (operands[0], SImode)
|| reg_or_0_operand (operands[1], SImode))"
{ return loongarch_output_move (operands[0], operands[1]); }
@@ -2211,7 +2211,7 @@
DONE;
}
"
- [(set_attr "move_type" "move,const,load,store,mgtf,fpload,mftg,fpstore,mftg,mgtf")
+ [(set_attr "move_type" "move,const,load,store,mgtf,fpload,mftg,fpstore")
(set_attr "mode" "SI")])
;; 16-bit Integer moves
diff --git a/gcc/config/m68k/m68k.cc b/gcc/config/m68k/m68k.cc
index e932568..b1c9238 100644
--- a/gcc/config/m68k/m68k.cc
+++ b/gcc/config/m68k/m68k.cc
@@ -197,6 +197,7 @@ static bool m68k_modes_tieable_p (machine_mode, machine_mode);
static machine_mode m68k_promote_function_mode (const_tree, machine_mode,
int *, const_tree, int);
static void m68k_asm_final_postscan_insn (FILE *, rtx_insn *insn, rtx [], int);
+static HARD_REG_SET m68k_zero_call_used_regs (HARD_REG_SET);
/* Initialize the GCC target structure. */
@@ -361,6 +362,9 @@ static void m68k_asm_final_postscan_insn (FILE *, rtx_insn *insn, rtx [], int);
#undef TARGET_ASM_FINAL_POSTSCAN_INSN
#define TARGET_ASM_FINAL_POSTSCAN_INSN m68k_asm_final_postscan_insn
+#undef TARGET_ZERO_CALL_USED_REGS
+#define TARGET_ZERO_CALL_USED_REGS m68k_zero_call_used_regs
+
TARGET_GNU_ATTRIBUTES (m68k_attribute_table,
{
/* { name, min_len, max_len, decl_req, type_req, fn_type_req,
@@ -5471,7 +5475,7 @@ output_andsi3 (rtx *operands)
operands[1] = GEN_INT (logval);
else
{
- operands[0] = adjust_address (operands[0], SImode, 3 - (logval / 8));
+ operands[0] = adjust_address (operands[0], QImode, 3 - (logval / 8));
operands[1] = GEN_INT (logval % 8);
}
return "bclr %1,%0";
@@ -5510,7 +5514,7 @@ output_iorsi3 (rtx *operands)
operands[1] = GEN_INT (logval);
else
{
- operands[0] = adjust_address (operands[0], SImode, 3 - (logval / 8));
+ operands[0] = adjust_address (operands[0], QImode, 3 - (logval / 8));
operands[1] = GEN_INT (logval % 8);
}
return "bset %1,%0";
@@ -5548,7 +5552,7 @@ output_xorsi3 (rtx *operands)
operands[1] = GEN_INT (logval);
else
{
- operands[0] = adjust_address (operands[0], SImode, 3 - (logval / 8));
+ operands[0] = adjust_address (operands[0], QImode, 3 - (logval / 8));
operands[1] = GEN_INT (logval % 8);
}
return "bchg %1,%0";
@@ -7166,4 +7170,46 @@ m68k_promote_function_mode (const_tree type, machine_mode mode,
return mode;
}
+/* Implement TARGET_ZERO_CALL_USED_REGS. */
+
+static HARD_REG_SET
+m68k_zero_call_used_regs (HARD_REG_SET need_zeroed_hardregs)
+{
+ rtx zero_fpreg = NULL_RTX;
+
+ for (unsigned int regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
+ if (TEST_HARD_REG_BIT (need_zeroed_hardregs, regno))
+ {
+ rtx reg, zero;
+
+ if (INT_REGNO_P (regno))
+ {
+ reg = regno_reg_rtx[regno];
+ zero = CONST0_RTX (SImode);
+ }
+ else if (FP_REGNO_P (regno))
+ {
+ reg = gen_raw_REG (SFmode, regno);
+ if (zero_fpreg == NULL_RTX)
+ {
+ /* On the 040/060 clearing an FP reg loads a large
+ immediate. To reduce code size use the first
+ cleared FP reg to clear remaining ones. Don't do
+ this on cores which use fmovecr. */
+ zero = CONST0_RTX (SFmode);
+ if (TUNE_68040_60)
+ zero_fpreg = reg;
+ }
+ else
+ zero = zero_fpreg;
+ }
+ else
+ gcc_unreachable ();
+
+ emit_move_insn (reg, zero);
+ }
+
+ return need_zeroed_hardregs;
+}
+
#include "gt-m68k.h"
diff --git a/gcc/config/mips/mips-opts.h b/gcc/config/mips/mips-opts.h
index 57bdbdf..4b0c2c0 100644
--- a/gcc/config/mips/mips-opts.h
+++ b/gcc/config/mips/mips-opts.h
@@ -53,4 +53,11 @@ enum mips_cb_setting {
MIPS_CB_OPTIMAL,
MIPS_CB_ALWAYS
};
+
+/* Enumerates the setting of the -mexplicit-relocs= option. */
+enum mips_explicit_relocs {
+ MIPS_EXPLICIT_RELOCS_NONE,
+ MIPS_EXPLICIT_RELOCS_BASE,
+ MIPS_EXPLICIT_RELOCS_PCREL
+};
#endif
diff --git a/gcc/config/mips/mips.cc b/gcc/config/mips/mips.cc
index 30e9981..68e2ae8 100644
--- a/gcc/config/mips/mips.cc
+++ b/gcc/config/mips/mips.cc
@@ -20033,8 +20033,6 @@ mips_set_compression_mode (unsigned int compression_mode)
call. */
flag_move_loop_invariants = 0;
- target_flags |= MASK_EXPLICIT_RELOCS;
-
/* Experiments suggest we get the best overall section-anchor
results from using the range of an unextended LW or SW. Code
that makes heavy use of byte or short accesses can do better
@@ -20064,6 +20062,9 @@ mips_set_compression_mode (unsigned int compression_mode)
if (TARGET_MSA)
sorry ("MSA MIPS16 code");
+
+ if (!TARGET_EXPLICIT_RELOCS)
+ sorry ("MIPS16 requires %<-mexplicit-relocs%>");
}
else
{
diff --git a/gcc/config/mips/mips.h b/gcc/config/mips/mips.h
index 8768933..7145d23 100644
--- a/gcc/config/mips/mips.h
+++ b/gcc/config/mips/mips.h
@@ -145,6 +145,14 @@ struct mips_cpu_info {
|| TARGET_MICROMIPS) \
&& mips_cb != MIPS_CB_NEVER)
+/* True if assembler support %gp_rel etc. */
+#define TARGET_EXPLICIT_RELOCS \
+ (mips_opt_explicit_relocs >= MIPS_EXPLICIT_RELOCS_BASE)
+
+/* True if assembler support %pcrel_hi/%pcrel_lo. */
+#define TARGET_EXPLICIT_RELOCS_PCREL \
+ (mips_opt_explicit_relocs >= MIPS_EXPLICIT_RELOCS_PCREL)
+
/* True if the output file is marked as ".abicalls; .option pic0"
(-call_nonpic). */
#define TARGET_ABICALLS_PIC0 \
diff --git a/gcc/config/mips/mips.opt b/gcc/config/mips/mips.opt
index e8b411a..ce36942 100644
--- a/gcc/config/mips/mips.opt
+++ b/gcc/config/mips/mips.opt
@@ -145,9 +145,30 @@ meva
Target Var(TARGET_EVA)
Use Enhanced Virtual Addressing instructions.
+Enum
+Name(mips_explicit_relocs) Type(int)
+The code model option names for -mexplicit-relocs:
+
+EnumValue
+Enum(mips_explicit_relocs) String(none) Value(MIPS_EXPLICIT_RELOCS_NONE)
+
+EnumValue
+Enum(mips_explicit_relocs) String(base) Value(MIPS_EXPLICIT_RELOCS_BASE)
+
+EnumValue
+Enum(mips_explicit_relocs) String(pcrel) Value(MIPS_EXPLICIT_RELOCS_PCREL)
+
+mexplicit-relocs=
+Target RejectNegative Joined Enum(mips_explicit_relocs) Var(mips_opt_explicit_relocs) Init(MIPS_EXPLICIT_RELOCS)
+Use %reloc() assembly operators.
+
mexplicit-relocs
-Target Mask(EXPLICIT_RELOCS)
-Use NewABI-style %reloc() assembly operators.
+Target RejectNegative Alias(mexplicit-relocs=,base)
+Use %reloc() assembly operators (for backward compatibility).
+
+mno-explicit-relocs
+Target RejectNegative Alias(mexplicit-relocs=,none)
+Don't use %reloc() assembly operators (for backward compatibility).
mextern-sdata
Target Var(TARGET_EXTERN_SDATA) Init(1)
diff --git a/gcc/config/nvptx/nvptx.opt b/gcc/config/nvptx/nvptx.opt
index 09d75fc..deb0066 100644
--- a/gcc/config/nvptx/nvptx.opt
+++ b/gcc/config/nvptx/nvptx.opt
@@ -108,9 +108,15 @@ Target RejectNegative Alias(misa=,sm_80)
march-map=sm_87
Target RejectNegative Alias(misa=,sm_80)
+march-map=sm_89
+Target RejectNegative Alias(misa=,sm_80)
+
march-map=sm_90
Target RejectNegative Alias(misa=,sm_80)
+march-map=sm_90a
+Target RejectNegative Alias(misa=,sm_80)
+
Enum
Name(ptx_version) Type(int)
Known PTX ISA versions (for use with the -mptx= option):
diff --git a/gcc/config/pa/pa.cc b/gcc/config/pa/pa.cc
index 48a370c..c58b0a0 100644
--- a/gcc/config/pa/pa.cc
+++ b/gcc/config/pa/pa.cc
@@ -557,6 +557,10 @@ pa_option_override (void)
if (flag_pic == 1 || TARGET_64BIT)
flag_pic = 2;
+ /* 64-bit target is always PIE. */
+ if (TARGET_64BIT)
+ flag_pie = 2;
+
/* Disable -freorder-blocks-and-partition as we don't support hot and
cold partitioning. */
if (flag_reorder_blocks_and_partition)
diff --git a/gcc/config/riscv/autovec.md b/gcc/config/riscv/autovec.md
index 706cd97..3b32369 100644
--- a/gcc/config/riscv/autovec.md
+++ b/gcc/config/riscv/autovec.md
@@ -664,7 +664,7 @@
[(set (match_operand:<VM> 0 "register_operand")
(match_operator:<VM> 1 "comparison_operator"
[(match_operand:V_VLSI 2 "register_operand")
- (match_operand:V_VLSI 3 "register_operand")]))]
+ (match_operand:V_VLSI 3 "nonmemory_operand")]))]
"TARGET_VECTOR"
{
riscv_vector::expand_vec_cmp (operands[0], GET_CODE (operands[1]),
@@ -677,7 +677,7 @@
[(set (match_operand:<VM> 0 "register_operand")
(match_operator:<VM> 1 "comparison_operator"
[(match_operand:V_VLSI 2 "register_operand")
- (match_operand:V_VLSI 3 "register_operand")]))]
+ (match_operand:V_VLSI 3 "nonmemory_operand")]))]
"TARGET_VECTOR"
{
riscv_vector::expand_vec_cmp (operands[0], GET_CODE (operands[1]),
@@ -2605,7 +2605,7 @@
[(match_operand 0 "register_operand")
(match_operand 1 "memory_operand")
(match_operand:ANYI 2 "const_int_operand")]
- "TARGET_VECTOR"
+ "TARGET_VECTOR && !TARGET_XTHEADVECTOR"
{
riscv_vector::expand_rawmemchr(<MODE>mode, operands[0], operands[1],
operands[2]);
diff --git a/gcc/config/riscv/constraints.md b/gcc/config/riscv/constraints.md
index ee1c12b..41acaea 100644
--- a/gcc/config/riscv/constraints.md
+++ b/gcc/config/riscv/constraints.md
@@ -55,6 +55,11 @@
(and (match_code "const_int")
(match_test "ival == 2")))
+(define_constraint "c03"
+ "Constant value 3"
+ (and (match_code "const_int")
+ (match_test "ival == 3")))
+
(define_constraint "c04"
"Constant value 4"
(and (match_code "const_int")
@@ -262,3 +267,28 @@
(and (match_code "const_int")
(and (match_test "IN_RANGE (ival, 0, 1073741823)")
(match_test "exact_log2 (ival + 1) != -1"))))
+
+(define_constraint "CV_simd_si6"
+ "A 6-bit signed immediate for SIMD."
+ (and (match_code "const_int")
+ (match_test "IN_RANGE (ival, -32, 31)")))
+
+(define_constraint "CV_simd_un6"
+ "A 6-bit unsigned immediate for SIMD."
+ (and (match_code "const_int")
+ (match_test "IN_RANGE (ival, 0, 63)")))
+
+(define_constraint "CV_simd_i01"
+ "Shifting immediate for SIMD shufflei1."
+ (and (match_code "const_int")
+ (match_test "IN_RANGE (ival, 64, 127)")))
+
+(define_constraint "CV_simd_i02"
+ "Shifting immediate for SIMD shufflei2."
+ (and (match_code "const_int")
+ (match_test "IN_RANGE (ival, -128, -65)")))
+
+(define_constraint "CV_simd_i03"
+ "Shifting immediate for SIMD shufflei3."
+ (and (match_code "const_int")
+ (match_test "IN_RANGE (ival, -64, -1)")))
diff --git a/gcc/config/riscv/corev.def b/gcc/config/riscv/corev.def
index 3b9ec02..9157529 100644
--- a/gcc/config/riscv/corev.def
+++ b/gcc/config/riscv/corev.def
@@ -44,3 +44,159 @@ RISCV_BUILTIN (cv_alu_subuRN, "cv_alu_subuRN",RISCV_BUILTIN_DIRECT, RISCV_USI_
// XCVELW
RISCV_BUILTIN (cv_elw_elw_si, "cv_elw_elw", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_VOID_PTR, cvelw),
+
+// XCVSIMD
+//ALU Operations
+RISCV_BUILTIN (cv_simd_add_h_si, "cv_simd_add_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_UQI, cvsimd),
+RISCV_BUILTIN (cv_simd_add_b_si, "cv_simd_add_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_add_sc_h_si, "cv_simd_add_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_HI, cvsimd),
+RISCV_BUILTIN (cv_simd_add_sc_b_si, "cv_simd_add_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI, cvsimd),
+RISCV_BUILTIN (cv_simd_sub_h_si, "cv_simd_sub_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_UQI, cvsimd),
+RISCV_BUILTIN (cv_simd_sub_b_si, "cv_simd_sub_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_sub_sc_h_si, "cv_simd_sub_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_HI, cvsimd),
+RISCV_BUILTIN (cv_simd_sub_sc_b_si, "cv_simd_sub_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI, cvsimd),
+RISCV_BUILTIN (cv_simd_avg_h_si, "cv_simd_avg_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_avg_b_si, "cv_simd_avg_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_avg_sc_h_si, "cv_simd_avg_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_HI, cvsimd),
+RISCV_BUILTIN (cv_simd_avg_sc_b_si, "cv_simd_avg_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI, cvsimd),
+RISCV_BUILTIN (cv_simd_avgu_h_si, "cv_simd_avgu_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_avgu_b_si, "cv_simd_avgu_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_avgu_sc_h_si, "cv_simd_avgu_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_UHI, cvsimd),
+RISCV_BUILTIN (cv_simd_avgu_sc_b_si, "cv_simd_avgu_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_UQI, cvsimd),
+RISCV_BUILTIN (cv_simd_min_h_si, "cv_simd_min_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_min_b_si, "cv_simd_min_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_min_sc_h_si, "cv_simd_min_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_HI, cvsimd),
+RISCV_BUILTIN (cv_simd_min_sc_b_si, "cv_simd_min_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI, cvsimd),
+RISCV_BUILTIN (cv_simd_minu_h_si, "cv_simd_minu_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_minu_b_si, "cv_simd_minu_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_minu_sc_h_si, "cv_simd_minu_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_UHI, cvsimd),
+RISCV_BUILTIN (cv_simd_minu_sc_b_si, "cv_simd_minu_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_UQI, cvsimd),
+RISCV_BUILTIN (cv_simd_max_h_si, "cv_simd_max_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_max_b_si, "cv_simd_max_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_max_sc_h_si, "cv_simd_max_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_HI, cvsimd),
+RISCV_BUILTIN (cv_simd_max_sc_b_si, "cv_simd_max_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI, cvsimd),
+RISCV_BUILTIN (cv_simd_maxu_h_si, "cv_simd_maxu_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_maxu_b_si, "cv_simd_maxu_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_maxu_sc_h_si, "cv_simd_maxu_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_UHI, cvsimd),
+RISCV_BUILTIN (cv_simd_maxu_sc_b_si, "cv_simd_maxu_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_UQI, cvsimd),
+RISCV_BUILTIN (cv_simd_srl_h_si, "cv_simd_srl_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_srl_b_si, "cv_simd_srl_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_srl_sc_h_si, "cv_simd_srl_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_HI, cvsimd),
+RISCV_BUILTIN (cv_simd_srl_sc_b_si, "cv_simd_srl_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI, cvsimd),
+RISCV_BUILTIN (cv_simd_sra_h_si, "cv_simd_sra_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_sra_b_si, "cv_simd_sra_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_sra_sc_h_si, "cv_simd_sra_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_HI, cvsimd),
+RISCV_BUILTIN (cv_simd_sra_sc_b_si, "cv_simd_sra_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI, cvsimd),
+RISCV_BUILTIN (cv_simd_sll_h_si, "cv_simd_sll_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_sll_b_si, "cv_simd_sll_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_sll_sc_h_si, "cv_simd_sll_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_HI, cvsimd),
+RISCV_BUILTIN (cv_simd_sll_sc_b_si, "cv_simd_sll_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI, cvsimd),
+RISCV_BUILTIN (cv_simd_or_h_si, "cv_simd_or_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_or_b_si, "cv_simd_or_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_or_sc_h_si, "cv_simd_or_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_HI, cvsimd),
+RISCV_BUILTIN (cv_simd_or_sc_b_si, "cv_simd_or_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI, cvsimd),
+RISCV_BUILTIN (cv_simd_xor_h_si, "cv_simd_xor_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_xor_b_si, "cv_simd_xor_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_xor_sc_h_si, "cv_simd_xor_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_HI, cvsimd),
+RISCV_BUILTIN (cv_simd_xor_sc_b_si, "cv_simd_xor_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI, cvsimd),
+RISCV_BUILTIN (cv_simd_and_h_si, "cv_simd_and_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_and_b_si, "cv_simd_and_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_and_sc_h_si, "cv_simd_and_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_HI, cvsimd),
+RISCV_BUILTIN (cv_simd_and_sc_b_si, "cv_simd_and_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI, cvsimd),
+RISCV_BUILTIN (cv_simd_abs_h_si, "cv_simd_abs_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_abs_b_si, "cv_simd_abs_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_neg_h_si, "cv_simd_neg_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_neg_b_si, "cv_simd_neg_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI, cvsimd),
+//BIT MANIPULATION
+RISCV_BUILTIN (cv_simd_extract_h_si, "cv_simd_extract_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI, cvsimd),
+RISCV_BUILTIN (cv_simd_extract_b_si, "cv_simd_extract_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI, cvsimd),
+RISCV_BUILTIN (cv_simd_extractu_h_si, "cv_simd_extractu_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI, cvsimd),
+RISCV_BUILTIN (cv_simd_extractu_b_si, "cv_simd_extractu_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI, cvsimd),
+RISCV_BUILTIN (cv_simd_insert_h_si, "cv_simd_insert_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_QI, cvsimd),
+RISCV_BUILTIN (cv_simd_insert_b_si, "cv_simd_insert_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_QI, cvsimd),
+//DOT PRODUCT
+RISCV_BUILTIN (cv_simd_dotup_h_si, "cv_simd_dotup_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_dotup_b_si, "cv_simd_dotup_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_dotup_sc_h_si, "cv_simd_dotup_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_UHI, cvsimd),
+RISCV_BUILTIN (cv_simd_dotup_sc_b_si, "cv_simd_dotup_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_UQI, cvsimd),
+RISCV_BUILTIN (cv_simd_dotusp_h_si, "cv_simd_dotusp_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_dotusp_b_si, "cv_simd_dotusp_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_dotusp_sc_h_si, "cv_simd_dotusp_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_HI, cvsimd),
+RISCV_BUILTIN (cv_simd_dotusp_sc_b_si, "cv_simd_dotusp_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI, cvsimd),
+RISCV_BUILTIN (cv_simd_dotsp_h_si, "cv_simd_dotsp_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_dotsp_b_si, "cv_simd_dotsp_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_dotsp_sc_h_si, "cv_simd_dotsp_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_HI, cvsimd),
+RISCV_BUILTIN (cv_simd_dotsp_sc_b_si, "cv_simd_dotsp_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI, cvsimd),
+RISCV_BUILTIN (cv_simd_sdotup_h_si, "cv_simd_sdotup_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_sdotup_b_si, "cv_simd_sdotup_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_sdotup_sc_h_si, "cv_simd_sdotup_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_UHI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_sdotup_sc_b_si, "cv_simd_sdotup_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_UQI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_sdotusp_h_si, "cv_simd_sdotusp_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_sdotusp_b_si, "cv_simd_sdotusp_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_sdotusp_sc_h_si, "cv_simd_sdotusp_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_HI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_sdotusp_sc_b_si, "cv_simd_sdotusp_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_sdotsp_h_si, "cv_simd_sdotsp_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_sdotsp_b_si, "cv_simd_sdotsp_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_sdotsp_sc_h_si, "cv_simd_sdotsp_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_HI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_sdotsp_sc_b_si, "cv_simd_sdotsp_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI_USI, cvsimd),
+//SHUFFLE AND PACK
+RISCV_BUILTIN (cv_simd_shuffle_h_si, "cv_simd_shuffle_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_shuffle_sci_h_si, "cv_simd_shuffle_sci_h",RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_UQI, cvsimd),
+RISCV_BUILTIN (cv_simd_shuffle_b_si, "cv_simd_shuffle_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_shuffle_sci_b_si, "cv_simd_shuffle_sci_b",RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_UQI, cvsimd),
+RISCV_BUILTIN (cv_simd_shuffle2_h_si, "cv_simd_shuffle2_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_shuffle2_b_si, "cv_simd_shuffle2_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_packhi_h_si, "cv_simd_packhi_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_packlo_h_si, "cv_simd_packlo_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_packhi_b_si, "cv_simd_packhi_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_packlo_b_si, "cv_simd_packlo_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_USI, cvsimd),
+//RISCV_BUILTIN (cv_simd_pack_si, "cv_simd_pack", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+//RISCV_BUILTIN (cv_simd_pack_h_si, "cv_simd_pack_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+//RISCV_BUILTIN (cv_simd_packhi_b_si, "cv_simd_packhi_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_USI, cvsimd),
+//RISCV_BUILTIN (cv_simd_packlo_b_si, "cv_simd_packlo_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_USI, cvsimd),
+//COMPARISON OPERATIONS
+RISCV_BUILTIN (cv_simd_cmpeq_h_si, "cv_simd_cmpeq_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpeq_b_si, "cv_simd_cmpeq_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpeq_sc_h_si, "cv_simd_cmpeq_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_HI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpeq_sc_b_si, "cv_simd_cmpeq_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpne_h_si, "cv_simd_cmpne_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpne_b_si, "cv_simd_cmpne_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpne_sc_h_si, "cv_simd_cmpne_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_HI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpne_sc_b_si, "cv_simd_cmpne_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpgt_h_si, "cv_simd_cmpgt_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpgt_b_si, "cv_simd_cmpgt_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpgt_sc_h_si, "cv_simd_cmpgt_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_HI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpgt_sc_b_si, "cv_simd_cmpgt_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpge_h_si, "cv_simd_cmpge_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpge_b_si, "cv_simd_cmpge_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpge_sc_h_si, "cv_simd_cmpge_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_HI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpge_sc_b_si, "cv_simd_cmpge_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmplt_h_si, "cv_simd_cmplt_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmplt_b_si, "cv_simd_cmplt_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmplt_sc_h_si, "cv_simd_cmplt_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_HI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmplt_sc_b_si, "cv_simd_cmplt_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmple_h_si, "cv_simd_cmple_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmple_b_si, "cv_simd_cmple_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmple_sc_h_si, "cv_simd_cmple_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_HI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmple_sc_b_si, "cv_simd_cmple_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpgtu_h_si, "cv_simd_cmpgtu_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpgtu_b_si, "cv_simd_cmpgtu_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpgtu_sc_h_si, "cv_simd_cmpgtu_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_UHI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpgtu_sc_b_si, "cv_simd_cmpgtu_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_UQI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpgeu_h_si, "cv_simd_cmpgeu_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpgeu_b_si, "cv_simd_cmpgeu_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpgeu_sc_h_si, "cv_simd_cmpgeu_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_UHI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpgeu_sc_b_si, "cv_simd_cmpgeu_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_UQI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpltu_h_si, "cv_simd_cmpltu_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpltu_b_si, "cv_simd_cmpltu_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpltu_sc_h_si, "cv_simd_cmpltu_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_UHI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpltu_sc_b_si, "cv_simd_cmpltu_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_UQI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpleu_h_si, "cv_simd_cmpleu_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpleu_b_si, "cv_simd_cmpleu_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpleu_sc_h_si, "cv_simd_cmpleu_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_UHI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpleu_sc_b_si, "cv_simd_cmpleu_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_UQI, cvsimd),
+//COMPLEX NUMBER
+RISCV_BUILTIN (cv_simd_cplxmul_r_si, "cv_simd_cplxmul_r", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_USI_UQI, cvsimd),
+RISCV_BUILTIN (cv_simd_cplxmul_i_si, "cv_simd_cplxmul_i", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_USI_UQI, cvsimd),
+RISCV_BUILTIN (cv_simd_cplxconj_si, "cv_simd_cplxconj", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_subrotmj_si, "cv_simd_subrotmj", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_UQI, cvsimd),
diff --git a/gcc/config/riscv/corev.md b/gcc/config/riscv/corev.md
index adad240..3857c53 100644
--- a/gcc/config/riscv/corev.md
+++ b/gcc/config/riscv/corev.md
@@ -27,6 +27,164 @@
;;CORE-V EVENT LOAD
UNSPECV_CV_ELW
+
+ ;;CORE-V SIMD
+ ;;CORE-V SIMD ALU
+ UNSPEC_CV_ADD_H
+ UNSPEC_CV_ADD_B
+ UNSPEC_CV_ADD_SC_H
+ UNSPEC_CV_ADD_SC_B
+ UNSPEC_CV_SUB_H
+ UNSPEC_CV_SUB_B
+ UNSPEC_CV_SUB_SC_H
+ UNSPEC_CV_SUB_SC_B
+ UNSPEC_CV_AVG_H
+ UNSPEC_CV_AVG_B
+ UNSPEC_CV_AVG_SC_H
+ UNSPEC_CV_AVG_SC_B
+ UNSPEC_CV_AVGU_H
+ UNSPEC_CV_AVGU_B
+ UNSPEC_CV_AVGU_SC_H
+ UNSPEC_CV_AVGU_SC_B
+ UNSPEC_CV_MIN_H
+ UNSPEC_CV_MIN_B
+ UNSPEC_CV_MIN_SC_H
+ UNSPEC_CV_MIN_SC_B
+ UNSPEC_CV_MINU_H
+ UNSPEC_CV_MINU_B
+ UNSPEC_CV_MINU_SC_H
+ UNSPEC_CV_MINU_SC_B
+ UNSPEC_CV_MAX_H
+ UNSPEC_CV_MAX_B
+ UNSPEC_CV_MAX_SC_H
+ UNSPEC_CV_MAX_SC_B
+ UNSPEC_CV_MAXU_H
+ UNSPEC_CV_MAXU_B
+ UNSPEC_CV_MAXU_SC_H
+ UNSPEC_CV_MAXU_SC_B
+ UNSPEC_CV_SRL_H
+ UNSPEC_CV_SRL_B
+ UNSPEC_CV_SRL_SC_H
+ UNSPEC_CV_SRL_SC_B
+ UNSPEC_CV_SRA_H
+ UNSPEC_CV_SRA_B
+ UNSPEC_CV_SRA_SC_H
+ UNSPEC_CV_SRA_SC_B
+ UNSPEC_CV_SLL_H
+ UNSPEC_CV_SLL_B
+ UNSPEC_CV_SLL_SC_H
+ UNSPEC_CV_SLL_SC_B
+ UNSPEC_CV_OR_H
+ UNSPEC_CV_OR_B
+ UNSPEC_CV_OR_SC_H
+ UNSPEC_CV_OR_SC_B
+ UNSPEC_CV_XOR_H
+ UNSPEC_CV_XOR_B
+ UNSPEC_CV_XOR_SC_H
+ UNSPEC_CV_XOR_SC_B
+ UNSPEC_CV_AND_H
+ UNSPEC_CV_AND_B
+ UNSPEC_CV_AND_SC_H
+ UNSPEC_CV_AND_SC_B
+ UNSPEC_CV_ABS_H
+ UNSPEC_CV_ABS_B
+ UNSPEC_CV_NEG_H
+ UNSPEC_CV_NEG_B
+
+ ;;CORE-V SIMD BIT MANIPULATION
+ UNSPEC_CV_EXTRACT_H
+ UNSPEC_CV_EXTRACT_B
+ UNSPEC_CV_EXTRACTU_H
+ UNSPEC_CV_EXTRACTU_B
+ UNSPEC_CV_INSERT_H
+ UNSPEC_CV_INSERT_B
+
+ ;;CORE-V SIMD DOT PRODUCT
+ UNSPEC_CV_DOTUP_H
+ UNSPEC_CV_DOTUP_B
+ UNSPEC_CV_DOTUP_SC_H
+ UNSPEC_CV_DOTUP_SC_B
+ UNSPEC_CV_DOTUSP_H
+ UNSPEC_CV_DOTUSP_B
+ UNSPEC_CV_DOTUSP_SC_H
+ UNSPEC_CV_DOTUSP_SC_B
+ UNSPEC_CV_DOTSP_H
+ UNSPEC_CV_DOTSP_B
+ UNSPEC_CV_DOTSP_SC_H
+ UNSPEC_CV_DOTSP_SC_B
+ UNSPEC_CV_SDOTUP_H
+ UNSPEC_CV_SDOTUP_B
+ UNSPEC_CV_SDOTUP_SC_H
+ UNSPEC_CV_SDOTUP_SC_B
+ UNSPEC_CV_SDOTUSP_H
+ UNSPEC_CV_SDOTUSP_B
+ UNSPEC_CV_SDOTUSP_SC_H
+ UNSPEC_CV_SDOTUSP_SC_B
+ UNSPEC_CV_SDOTSP_H
+ UNSPEC_CV_SDOTSP_B
+ UNSPEC_CV_SDOTSP_SC_H
+ UNSPEC_CV_SDOTSP_SC_B
+
+ ;;CORE-V SIMD SHUFFLE AND PACK
+ UNSPEC_CV_SHUFFLE_H
+ UNSPEC_CV_SHUFFLE_SCI_H
+ UNSPEC_CV_SHUFFLE_B
+ UNSPEC_CV_SHUFFLE_SCI_B
+ UNSPEC_CV_SHUFFLE2_H
+ UNSPEC_CV_SHUFFLE2_B
+ UNSPEC_CV_PACKHI_H
+ UNSPEC_CV_PACKLO_H
+ UNSPEC_CV_PACKHI_B
+ UNSPEC_CV_PACKLO_B
+
+ ;;CORE-V SIMD COMPARISON
+ UNSPEC_CV_CMPEQ_H
+ UNSPEC_CV_CMPEQ_B
+ UNSPEC_CV_CMPEQ_SC_H
+ UNSPEC_CV_CMPEQ_SC_B
+ UNSPEC_CV_CMPNE_H
+ UNSPEC_CV_CMPNE_B
+ UNSPEC_CV_CMPNE_SC_H
+ UNSPEC_CV_CMPNE_SC_B
+ UNSPEC_CV_CMPGT_H
+ UNSPEC_CV_CMPGT_B
+ UNSPEC_CV_CMPGT_SC_H
+ UNSPEC_CV_CMPGT_SC_B
+ UNSPEC_CV_CMPGE_H
+ UNSPEC_CV_CMPGE_B
+ UNSPEC_CV_CMPGE_SC_H
+ UNSPEC_CV_CMPGE_SC_B
+ UNSPEC_CV_CMPLT_H
+ UNSPEC_CV_CMPLT_B
+ UNSPEC_CV_CMPLT_SC_H
+ UNSPEC_CV_CMPLT_SC_B
+ UNSPEC_CV_CMPLE_H
+ UNSPEC_CV_CMPLE_B
+ UNSPEC_CV_CMPLE_SC_H
+ UNSPEC_CV_CMPLE_SC_B
+ UNSPEC_CV_CMPGTU_H
+ UNSPEC_CV_CMPGTU_B
+ UNSPEC_CV_CMPGTU_SC_H
+ UNSPEC_CV_CMPGTU_SC_B
+ UNSPEC_CV_CMPGEU_H
+ UNSPEC_CV_CMPGEU_B
+ UNSPEC_CV_CMPGEU_SC_H
+ UNSPEC_CV_CMPGEU_SC_B
+ UNSPEC_CV_CMPLTU_H
+ UNSPEC_CV_CMPLTU_B
+ UNSPEC_CV_CMPLTU_SC_H
+ UNSPEC_CV_CMPLTU_SC_B
+ UNSPEC_CV_CMPLEU_H
+ UNSPEC_CV_CMPLEU_B
+ UNSPEC_CV_CMPLEU_SC_H
+ UNSPEC_CV_CMPLEU_SC_B
+
+ ;;CORE-V SIMD COMPLEX
+ UNSPEC_CV_CPLXMUL_R
+ UNSPEC_CV_CPLXMUL_I
+ UNSPEC_CV_CPLXCONJ
+ UNSPEC_CV_SUBROTMJ
+
])
;; XCVMAC extension.
@@ -706,3 +864,1753 @@
[(set_attr "type" "load")
(set_attr "mode" "SI")])
+
+;;CORE-V SIMD
+;;CORE-V SIMD ALU
+(define_insn "riscv_cv_simd_add_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r,r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r,r,r")
+ (match_operand:SI 2 "register_operand" "r,r,r,r")
+ (match_operand:QI 3 "const_int2_operand" "J,c01,c02,c03")]
+ UNSPEC_CV_ADD_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.add.h\t%0,%1,%2
+ cv.add.div2\t%0,%1,%2
+ cv.add.div4\t%0,%1,%2
+ cv.add.div8\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_add_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_ADD_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.add.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_add_sc_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:HI 2 "int6s_operand" "CV_simd_si6,r")]
+ UNSPEC_CV_ADD_SC_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.add.sci.h\t%0,%1,%2
+ cv.add.sc.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_add_sc_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:QI 2 "int6s_operand" "CV_simd_si6,r")]
+ UNSPEC_CV_ADD_SC_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.add.sci.b\t%0,%1,%2
+ cv.add.sc.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_sub_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r,r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r,r,r")
+ (match_operand:SI 2 "register_operand" "r,r,r,r")
+ (match_operand:QI 3 "const_int2_operand" "J,c01,c02,c03")]
+ UNSPEC_CV_SUB_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.sub.h\t%0,%1,%2
+ cv.sub.div2\t%0,%1,%2
+ cv.sub.div4\t%0,%1,%2
+ cv.sub.div8\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_sub_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_SUB_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.sub.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_sub_sc_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:HI 2 "int6s_operand" "CV_simd_si6,r")]
+ UNSPEC_CV_SUB_SC_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.sub.sci.h\t%0,%1,%2
+ cv.sub.sc.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_sub_sc_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:QI 2 "int6s_operand" "CV_simd_si6,r")]
+ UNSPEC_CV_SUB_SC_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.sub.sci.b\t%0,%1,%2
+ cv.sub.sc.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_avg_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_AVG_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.avg.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_avg_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_AVG_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.avg.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_avg_sc_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:HI 2 "int6s_operand" "CV_simd_si6,r")]
+ UNSPEC_CV_AVG_SC_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.avg.sci.h\t%0,%1,%2
+ cv.avg.sc.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_avg_sc_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:QI 2 "int6s_operand" "CV_simd_si6,r")]
+ UNSPEC_CV_AVG_SC_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.avg.sci.b\t%0,%1,%2
+ cv.avg.sc.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_avgu_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_AVGU_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.avgu.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_avgu_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_AVGU_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.avgu.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_avgu_sc_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:HI 2 "int6_operand" "CV_simd_un6,r")]
+ UNSPEC_CV_AVGU_SC_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.avgu.sci.h\t%0,%1,%2
+ cv.avgu.sc.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_avgu_sc_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:QI 2 "int6_operand" "CV_simd_un6,r")]
+ UNSPEC_CV_AVGU_SC_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.avgu.sci.b\t%0,%1,%2
+ cv.avgu.sc.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_min_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_MIN_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.min.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_min_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_MIN_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.min.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_min_sc_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:HI 2 "int6s_operand" "CV_simd_si6,r")]
+ UNSPEC_CV_MIN_SC_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.min.sci.h\t%0,%1,%2
+ cv.min.sc.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_min_sc_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:QI 2 "int6s_operand" "CV_simd_si6,r")]
+ UNSPEC_CV_MIN_SC_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.min.sci.b\t%0,%1,%2
+ cv.min.sc.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_minu_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_MINU_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.minu.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_minu_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_MINU_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.minu.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_minu_sc_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:HI 2 "int6_operand" "CV_simd_un6,r")]
+ UNSPEC_CV_MINU_SC_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.minu.sci.h\t%0,%1,%2
+ cv.minu.sc.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_minu_sc_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:QI 2 "int6_operand" "CV_simd_un6,r")]
+ UNSPEC_CV_MINU_SC_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.minu.sci.b\t%0,%1,%2
+ cv.minu.sc.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_max_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_MAX_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.max.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_max_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_MAX_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.max.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_max_sc_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:HI 2 "int6s_operand" "CV_simd_si6,r")]
+ UNSPEC_CV_MAX_SC_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.max.sci.h\t%0,%1,%2
+ cv.max.sc.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_max_sc_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:QI 2 "int6s_operand" "CV_simd_si6,r")]
+ UNSPEC_CV_MAX_SC_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.max.sci.b\t%0,%1,%2
+ cv.max.sc.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_maxu_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_MAXU_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.maxu.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_maxu_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_MAXU_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.maxu.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_maxu_sc_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:HI 2 "int6_operand" "CV_simd_un6,r")]
+ UNSPEC_CV_MAXU_SC_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.maxu.sci.h\t%0,%1,%2
+ cv.maxu.sc.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_maxu_sc_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:QI 2 "int6_operand" "CV_simd_un6,r")]
+ UNSPEC_CV_MAXU_SC_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.maxu.sci.b\t%0,%1,%2
+ cv.maxu.sc.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_srl_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_SRL_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.srl.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_srl_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_SRL_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.srl.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_srl_sc_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:HI 2 "int6_operand" "CV_simd_un6,r")]
+ UNSPEC_CV_SRL_SC_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.srl.sci.h\t%0,%1,%2
+ cv.srl.sc.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_srl_sc_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:QI 2 "int6_operand" "CV_simd_un6,r")]
+ UNSPEC_CV_SRL_SC_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.srl.sci.b\t%0,%1,%2
+ cv.srl.sc.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_sra_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_SRA_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.sra.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_sra_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_SRA_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.sra.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_sra_sc_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:HI 2 "int6_operand" "CV_simd_un6,r")]
+ UNSPEC_CV_SRA_SC_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.sra.sci.h\t%0,%1,%2
+ cv.sra.sc.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_sra_sc_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:QI 2 "int6_operand" "CV_simd_un6,r")]
+ UNSPEC_CV_SRA_SC_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.sra.sci.b\t%0,%1,%2
+ cv.sra.sc.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_sll_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_SLL_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.sll.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_sll_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_SLL_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.sll.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_sll_sc_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:HI 2 "int6_operand" "CV_simd_un6,r")]
+ UNSPEC_CV_SLL_SC_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.sll.sci.h\t%0,%1,%2
+ cv.sll.sc.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_sll_sc_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:QI 2 "int6_operand" "CV_simd_un6,r")]
+ UNSPEC_CV_SLL_SC_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.sll.sci.b\t%0,%1,%2
+ cv.sll.sc.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_or_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_OR_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.or.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_or_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_OR_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.or.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_or_sc_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:HI 2 "int6s_operand" "CV_simd_si6,r")]
+ UNSPEC_CV_OR_SC_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.or.sci.h\t%0,%1,%2
+ cv.or.sc.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_or_sc_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:QI 2 "int6s_operand" "CV_simd_si6,r")]
+ UNSPEC_CV_OR_SC_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.or.sci.b\t%0,%1,%2
+ cv.or.sc.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_xor_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_XOR_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.xor.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_xor_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_XOR_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.xor.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_xor_sc_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:HI 2 "int6s_operand" "CV_simd_si6,r")]
+ UNSPEC_CV_XOR_SC_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.xor.sci.h\t%0,%1,%2
+ cv.xor.sc.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_xor_sc_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:QI 2 "int6s_operand" "CV_simd_si6,r")]
+ UNSPEC_CV_XOR_SC_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.xor.sci.b\t%0,%1,%2
+ cv.xor.sc.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_and_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_AND_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.and.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_and_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_AND_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.and.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_and_sc_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:HI 2 "int6s_operand" "CV_simd_si6,r")]
+ UNSPEC_CV_AND_SC_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.and.sci.h\t%0,%1,%2
+ cv.and.sc.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_and_sc_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:QI 2 "int6s_operand" "CV_simd_si6,r")]
+ UNSPEC_CV_AND_SC_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.and.sci.b\t%0,%1,%2
+ cv.and.sc.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_abs_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")]UNSPEC_CV_ABS_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.abs.h\t%0,%1"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_abs_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")]UNSPEC_CV_ABS_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.abs.b\t%0,%1"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_neg_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")]UNSPEC_CV_NEG_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.sub.h\t%0,zero,%1"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_neg_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")]UNSPEC_CV_NEG_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.sub.b\t%0,zero,%1"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+;;CORE-V SIMD BIT MANIPULATION
+(define_insn "riscv_cv_simd_extract_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:QI 2 "immediate_operand" "CV_simd_si6")]
+ UNSPEC_CV_EXTRACT_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.extract.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_extract_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:QI 2 "immediate_operand" "CV_simd_si6")]
+ UNSPEC_CV_EXTRACT_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.extract.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_extractu_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:QI 2 "immediate_operand" "CV_simd_si6")]
+ UNSPEC_CV_EXTRACTU_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.extractu.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_extractu_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:QI 2 "immediate_operand" "CV_simd_si6")]
+ UNSPEC_CV_EXTRACTU_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.extractu.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_insert_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "0")
+ (match_operand:QI 3 "immediate_operand" "CV_simd_si6")]
+ UNSPEC_CV_INSERT_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.insert.h\t%0,%1,%3"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_insert_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "0")
+ (match_operand:QI 3 "immediate_operand" "CV_simd_si6")]
+ UNSPEC_CV_INSERT_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.insert.b\t%0,%1,%3"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+;;CORE-V SIMD DOT PRODUCT
+(define_insn "riscv_cv_simd_dotup_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_DOTUP_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.dotup.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_dotup_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_DOTUP_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.dotup.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_dotup_sc_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:HI 2 "int6_operand" "CV_simd_un6,r")]
+ UNSPEC_CV_DOTUP_SC_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.dotup.sci.h\t%0,%1,%2
+ cv.dotup.sc.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_dotup_sc_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:QI 2 "int6_operand" "CV_simd_un6,r")]
+ UNSPEC_CV_DOTUP_SC_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.dotup.sci.b\t%0,%1,%2
+ cv.dotup.sc.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_dotusp_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_DOTUSP_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.dotusp.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_dotusp_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_DOTUSP_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.dotusp.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_dotusp_sc_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:HI 2 "int6s_operand" "CV_simd_si6,r")]
+ UNSPEC_CV_DOTUSP_SC_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.dotusp.sci.h\t%0,%1,%2
+ cv.dotusp.sc.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_dotusp_sc_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:QI 2 "int6s_operand" "CV_simd_si6,r")]
+ UNSPEC_CV_DOTUSP_SC_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.dotusp.sci.b\t%0,%1,%2
+ cv.dotusp.sc.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_dotsp_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_DOTSP_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.dotsp.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_dotsp_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_DOTSP_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.dotsp.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_dotsp_sc_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:HI 2 "int6s_operand" "CV_simd_si6,r")]
+ UNSPEC_CV_DOTSP_SC_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.dotsp.sci.h\t%0,%1,%2
+ cv.dotsp.sc.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_dotsp_sc_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:QI 2 "int6s_operand" "CV_simd_si6,r")]
+ UNSPEC_CV_DOTSP_SC_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.dotsp.sci.b\t%0,%1,%2
+ cv.dotsp.sc.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_sdotup_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")
+ (match_operand:SI 3 "register_operand" "0")]
+ UNSPEC_CV_SDOTUP_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.sdotup.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_sdotup_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")
+ (match_operand:SI 3 "register_operand" "0")]
+ UNSPEC_CV_SDOTUP_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.sdotup.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_sdotup_sc_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:HI 2 "int6_operand" "CV_simd_un6,r")
+ (match_operand:SI 3 "register_operand" "0,0")]
+ UNSPEC_CV_SDOTUP_SC_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.sdotup.sci.h\t%0,%1,%2
+ cv.sdotup.sc.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_sdotup_sc_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:QI 2 "int6_operand" "CV_simd_un6,r")
+ (match_operand:SI 3 "register_operand" "0,0")]
+ UNSPEC_CV_SDOTUP_SC_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.sdotup.sci.b\t%0,%1,%2
+ cv.sdotup.sc.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_sdotusp_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")
+ (match_operand:SI 3 "register_operand" "0")]
+ UNSPEC_CV_SDOTUSP_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.sdotusp.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_sdotusp_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")
+ (match_operand:SI 3 "register_operand" "0")]
+ UNSPEC_CV_SDOTUSP_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.sdotusp.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_sdotusp_sc_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:HI 2 "int6s_operand" "CV_simd_si6,r")
+ (match_operand:SI 3 "register_operand" "0,0")]
+ UNSPEC_CV_SDOTUSP_SC_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.sdotusp.sci.h\t%0,%1,%2
+ cv.sdotusp.sc.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_sdotusp_sc_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:QI 2 "int6s_operand" "CV_simd_si6,r")
+ (match_operand:SI 3 "register_operand" "0,0")]
+ UNSPEC_CV_SDOTUSP_SC_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.sdotusp.sci.b\t%0,%1,%2
+ cv.sdotusp.sc.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_sdotsp_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")
+ (match_operand:SI 3 "register_operand" "0")]
+ UNSPEC_CV_SDOTSP_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.sdotsp.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_sdotsp_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")
+ (match_operand:SI 3 "register_operand" "0")]
+ UNSPEC_CV_SDOTSP_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.sdotsp.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_sdotsp_sc_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:HI 2 "int6s_operand" "CV_simd_si6,r")
+ (match_operand:SI 3 "register_operand" "0,0")]
+ UNSPEC_CV_SDOTSP_SC_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.sdotsp.sci.h\t%0,%1,%2
+ cv.sdotsp.sc.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_sdotsp_sc_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:QI 2 "int6s_operand" "CV_simd_si6,r")
+ (match_operand:SI 3 "register_operand" "0,0")]
+ UNSPEC_CV_SDOTSP_SC_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.sdotsp.sci.b\t%0,%1,%2
+ cv.sdotsp.sc.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+;;CORE-V SIMD SHUFFLE AND PACK
+(define_insn "riscv_cv_simd_shuffle_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_SHUFFLE_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.shuffle.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_shuffle_sci_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:QI 2 "const_int6_operand" "CV_simd_un6")]
+ UNSPEC_CV_SHUFFLE_SCI_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.shuffle.sci.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_shuffle_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_SHUFFLE_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.shuffle.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_shuffle_sci_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r,r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r,r,r")
+ (match_operand:QI 2 "const_int_operand" "CV_simd_un6,CV_simd_i01,CV_simd_i02,CV_simd_i03")]
+ UNSPEC_CV_SHUFFLE_SCI_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.shufflei0.sci.b\t%0,%1,%Y2
+ cv.shufflei1.sci.b\t%0,%1,%Y2
+ cv.shufflei2.sci.b\t%0,%1,%Y2
+ cv.shufflei3.sci.b\t%0,%1,%Y2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_shuffle2_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")
+ (match_operand:SI 3 "register_operand" "0")]
+ UNSPEC_CV_SHUFFLE2_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.shuffle2.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_shuffle2_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")
+ (match_operand:SI 3 "register_operand" "0")]
+ UNSPEC_CV_SHUFFLE2_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.shuffle2.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_packhi_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_PACKHI_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.pack.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_packlo_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_PACKLO_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.pack\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_packhi_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")
+ (match_operand:SI 3 "register_operand" "0")]
+ UNSPEC_CV_PACKHI_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.packhi.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_packlo_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")
+ (match_operand:SI 3 "register_operand" "0")]
+ UNSPEC_CV_PACKLO_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.packlo.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+;;CORE-V SIMD COMPARISON
+(define_insn "riscv_cv_simd_cmpeq_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_CMPEQ_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.cmpeq.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_cmpeq_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_CMPEQ_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.cmpeq.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_cmpeq_sc_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:HI 2 "int6s_operand" "CV_simd_si6,r")]
+ UNSPEC_CV_CMPEQ_SC_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.cmpeq.sci.h\t%0,%1,%2
+ cv.cmpeq.sc.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_cmpeq_sc_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:QI 2 "int6s_operand" "CV_simd_si6,r")]
+ UNSPEC_CV_CMPEQ_SC_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.cmpeq.sci.b\t%0,%1,%2
+ cv.cmpeq.sc.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_cmpne_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_CMPNE_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.cmpne.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_cmpne_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_CMPNE_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.cmpne.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_cmpne_sc_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:HI 2 "int6s_operand" "CV_simd_si6,r")]
+ UNSPEC_CV_CMPNE_SC_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.cmpne.sci.h\t%0,%1,%2
+ cv.cmpne.sc.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_cmpne_sc_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:QI 2 "int6s_operand" "CV_simd_si6,r")]
+ UNSPEC_CV_CMPNE_SC_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.cmpne.sci.b\t%0,%1,%2
+ cv.cmpne.sc.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_cmpgt_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_CMPGT_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.cmpgt.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_cmpgt_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_CMPGT_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.cmpgt.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_cmpgt_sc_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:HI 2 "int6s_operand" "CV_simd_si6,r")]
+ UNSPEC_CV_CMPGT_SC_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.cmpgt.sci.h\t%0,%1,%2
+ cv.cmpgt.sc.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_cmpgt_sc_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:QI 2 "int6s_operand" "CV_simd_si6,r")]
+ UNSPEC_CV_CMPGT_SC_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.cmpgt.sci.b\t%0,%1,%2
+ cv.cmpgt.sc.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_cmpge_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_CMPGE_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.cmpge.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_cmpge_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_CMPGE_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.cmpge.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_cmpge_sc_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:HI 2 "int6s_operand" "CV_simd_si6,r")]
+ UNSPEC_CV_CMPGE_SC_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.cmpge.sci.h\t%0,%1,%2
+ cv.cmpge.sc.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_cmpge_sc_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:QI 2 "int6s_operand" "CV_simd_si6,r")]
+ UNSPEC_CV_CMPGE_SC_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.cmpge.sci.b\t%0,%1,%2
+ cv.cmpge.sc.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_cmplt_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_CMPLT_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.cmplt.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_cmplt_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_CMPLT_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.cmplt.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_cmplt_sc_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:HI 2 "int6s_operand" "CV_simd_si6,r")]
+ UNSPEC_CV_CMPLT_SC_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.cmplt.sci.h\t%0,%1,%2
+ cv.cmplt.sc.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_cmplt_sc_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:QI 2 "int6s_operand" "CV_simd_si6,r")]
+ UNSPEC_CV_CMPLT_SC_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.cmplt.sci.b\t%0,%1,%2
+ cv.cmplt.sc.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_cmple_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_CMPLE_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.cmple.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_cmple_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_CMPLE_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.cmple.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_cmple_sc_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:HI 2 "int6s_operand" "CV_simd_si6,r")]
+ UNSPEC_CV_CMPLE_SC_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.cmple.sci.h\t%0,%1,%2
+ cv.cmple.sc.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_cmple_sc_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:QI 2 "int6s_operand" "CV_simd_si6,r")]
+ UNSPEC_CV_CMPLE_SC_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.cmple.sci.b\t%0,%1,%2
+ cv.cmple.sc.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_cmpgtu_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_CMPGTU_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.cmpgtu.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_cmpgtu_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_CMPGTU_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.cmpgtu.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_cmpgtu_sc_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:HI 2 "int6_operand" "CV_simd_un6,r")]
+ UNSPEC_CV_CMPGTU_SC_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.cmpgtu.sci.h\t%0,%1,%2
+ cv.cmpgtu.sc.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_cmpgtu_sc_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:QI 2 "int6_operand" "CV_simd_un6,r")]
+ UNSPEC_CV_CMPGTU_SC_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.cmpgtu.sci.b\t%0,%1,%2
+ cv.cmpgtu.sc.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_cmpgeu_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_CMPGEU_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.cmpgeu.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_cmpgeu_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_CMPGEU_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.cmpgeu.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_cmpgeu_sc_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:HI 2 "int6_operand" "CV_simd_un6,r")]
+ UNSPEC_CV_CMPGEU_SC_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.cmpgeu.sci.h\t%0,%1,%2
+ cv.cmpgeu.sc.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_cmpgeu_sc_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:QI 2 "int6_operand" "CV_simd_un6,r")]
+ UNSPEC_CV_CMPGEU_SC_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.cmpgeu.sci.b\t%0,%1,%2
+ cv.cmpgeu.sc.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_cmpltu_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_CMPLTU_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.cmpltu.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_cmpltu_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_CMPLTU_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.cmpltu.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_cmpltu_sc_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:HI 2 "int6_operand" "CV_simd_un6,r")]
+ UNSPEC_CV_CMPLTU_SC_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.cmpltu.sci.h\t%0,%1,%2
+ cv.cmpltu.sc.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_cmpltu_sc_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:QI 2 "int6_operand" "CV_simd_un6,r")]
+ UNSPEC_CV_CMPLTU_SC_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.cmpltu.sci.b\t%0,%1,%2
+ cv.cmpltu.sc.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_cmpleu_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_CMPLEU_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.cmpleu.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_cmpleu_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_CV_CMPLEU_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.cmpleu.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_cmpleu_sc_h_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:HI 2 "int6_operand" "CV_simd_un6,r")]
+ UNSPEC_CV_CMPLEU_SC_H))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.cmpleu.sci.h\t%0,%1,%2
+ cv.cmpleu.sc.h\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_cmpleu_sc_b_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r")
+ (match_operand:QI 2 "int6_operand" "CV_simd_un6,r")]
+ UNSPEC_CV_CMPLEU_SC_B))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.cmpleu.sci.b\t%0,%1,%2
+ cv.cmpleu.sc.b\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+;;CORE-V SIMD COMPLEX
+(define_insn "riscv_cv_simd_cplxmul_r_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r,r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r,r,r")
+ (match_operand:SI 2 "register_operand" "r,r,r,r")
+ (match_operand:SI 3 "register_operand" "0,0,0,0")
+ (match_operand:QI 4 "const_int2_operand" "J,c01,c02,c03")]
+ UNSPEC_CV_CPLXMUL_R))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.cplxmul.r\t%0,%1,%2
+ cv.cplxmul.r.div2\t%0,%1,%2
+ cv.cplxmul.r.div4\t%0,%1,%2
+ cv.cplxmul.r.div8\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_cplxmul_i_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r,r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r,r,r")
+ (match_operand:SI 2 "register_operand" "r,r,r,r")
+ (match_operand:SI 3 "register_operand" "0,0,0,0")
+ (match_operand:QI 4 "const_int2_operand" "J,c01,c02,c03")]
+ UNSPEC_CV_CPLXMUL_I))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.cplxmul.i\t%0,%1,%2
+ cv.cplxmul.i.div2\t%0,%1,%2
+ cv.cplxmul.i.div4\t%0,%1,%2
+ cv.cplxmul.i.div8\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_cplxconj_si"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")]
+ UNSPEC_CV_CPLXCONJ))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "cv.cplxconj\t%0,%1"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
+
+
+(define_insn "riscv_cv_simd_subrotmj_si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r,r,r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r,r,r,r")
+ (match_operand:SI 2 "register_operand" "r,r,r,r")
+ (match_operand:QI 3 "const_int2_operand" "J,c01,c02,c03")]
+ UNSPEC_CV_SUBROTMJ))]
+ "TARGET_XCVSIMD && !TARGET_64BIT"
+ "@
+ cv.subrotmj\t%0,%1,%2
+ cv.subrotmj.div2\t%0,%1,%2
+ cv.subrotmj.div4\t%0,%1,%2
+ cv.subrotmj.div8\t%0,%1,%2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "SI")])
diff --git a/gcc/config/riscv/predicates.md b/gcc/config/riscv/predicates.md
index b1a79ca..6c87a7b 100644
--- a/gcc/config/riscv/predicates.md
+++ b/gcc/config/riscv/predicates.md
@@ -425,10 +425,32 @@
(ior (match_operand 0 "register_operand")
(match_code "const_int")))
+(define_predicate "const_int6s_operand"
+ (and (match_code "const_int")
+ (match_test "IN_RANGE (INTVAL (op), -32, 31)")))
+
+(define_predicate "int6s_operand"
+ (ior (match_operand 0 "const_int6s_operand")
+ (match_operand 0 "register_operand")))
+
+(define_predicate "const_int2_operand"
+ (and (match_code "const_int")
+ (match_test "IN_RANGE (INTVAL (op), 0, 3)")))
+
+(define_predicate "const_int6_operand"
+ (and (match_code "const_int")
+ (match_test "IN_RANGE (INTVAL (op), 0, 63)")))
+
+(define_predicate "int6_operand"
+ (ior (match_operand 0 "const_int6_operand")
+ (match_operand 0 "register_operand")))
+
;; Predicates for the V extension.
(define_special_predicate "vector_length_operand"
(ior (match_operand 0 "pmode_register_operand")
- (match_operand 0 "const_csr_operand")))
+ (and (ior (match_test "TARGET_XTHEADVECTOR && rtx_equal_p (op, const0_rtx)")
+ (match_test "!TARGET_XTHEADVECTOR"))
+ (match_operand 0 "const_csr_operand"))))
(define_special_predicate "autovec_length_operand"
(ior (match_operand 0 "pmode_register_operand")
diff --git a/gcc/config/riscv/riscv-builtins.cc b/gcc/config/riscv/riscv-builtins.cc
index 1932ff0..d457e30 100644
--- a/gcc/config/riscv/riscv-builtins.cc
+++ b/gcc/config/riscv/riscv-builtins.cc
@@ -135,6 +135,7 @@ AVAIL (hint_pause, (!0))
AVAIL (cvmac, TARGET_XCVMAC && !TARGET_64BIT)
AVAIL (cvalu, TARGET_XCVALU && !TARGET_64BIT)
AVAIL (cvelw, TARGET_XCVELW && !TARGET_64BIT)
+AVAIL (cvsimd, TARGET_XCVSIMD && !TARGET_64BIT)
/* Construct a riscv_builtin_description from the given arguments.
diff --git a/gcc/config/riscv/riscv-c.cc b/gcc/config/riscv/riscv-c.cc
index ba60cd8..2e30605 100644
--- a/gcc/config/riscv/riscv-c.cc
+++ b/gcc/config/riscv/riscv-c.cc
@@ -142,6 +142,10 @@ riscv_cpu_cpp_builtins (cpp_reader *pfile)
riscv_ext_version_value (0, 11));
}
+ if (TARGET_XTHEADVECTOR)
+ builtin_define_with_int_value ("__riscv_th_v_intrinsic",
+ riscv_ext_version_value (0, 11));
+
/* Define architecture extension test macros. */
builtin_define_with_int_value ("__riscv_arch_test", 1);
@@ -191,12 +195,13 @@ riscv_pragma_intrinsic (cpp_reader *)
const char *name = TREE_STRING_POINTER (x);
- if (strcmp (name, "vector") == 0)
+ if (strcmp (name, "vector") == 0
+ || strcmp (name, "xtheadvector") == 0)
{
if (!TARGET_VECTOR)
{
- error ("%<#pragma riscv intrinsic%> option %qs needs 'V' extension "
- "enabled",
+ error ("%<#pragma riscv intrinsic%> option %qs needs 'V' or "
+ "'XTHEADVECTOR' extension enabled",
name);
return;
}
diff --git a/gcc/config/riscv/riscv-ftypes.def b/gcc/config/riscv/riscv-ftypes.def
index 5f051df..baea490 100644
--- a/gcc/config/riscv/riscv-ftypes.def
+++ b/gcc/config/riscv/riscv-ftypes.def
@@ -38,6 +38,9 @@ DEF_RISCV_FTYPE (1, (USI, UHI))
DEF_RISCV_FTYPE (1, (SI, QI))
DEF_RISCV_FTYPE (1, (SI, HI))
DEF_RISCV_FTYPE (2, (USI, UQI, UQI))
+DEF_RISCV_FTYPE (2, (USI, USI, UHI))
+DEF_RISCV_FTYPE (2, (USI, USI, QI))
+DEF_RISCV_FTYPE (2, (USI, USI, HI))
DEF_RISCV_FTYPE (2, (USI, UHI, UHI))
DEF_RISCV_FTYPE (2, (USI, USI, USI))
DEF_RISCV_FTYPE (2, (USI, USI, UQI))
@@ -50,6 +53,11 @@ DEF_RISCV_FTYPE (2, (UDI, UDI, UDI))
DEF_RISCV_FTYPE (2, (SI, USI, USI))
DEF_RISCV_FTYPE (2, (SI, SI, SI))
DEF_RISCV_FTYPE (3, (USI, USI, USI, UQI))
+DEF_RISCV_FTYPE (3, (USI, USI, USI, QI))
+DEF_RISCV_FTYPE (3, (USI, USI, UQI, USI))
+DEF_RISCV_FTYPE (3, (USI, USI, QI, USI))
+DEF_RISCV_FTYPE (3, (USI, USI, UHI, USI))
+DEF_RISCV_FTYPE (3, (USI, USI, HI, USI))
DEF_RISCV_FTYPE (3, (USI, USI, USI, USI))
DEF_RISCV_FTYPE (3, (SI, SI, SI, UQI))
DEF_RISCV_FTYPE (3, (SI, SI, SI, SI))
diff --git a/gcc/config/riscv/riscv-opts.h b/gcc/config/riscv/riscv-opts.h
index ca57ddd..1500f88 100644
--- a/gcc/config/riscv/riscv-opts.h
+++ b/gcc/config/riscv/riscv-opts.h
@@ -118,11 +118,13 @@ enum stringop_strategy_enum {
/* Behavior of VSETVL Pass. */
enum vsetvl_strategy_enum {
- /* Simple: Insert a vsetvl* instruction for each Vector instruction. */
- VSETVL_SIMPLE = 1,
/* Optimized: Run LCM dataflow analysis to reduce vsetvl* insns and
delete any redundant ones generated in the process. */
- VSETVL_OPT = 2
+ VSETVL_OPT,
+ /* Simple: Insert a vsetvl* instruction for each Vector instruction. */
+ VSETVL_SIMPLE,
+ /* No fusion: Disable Phase 2 earliest global fusion. */
+ VSETVL_OPT_NO_FUSION,
};
#define TARGET_ZICOND_LIKE (TARGET_ZICOND || (TARGET_XVENTANACONDOPS && TARGET_64BIT))
diff --git a/gcc/config/riscv/riscv-protos.h b/gcc/config/riscv/riscv-protos.h
index 21f6dad..b3f0bdb 100644
--- a/gcc/config/riscv/riscv-protos.h
+++ b/gcc/config/riscv/riscv-protos.h
@@ -102,6 +102,7 @@ struct riscv_address_info {
};
/* Routines implemented in riscv.cc. */
+extern const char *riscv_asm_output_opcode (FILE *asm_out_file, const char *p);
extern enum riscv_symbol_type riscv_classify_symbolic_expression (rtx);
extern bool riscv_symbolic_constant_p (rtx, enum riscv_symbol_type *);
extern int riscv_float_const_rtx_index_for_fli (rtx);
@@ -298,10 +299,9 @@ void riscv_run_selftests (void);
#endif
namespace riscv_vector {
-#define RVV_VLMAX gen_rtx_REG (Pmode, X0_REGNUM)
+#define RVV_VLMAX regno_reg_rtx[X0_REGNUM]
#define RVV_VUNDEF(MODE) \
- gen_rtx_UNSPEC (MODE, gen_rtvec (1, gen_rtx_REG (SImode, X0_REGNUM)), \
- UNSPEC_VUNDEF)
+ gen_rtx_UNSPEC (MODE, gen_rtvec (1, RVV_VLMAX), UNSPEC_VUNDEF)
/* These flags describe how to pass the operands to a rvv insn pattern.
e.g.:
@@ -708,6 +708,7 @@ bool can_be_broadcasted_p (rtx);
bool gather_scatter_valid_offset_p (machine_mode);
HOST_WIDE_INT estimated_poly_value (poly_int64, unsigned int);
bool whole_reg_to_reg_move_p (rtx *, machine_mode, int);
+bool splat_to_scalar_move_p (rtx *);
}
/* We classify builtin types into two classes:
@@ -741,6 +742,7 @@ extern void th_mempair_save_restore_regs (rtx[4], bool, machine_mode);
extern unsigned int th_int_get_mask (unsigned int);
extern unsigned int th_int_get_save_adjustment (void);
extern rtx th_int_adjust_cfi_prologue (unsigned int);
+extern const char *th_asm_output_opcode (FILE *asm_out_file, const char *p);
#ifdef RTX_CODE
extern const char*
th_mempair_output_move (rtx[4], bool, machine_mode, RTX_CODE);
diff --git a/gcc/config/riscv/riscv-string.cc b/gcc/config/riscv/riscv-string.cc
index f227b86..b09b51d 100644
--- a/gcc/config/riscv/riscv-string.cc
+++ b/gcc/config/riscv/riscv-string.cc
@@ -773,7 +773,8 @@ riscv_expand_block_move_scalar (rtx dest, rtx src, rtx length)
bool
riscv_expand_block_move (rtx dest, rtx src, rtx length)
{
- if (TARGET_VECTOR && stringop_strategy & STRATEGY_VECTOR)
+ if ((TARGET_VECTOR && !TARGET_XTHEADVECTOR)
+ && stringop_strategy & STRATEGY_VECTOR)
{
bool ok = riscv_vector::expand_block_move (dest, src, length);
if (ok)
diff --git a/gcc/config/riscv/riscv-subset.h b/gcc/config/riscv/riscv-subset.h
index 1446183..ae849e2 100644
--- a/gcc/config/riscv/riscv-subset.h
+++ b/gcc/config/riscv/riscv-subset.h
@@ -67,14 +67,12 @@ private:
const char *parsing_subset_version (const char *, const char *, unsigned *,
unsigned *, bool, bool *);
- const char *parse_std_ext (const char *);
+ const char *parse_base_ext (const char *);
- const char *parse_single_std_ext (const char *);
+ const char *parse_single_std_ext (const char *, bool);
- const char *parse_multiletter_ext (const char *, const char *,
- const char *);
const char *parse_single_multiletter_ext (const char *, const char *,
- const char *);
+ const char *, bool);
void handle_implied_ext (const char *);
bool check_implied_ext ();
@@ -99,7 +97,7 @@ public:
riscv_subset_list *clone () const;
static riscv_subset_list *parse (const char *, location_t);
- const char *parse_single_ext (const char *);
+ const char *parse_single_ext (const char *, bool exact_single_p = true);
const riscv_subset_t *begin () const {return m_head;};
const riscv_subset_t *end () const {return NULL;};
diff --git a/gcc/config/riscv/riscv-v.cc b/gcc/config/riscv/riscv-v.cc
index 7ae579b..4bacb7f 100644
--- a/gcc/config/riscv/riscv-v.cc
+++ b/gcc/config/riscv/riscv-v.cc
@@ -4403,7 +4403,7 @@ cmp_lmul_gt_one (machine_mode mode)
bool
vls_mode_valid_p (machine_mode vls_mode)
{
- if (!TARGET_VECTOR)
+ if (!TARGET_VECTOR || TARGET_XTHEADVECTOR)
return false;
if (riscv_autovec_preference == RVV_SCALABLE)
@@ -5151,4 +5151,16 @@ whole_reg_to_reg_move_p (rtx *ops, machine_mode mode, int avl_type_index)
return false;
}
+/* Return true if we can transform vmv.v.x/vfmv.v.f to vmv.s.x/vfmv.s.f. */
+bool
+splat_to_scalar_move_p (rtx *ops)
+{
+ return satisfies_constraint_Wc1 (ops[1])
+ && satisfies_constraint_vu (ops[2])
+ && !MEM_P (ops[3])
+ && satisfies_constraint_c01 (ops[4])
+ && INTVAL (ops[7]) == NONVLMAX
+ && known_ge (GET_MODE_SIZE (Pmode), GET_MODE_SIZE (GET_MODE (ops[3])));
+}
+
} // namespace riscv_vector
diff --git a/gcc/config/riscv/riscv-vector-builtins-bases.cc b/gcc/config/riscv/riscv-vector-builtins-bases.cc
index fba9812..b6f6e4f 100644
--- a/gcc/config/riscv/riscv-vector-builtins-bases.cc
+++ b/gcc/config/riscv/riscv-vector-builtins-bases.cc
@@ -131,23 +131,37 @@ public:
tree type = builtin_types[e.type.index].vector;
machine_mode mode = TYPE_MODE (type);
- /* Normalize same RATO (SEW/LMUL) into same vsetvl instruction.
-
- - e8,mf8/e16,mf4/e32,mf2/e64,m1 --> e8mf8
- - e8,mf4/e16,mf2/e32,m1/e64,m2 --> e8mf4
- - e8,mf2/e16,m1/e32,m2/e64,m4 --> e8mf2
- - e8,m1/e16,m2/e32,m4/e64,m8 --> e8m1
- - e8,m2/e16,m4/e32,m8 --> e8m2
- - e8,m4/e16,m8 --> e8m4
- - e8,m8 --> e8m8
- */
- /* SEW. */
- e.add_input_operand (Pmode, gen_int_mode (8, Pmode));
-
- /* LMUL. */
- machine_mode e8_mode
- = get_vector_mode (QImode, GET_MODE_NUNITS (mode)).require ();
- e.add_input_operand (Pmode, gen_int_mode (get_vlmul (e8_mode), Pmode));
+
+ if (TARGET_XTHEADVECTOR)
+ {
+ machine_mode inner_mode = GET_MODE_INNER (mode);
+ /* SEW. */
+ e.add_input_operand (Pmode,
+ gen_int_mode (GET_MODE_BITSIZE (inner_mode), Pmode));
+ /* LMUL. */
+ e.add_input_operand (Pmode,
+ gen_int_mode (get_vlmul (mode), Pmode));
+ }
+ else
+ {
+ /* Normalize same RATO (SEW/LMUL) into same vsetvl instruction.
+
+ - e8,mf8/e16,mf4/e32,mf2/e64,m1 --> e8mf8
+ - e8,mf4/e16,mf2/e32,m1/e64,m2 --> e8mf4
+ - e8,mf2/e16,m1/e32,m2/e64,m4 --> e8mf2
+ - e8,m1/e16,m2/e32,m4/e64,m8 --> e8m1
+ - e8,m2/e16,m4/e32,m8 --> e8m2
+ - e8,m4/e16,m8 --> e8m4
+ - e8,m8 --> e8m8
+ */
+ /* SEW. */
+ e.add_input_operand (Pmode, gen_int_mode (8, Pmode));
+
+ /* LMUL. */
+ machine_mode e8_mode
+ = get_vector_mode (QImode, GET_MODE_NUNITS (mode)).require ();
+ e.add_input_operand (Pmode, gen_int_mode (get_vlmul (e8_mode), Pmode));
+ }
/* TAIL_ANY. */
e.add_input_operand (Pmode,
@@ -2127,6 +2141,83 @@ public:
}
};
+/* Implements
+ * th.vl(b/h/w)[u].v/th.vs(b/h/w)[u].v/th.vls(b/h/w)[u].v/th.vss(b/h/w)[u].v/
+ * th.vlx(b/h/w)[u].v/th.vs[u]x(b/h/w).v
+ * codegen. */
+template<bool STORE_P, lst_type LST_TYPE, int UNSPEC>
+class th_loadstore_width : public function_base
+{
+public:
+ bool apply_tail_policy_p () const override { return !STORE_P; }
+ bool apply_mask_policy_p () const override { return !STORE_P; }
+
+ unsigned int call_properties (const function_instance &) const override
+ {
+ if (STORE_P)
+ return CP_WRITE_MEMORY;
+ else
+ return CP_READ_MEMORY;
+ }
+
+ bool can_be_overloaded_p (enum predication_type_index pred) const override
+ {
+ if (STORE_P || LST_TYPE == LST_INDEXED)
+ return true;
+ return pred != PRED_TYPE_none;
+ }
+
+ rtx expand (function_expander &e) const override
+ {
+ gcc_assert (TARGET_XTHEADVECTOR);
+ if (LST_TYPE == LST_INDEXED)
+ {
+ if (STORE_P)
+ return e.use_exact_insn (
+ code_for_pred_indexed_store_width (UNSPEC, UNSPEC,
+ e.vector_mode ()));
+ else
+ return e.use_exact_insn (
+ code_for_pred_indexed_load_width (UNSPEC, e.vector_mode ()));
+ }
+ else if (LST_TYPE == LST_STRIDED)
+ {
+ if (STORE_P)
+ return e.use_contiguous_store_insn (
+ code_for_pred_strided_store_width (UNSPEC, e.vector_mode ()));
+ else
+ return e.use_contiguous_load_insn (
+ code_for_pred_strided_load_width (UNSPEC, e.vector_mode ()));
+ }
+ else
+ {
+ if (STORE_P)
+ return e.use_contiguous_store_insn (
+ code_for_pred_store_width (UNSPEC, e.vector_mode ()));
+ else
+ return e.use_contiguous_load_insn (
+ code_for_pred_mov_width (UNSPEC, e.vector_mode ()));
+ }
+ }
+};
+
+/* Implements vext.x.v. */
+class th_extract : public function_base
+{
+public:
+ bool apply_vl_p () const override { return false; }
+ bool apply_tail_policy_p () const override { return false; }
+ bool apply_mask_policy_p () const override { return false; }
+ bool use_mask_predication_p () const override { return false; }
+ bool has_merge_operand_p () const override { return false; }
+
+ rtx expand (function_expander &e) const override
+ {
+ gcc_assert (TARGET_XTHEADVECTOR);
+ return e.use_exact_insn (code_for_pred_th_extract (e.vector_mode ()));
+ }
+};
+
/* Below implements are vector crypto */
/* Implements vandn.[vv,vx] */
class vandn : public function_base
@@ -2589,6 +2680,37 @@ static CONSTEXPR const seg_indexed_load<UNSPEC_ORDERED> vloxseg_obj;
static CONSTEXPR const seg_indexed_store<UNSPEC_UNORDERED> vsuxseg_obj;
static CONSTEXPR const seg_indexed_store<UNSPEC_ORDERED> vsoxseg_obj;
static CONSTEXPR const vlsegff vlsegff_obj;
+static CONSTEXPR const th_loadstore_width<false, LST_UNIT_STRIDE, UNSPEC_TH_VLB> vlb_obj;
+static CONSTEXPR const th_loadstore_width<false, LST_UNIT_STRIDE, UNSPEC_TH_VLBU> vlbu_obj;
+static CONSTEXPR const th_loadstore_width<false, LST_UNIT_STRIDE, UNSPEC_TH_VLH> vlh_obj;
+static CONSTEXPR const th_loadstore_width<false, LST_UNIT_STRIDE, UNSPEC_TH_VLHU> vlhu_obj;
+static CONSTEXPR const th_loadstore_width<false, LST_UNIT_STRIDE, UNSPEC_TH_VLW> vlw_obj;
+static CONSTEXPR const th_loadstore_width<false, LST_UNIT_STRIDE, UNSPEC_TH_VLWU> vlwu_obj;
+static CONSTEXPR const th_loadstore_width<true, LST_UNIT_STRIDE, UNSPEC_TH_VLB> vsb_obj;
+static CONSTEXPR const th_loadstore_width<true, LST_UNIT_STRIDE, UNSPEC_TH_VLH> vsh_obj;
+static CONSTEXPR const th_loadstore_width<true, LST_UNIT_STRIDE, UNSPEC_TH_VLW> vsw_obj;
+static CONSTEXPR const th_loadstore_width<false, LST_STRIDED, UNSPEC_TH_VLSB> vlsb_obj;
+static CONSTEXPR const th_loadstore_width<false, LST_STRIDED, UNSPEC_TH_VLSBU> vlsbu_obj;
+static CONSTEXPR const th_loadstore_width<false, LST_STRIDED, UNSPEC_TH_VLSH> vlsh_obj;
+static CONSTEXPR const th_loadstore_width<false, LST_STRIDED, UNSPEC_TH_VLSHU> vlshu_obj;
+static CONSTEXPR const th_loadstore_width<false, LST_STRIDED, UNSPEC_TH_VLSW> vlsw_obj;
+static CONSTEXPR const th_loadstore_width<false, LST_STRIDED, UNSPEC_TH_VLSWU> vlswu_obj;
+static CONSTEXPR const th_loadstore_width<true, LST_STRIDED, UNSPEC_TH_VLSB> vssb_obj;
+static CONSTEXPR const th_loadstore_width<true, LST_STRIDED, UNSPEC_TH_VLSH> vssh_obj;
+static CONSTEXPR const th_loadstore_width<true, LST_STRIDED, UNSPEC_TH_VLSW> vssw_obj;
+static CONSTEXPR const th_loadstore_width<false, LST_INDEXED, UNSPEC_TH_VLXB> vlxb_obj;
+static CONSTEXPR const th_loadstore_width<false, LST_INDEXED, UNSPEC_TH_VLXBU> vlxbu_obj;
+static CONSTEXPR const th_loadstore_width<false, LST_INDEXED, UNSPEC_TH_VLXH> vlxh_obj;
+static CONSTEXPR const th_loadstore_width<false, LST_INDEXED, UNSPEC_TH_VLXHU> vlxhu_obj;
+static CONSTEXPR const th_loadstore_width<false, LST_INDEXED, UNSPEC_TH_VLXW> vlxw_obj;
+static CONSTEXPR const th_loadstore_width<false, LST_INDEXED, UNSPEC_TH_VLXWU> vlxwu_obj;
+static CONSTEXPR const th_loadstore_width<true, LST_INDEXED, UNSPEC_TH_VLXB> vsxb_obj;
+static CONSTEXPR const th_loadstore_width<true, LST_INDEXED, UNSPEC_TH_VLXH> vsxh_obj;
+static CONSTEXPR const th_loadstore_width<true, LST_INDEXED, UNSPEC_TH_VLXW> vsxw_obj;
+static CONSTEXPR const th_loadstore_width<true, LST_INDEXED, UNSPEC_TH_VSUXB> vsuxb_obj;
+static CONSTEXPR const th_loadstore_width<true, LST_INDEXED, UNSPEC_TH_VSUXH> vsuxh_obj;
+static CONSTEXPR const th_loadstore_width<true, LST_INDEXED, UNSPEC_TH_VSUXW> vsuxw_obj;
+static CONSTEXPR const th_extract vext_x_v_obj;
/* Crypto Vector */
static CONSTEXPR const vandn vandn_obj;
@@ -2880,6 +3002,37 @@ BASE (vloxseg)
BASE (vsuxseg)
BASE (vsoxseg)
BASE (vlsegff)
+BASE (vlb)
+BASE (vlh)
+BASE (vlw)
+BASE (vlbu)
+BASE (vlhu)
+BASE (vlwu)
+BASE (vsb)
+BASE (vsh)
+BASE (vsw)
+BASE (vlsb)
+BASE (vlsh)
+BASE (vlsw)
+BASE (vlsbu)
+BASE (vlshu)
+BASE (vlswu)
+BASE (vssb)
+BASE (vssh)
+BASE (vssw)
+BASE (vlxb)
+BASE (vlxh)
+BASE (vlxw)
+BASE (vlxbu)
+BASE (vlxhu)
+BASE (vlxwu)
+BASE (vsxb)
+BASE (vsxh)
+BASE (vsxw)
+BASE (vsuxb)
+BASE (vsuxh)
+BASE (vsuxw)
+BASE (vext_x_v)
/* Crypto vector */
BASE (vandn)
BASE (vbrev)
diff --git a/gcc/config/riscv/riscv-vector-builtins-bases.h b/gcc/config/riscv/riscv-vector-builtins-bases.h
index 87c7f43..1f2c94d 100644
--- a/gcc/config/riscv/riscv-vector-builtins-bases.h
+++ b/gcc/config/riscv/riscv-vector-builtins-bases.h
@@ -280,6 +280,37 @@ extern const function_base *const vloxseg;
extern const function_base *const vsuxseg;
extern const function_base *const vsoxseg;
extern const function_base *const vlsegff;
+extern const function_base *const vlb;
+extern const function_base *const vlh;
+extern const function_base *const vlw;
+extern const function_base *const vlbu;
+extern const function_base *const vlhu;
+extern const function_base *const vlwu;
+extern const function_base *const vsb;
+extern const function_base *const vsh;
+extern const function_base *const vsw;
+extern const function_base *const vlsb;
+extern const function_base *const vlsh;
+extern const function_base *const vlsw;
+extern const function_base *const vlsbu;
+extern const function_base *const vlshu;
+extern const function_base *const vlswu;
+extern const function_base *const vssb;
+extern const function_base *const vssh;
+extern const function_base *const vssw;
+extern const function_base *const vlxb;
+extern const function_base *const vlxh;
+extern const function_base *const vlxw;
+extern const function_base *const vlxbu;
+extern const function_base *const vlxhu;
+extern const function_base *const vlxwu;
+extern const function_base *const vsxb;
+extern const function_base *const vsxh;
+extern const function_base *const vsxw;
+extern const function_base *const vsuxb;
+extern const function_base *const vsuxh;
+extern const function_base *const vsuxw;
+extern const function_base *const vext_x_v;
/* Below function_base are Vectro Crypto*/
extern const function_base *const vandn;
extern const function_base *const vbrev;
diff --git a/gcc/config/riscv/riscv-vector-builtins-shapes.cc b/gcc/config/riscv/riscv-vector-builtins-shapes.cc
index ee8058d..8e90b17 100644
--- a/gcc/config/riscv/riscv-vector-builtins-shapes.cc
+++ b/gcc/config/riscv/riscv-vector-builtins-shapes.cc
@@ -33,6 +33,25 @@
namespace riscv_vector {
+/* Check whether the RETURN_TYPE and ARGUMENT_TYPES are
+ valid for the function. */
+
+static bool
+check_type (tree return_type, vec<tree> &argument_types)
+{
+ tree arg;
+ unsigned i;
+
+ if (!return_type)
+ return false;
+
+ FOR_EACH_VEC_ELT (argument_types, i, arg)
+ if (!arg)
+ return false;
+
+ return true;
+}
+
/* Add one function instance for GROUP, using operand suffix at index OI,
mode suffix at index PAIR && bi and predication suffix at index pred_idx. */
static void
@@ -49,6 +68,10 @@ build_one (function_builder &b, const function_group_info &group,
group.ops_infos.types[vec_type_idx].index);
b.allocate_argument_types (function_instance, argument_types);
b.apply_predication (function_instance, return_type, argument_types);
+
+ if (TARGET_XTHEADVECTOR && !check_type (return_type, argument_types))
+ return;
+
b.add_overloaded_function (function_instance, *group.shape);
b.add_unique_function (function_instance, (*group.shape), return_type,
argument_types);
@@ -188,6 +211,146 @@ struct indexed_loadstore_def : public function_shape
}
};
+/* Add one function instance for GROUP, using operand suffix at index OI,
+ mode suffix at index PAIR && bi and predication suffix at index pred_idx. */
+static void
+build_th_loadstore (function_builder &b, const function_group_info &group,
+ unsigned int pred_idx, unsigned int vec_type_idx)
+{
+ auto_vec<tree, 5> argument_types;
+ function_instance function_instance (group.base_name, *group.base,
+ *group.shape,
+ group.ops_infos.types[vec_type_idx],
+ group.preds[pred_idx], &group.ops_infos);
+ tree return_type = group.ops_infos.ret.get_tree_type (
+ group.ops_infos.types[vec_type_idx].index);
+ b.allocate_argument_types (function_instance, argument_types);
+ b.apply_predication (function_instance, return_type, argument_types);
+
+ if (TARGET_XTHEADVECTOR && !check_type (return_type, argument_types))
+ return;
+
+ tree type = builtin_types[group.ops_infos.types[vec_type_idx].index].vector;
+ if (strstr (group.base_name, "l")
+ && strstr (group.base_name, "u")
+ && !TYPE_UNSIGNED (TREE_TYPE (type)))
+ return;
+
+ if (strstr (group.base_name, "l")
+ && !strstr (group.base_name, "u")
+ && TYPE_UNSIGNED (TREE_TYPE (type)))
+ return;
+
+ machine_mode mode = TYPE_MODE (type);
+ int sew = GET_MODE_BITSIZE (GET_MODE_INNER (mode));
+ if (strstr (group.base_name, "h") && sew == 8)
+ return;
+
+ if (strstr (group.base_name, "w") && (sew == 8 || sew ==16))
+ return;
+
+ b.add_overloaded_function (function_instance, *group.shape);
+ b.add_unique_function (function_instance, (*group.shape), return_type,
+ argument_types);
+}
+
+/* th_loadstore_width_def class. */
+struct th_loadstore_width_def : public build_base
+{
+ void build (function_builder &b,
+ const function_group_info &group) const override
+ {
+ for (unsigned int pred_idx = 0; group.preds[pred_idx] != NUM_PRED_TYPES;
+ ++pred_idx)
+ {
+ for (unsigned int vec_type_idx = 0;
+ group.ops_infos.types[vec_type_idx].index != NUM_VECTOR_TYPES;
+ ++vec_type_idx)
+ {
+ build_th_loadstore (b, group, pred_idx, vec_type_idx);
+ }
+ }
+ }
+
+ char *get_name (function_builder &b, const function_instance &instance,
+ bool overloaded_p) const override
+ {
+ /* Return nullptr if it can not be overloaded. */
+ if (overloaded_p && !instance.base->can_be_overloaded_p (instance.pred))
+ return nullptr;
+
+ b.append_name ("__riscv_th_");
+ b.append_name (instance.base_name);
+
+ /* vop_v --> vop_v_<type>. */
+ if (!overloaded_p)
+ {
+ /* vop --> vop_v. */
+ b.append_name (operand_suffixes[instance.op_info->op]);
+ /* vop_v --> vop_v_<type>. */
+ b.append_name (type_suffixes[instance.type.index].vector);
+ }
+
+ /* According to rvv-intrinsic-doc, it does not add "_m" suffix
+ for vop_m C++ overloaded API. */
+ if (overloaded_p && instance.pred == PRED_TYPE_m)
+ return b.finish_name ();
+ b.append_name (predication_suffixes[instance.pred]);
+ return b.finish_name ();
+ }
+};
+
+
+/* th_indexed_loadstore_width_def class. */
+struct th_indexed_loadstore_width_def : public function_shape
+{
+ void build (function_builder &b,
+ const function_group_info &group) const override
+ {
+ for (unsigned int pred_idx = 0; group.preds[pred_idx] != NUM_PRED_TYPES;
+ ++pred_idx)
+ {
+ for (unsigned int vec_type_idx = 0;
+ group.ops_infos.types[vec_type_idx].index != NUM_VECTOR_TYPES;
+ ++vec_type_idx)
+ {
+ tree index_type = group.ops_infos.args[1].get_tree_type (
+ group.ops_infos.types[vec_type_idx].index);
+ if (!index_type)
+ continue;
+ build_th_loadstore (b, group, pred_idx, vec_type_idx);
+ }
+ }
+ }
+
+ char *get_name (function_builder &b, const function_instance &instance,
+ bool overloaded_p) const override
+ {
+
+ /* Return nullptr if it can not be overloaded. */
+ if (overloaded_p && !instance.base->can_be_overloaded_p (instance.pred))
+ return nullptr;
+
+ b.append_name ("__riscv_th_");
+ b.append_name (instance.base_name);
+ /* vop_v --> vop_v_<type>. */
+ if (!overloaded_p)
+ {
+ /* vop --> vop_v. */
+ b.append_name (operand_suffixes[instance.op_info->op]);
+ /* vop_v --> vop_v_<type>. */
+ b.append_name (type_suffixes[instance.type.index].vector);
+ }
+
+ /* According to rvv-intrinsic-doc, it does not add "_m" suffix
+ for vop_m C++ overloaded API. */
+ if (overloaded_p && instance.pred == PRED_TYPE_m)
+ return b.finish_name ();
+ b.append_name (predication_suffixes[instance.pred]);
+ return b.finish_name ();
+ }
+};
+
/* alu_def class. */
struct alu_def : public build_base
{
@@ -609,6 +772,23 @@ struct reduc_alu_def : public build_base
}
};
+/* th_extract_def class. */
+struct th_extract_def : public build_base
+{
+ char *get_name (function_builder &b, const function_instance &instance,
+ bool overloaded_p) const override
+ {
+ b.append_name ("__riscv_th_");
+ b.append_name (instance.base_name);
+
+ if (overloaded_p)
+ return b.finish_name ();
+ b.append_name (type_suffixes[instance.type.index].vector);
+ b.append_name (type_suffixes[instance.type.index].scalar);
+ return b.finish_name ();
+ }
+};
+
/* scalar_move_def class. */
struct scalar_move_def : public build_base
{
@@ -1071,6 +1251,8 @@ SHAPE(vsetvl, vsetvl)
SHAPE(vsetvl, vsetvlmax)
SHAPE(loadstore, loadstore)
SHAPE(indexed_loadstore, indexed_loadstore)
+SHAPE(th_loadstore_width, th_loadstore_width)
+SHAPE(th_indexed_loadstore_width, th_indexed_loadstore_width)
SHAPE(alu, alu)
SHAPE(alu_frm, alu_frm)
SHAPE(widen_alu, widen_alu)
@@ -1083,6 +1265,7 @@ SHAPE(move, move)
SHAPE(mask_alu, mask_alu)
SHAPE(reduc_alu, reduc_alu)
SHAPE(reduc_alu_frm, reduc_alu_frm)
+SHAPE(th_extract, th_extract)
SHAPE(scalar_move, scalar_move)
SHAPE(vundefined, vundefined)
SHAPE(misc, misc)
diff --git a/gcc/config/riscv/riscv-vector-builtins-shapes.h b/gcc/config/riscv/riscv-vector-builtins-shapes.h
index ac2a28c..a7624d0 100644
--- a/gcc/config/riscv/riscv-vector-builtins-shapes.h
+++ b/gcc/config/riscv/riscv-vector-builtins-shapes.h
@@ -28,6 +28,8 @@ extern const function_shape *const vsetvl;
extern const function_shape *const vsetvlmax;
extern const function_shape *const loadstore;
extern const function_shape *const indexed_loadstore;
+extern const function_shape *const th_loadstore_width;
+extern const function_shape *const th_indexed_loadstore_width;
extern const function_shape *const alu;
extern const function_shape *const alu_frm;
extern const function_shape *const widen_alu;
@@ -41,6 +43,7 @@ extern const function_shape *const mask_alu;
extern const function_shape *const reduc_alu;
extern const function_shape *const reduc_alu_frm;
extern const function_shape *const scalar_move;
+extern const function_shape *const th_extract;
extern const function_shape *const vundefined;
extern const function_shape *const misc;
extern const function_shape *const vset;
diff --git a/gcc/config/riscv/riscv-vector-builtins.cc b/gcc/config/riscv/riscv-vector-builtins.cc
index 25e0b6e..403e102 100644
--- a/gcc/config/riscv/riscv-vector-builtins.cc
+++ b/gcc/config/riscv/riscv-vector-builtins.cc
@@ -934,6 +934,32 @@ static CONSTEXPR const rvv_arg_type_info ext_vcreate_args[]
= {rvv_arg_type_info (RVV_BASE_vector),
rvv_arg_type_info_end};
+/* A list of args for vector_type func (const scalar_type *, size_t)
+ * function. */
+static CONSTEXPR const rvv_arg_type_info scalar_const_ptr_size_args[]
+ = {rvv_arg_type_info (RVV_BASE_scalar_const_ptr),
+ rvv_arg_type_info (RVV_BASE_size), rvv_arg_type_info_end};
+
+/* A list of args for vector_type func (const scalar_type *, eew8_index_type)
+ * function. */
+static CONSTEXPR const rvv_arg_type_info scalar_const_ptr_index_args[]
+ = {rvv_arg_type_info (RVV_BASE_scalar_const_ptr),
+ rvv_arg_type_info (RVV_BASE_unsigned_vector), rvv_arg_type_info_end};
+
+/* A list of args for void func (scalar_type *, eew8_index_type, vector_type)
+ * function. */
+static CONSTEXPR const rvv_arg_type_info scalar_ptr_index_args[]
+ = {rvv_arg_type_info (RVV_BASE_scalar_ptr),
+ rvv_arg_type_info (RVV_BASE_unsigned_vector),
+ rvv_arg_type_info (RVV_BASE_vector), rvv_arg_type_info_end};
+
+/* A list of args for void func (scalar_type *, size_t, vector_type)
+ * function. */
+static CONSTEXPR const rvv_arg_type_info scalar_ptr_size_args[]
+ = {rvv_arg_type_info (RVV_BASE_scalar_ptr),
+ rvv_arg_type_info (RVV_BASE_size), rvv_arg_type_info (RVV_BASE_vector),
+ rvv_arg_type_info_end};
+
/* A list of none preds that will be registered for intrinsic functions. */
static CONSTEXPR const predication_type_index none_preds[]
= {PRED_TYPE_none, NUM_PRED_TYPES};
@@ -1455,6 +1481,14 @@ static CONSTEXPR const rvv_op_info iu_shift_vvv_ops
rvv_arg_type_info (RVV_BASE_vector), /* Return type */
shift_vv_args /* Args */};
+/* A static operand information for scalar_type func (vector_type, size_t)
+ * function registration. */
+static CONSTEXPR const rvv_op_info iu_x_s_u_ops
+ = {iu_ops, /* Types */
+ OP_TYPE_vx, /* Suffix */
+ rvv_arg_type_info (RVV_BASE_scalar), /* Return type */
+ v_size_args /* Args */};
+
/* A static operand information for vector_type func (vector_type, size_t)
* function registration. */
static CONSTEXPR const rvv_op_info iu_shift_vvx_ops
@@ -2638,6 +2672,38 @@ static CONSTEXPR const rvv_op_info all_v_vcreate_lmul4_x2_ops
rvv_arg_type_info (RVV_BASE_vlmul_ext_x2), /* Return type */
ext_vcreate_args /* Args */};
+/* A static operand information for vector_type func (const scalar_type *,
+ * size_t) function registration. */
+static CONSTEXPR const rvv_op_info all_v_scalar_const_ptr_size_ops
+ = {all_ops, /* Types */
+ OP_TYPE_v, /* Suffix */
+ rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+ scalar_const_ptr_size_args /* Args */};
+
+/* A static operand information for void func (scalar_type *, size_t,
+ * vector_type) function registration. */
+static CONSTEXPR const rvv_op_info all_v_scalar_ptr_size_ops
+ = {all_ops, /* Types */
+ OP_TYPE_v, /* Suffix */
+ rvv_arg_type_info (RVV_BASE_void), /* Return type */
+ scalar_ptr_size_args /* Args */};
+
+/* A static operand information for vector_type func (const scalar_type *,
+ * index_type) function registration. */
+static CONSTEXPR const rvv_op_info all_v_scalar_const_ptr_index_ops
+ = {all_ops, /* Types */
+ OP_TYPE_v, /* Suffix */
+ rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+ scalar_const_ptr_index_args /* Args */};
+
+/* A static operand information for void func (scalar_type *, index_type,
+ * vector_type) function registration. */
+static CONSTEXPR const rvv_op_info all_v_scalar_ptr_index_ops
+ = {all_ops, /* Types */
+ OP_TYPE_v, /* Suffix */
+ rvv_arg_type_info (RVV_BASE_void), /* Return type */
+ scalar_ptr_index_args /* Args */};
+
/* A static operand information for vector_type func (vector_type).
Some ins just supports SEW=32, such as crypto vectol Zvkg extension.
* function registration. */
@@ -2816,6 +2882,10 @@ static function_group_info function_groups[] = {
#define DEF_RVV_FUNCTION(NAME, SHAPE, PREDS, OPS_INFO) \
{#NAME, &bases::NAME, &shapes::SHAPE, PREDS, OPS_INFO, REQUIRED_EXTENSIONS},
#include "riscv-vector-builtins-functions.def"
+#undef DEF_RVV_FUNCTION
+#define DEF_RVV_FUNCTION(NAME, SHAPE, PREDS, OPS_INFO) \
+ {#NAME, &bases::NAME, &shapes::SHAPE, PREDS, OPS_INFO, REQUIRED_EXTENSIONS},
+#include "thead-vector-builtins-functions.def"
};
/* The RVV types, with their built-in
@@ -4271,24 +4341,22 @@ registered_function::overloaded_hash () const
: TYPE_UNSIGNED (type);
mode_p = POINTER_TYPE_P (type) ? TYPE_MODE (TREE_TYPE (type))
: TYPE_MODE (type);
- h.add_int (unsigned_p);
- h.add_int (mode_p);
+ if (POINTER_TYPE_P (type) || lookup_vector_type_attribute (type))
+ {
+ h.add_int (unsigned_p);
+ h.add_int (mode_p);
+ }
+ else if (instance.base->may_require_vxrm_p ()
+ || instance.base->may_require_frm_p ())
+ {
+ h.add_int (argument_types.length ());
+ break;
+ }
}
return h.end ();
}
-bool
-has_vxrm_or_frm_p (function_instance &instance, const vec<tree, va_gc> &arglist)
-{
- if (instance.base->may_require_vxrm_p ()
- || (instance.base->may_require_frm_p ()
- && (TREE_CODE (TREE_TYPE (arglist[arglist.length () - 2]))
- == INTEGER_TYPE)))
- return true;
- return false;
-}
-
hashval_t
registered_function::overloaded_hash (const vec<tree, va_gc> &arglist)
{
@@ -4296,68 +4364,8 @@ registered_function::overloaded_hash (const vec<tree, va_gc> &arglist)
unsigned int len = arglist.length ();
for (unsigned int i = 0; i < len; i++)
- {
- /* vint8m1_t __riscv_vget_i8m1(vint8m2_t src, size_t index);
- When the user calls vget intrinsic, the __riscv_vget_i8m1(src, 1)
- form is used. The compiler recognizes that the parameter index is signed
- int, which is inconsistent with size_t, so the index is converted to
- size_t type in order to get correct hash value. vint8m2_t
- __riscv_vset(vint8m2_t dest, size_t index, vint8m1_t value); The reason
- is the same as above. */
- if ((instance.base == bases::vget && (i == (len - 1)))
- || ((instance.base == bases::vset
- || instance.shape == shapes::crypto_vi)
- && (i == (len - 2))))
- argument_types.safe_push (size_type_node);
- /* Vector fixed-point arithmetic instructions requiring argument vxrm.
- For example: vuint32m4_t __riscv_vaaddu(vuint32m4_t vs2,
- vuint32m4_t vs1, unsigned int vxrm, size_t vl); The user calls vaaddu
- intrinsic in the form of __riscv_vaaddu(vs2, vs1, 2, vl). The compiler
- recognizes that the parameter vxrm is a signed int, which is inconsistent
- with the parameter unsigned int vxrm declared by intrinsic, so the
- parameter vxrm is converted to an unsigned int type in order to get
- correct hash value.
-
- Vector Floating-Point Instructions requiring argument frm.
- DEF_RVV_FUNCTION (vfadd, alu, full_preds, f_vvv_ops)
- DEF_RVV_FUNCTION (vfadd_frm, alu_frm, full_preds, f_vvv_ops)
- Taking vfadd as an example, theoretically we can add base or shape to the
- hash value to distinguish whether the frm parameter is required.
- vfloat32m1_t __riscv_vfadd(vfloat32m1_t vs2, float32_t rs1, size_t vl);
- vfloat32m1_t __riscv_vfadd(vfloat32m1_t vs2, vfloat32m1_t vs1, unsigned int
- frm, size_t vl);
-
- However, the current registration mechanism of overloaded intinsic for gcc
- limits the intrinsic obtained by entering the hook to always be vfadd, not
- vfadd_frm. Therefore, the correct hash value cannot be obtained through the
- parameter list and overload name, base or shape.
- +--------+---------------------------+-------------------+
- | index | name | kind |
- +--------+---------------------------+-------------------+
- | 124733 | __riscv_vfadd | Overloaded | <- Hook fun code
- +--------+---------------------------+-------------------+
- | 124735 | __riscv_vfadd_vv_f32m1 | Non-overloaded |
- +--------+---------------------------+-------------------+
- | 124737 | __riscv_vfadd | Placeholder |
- +--------+---------------------------+-------------------+
- | ... |
- +--------+---------------------------+-------------------+
- | ... |
- +--------+---------------------------+-------------------+
- | 125739 | __riscv_vfadd | Overloaded |
- +--------+---------------------------+-------------------+
- | 125741 | __riscv_vfadd_vv_f32m1_rm | Non-overloaded |
- +--------+---------------------------+-------------------+
- | 125743 | __riscv_vfadd | Placeholder |
- +--------+---------------------------+-------------------+
-
- Therefore, the hash value cannot be added with base or shape, and needs
- to be distinguished by whether the penultimate parameter is INTEGER_TYPE. */
- else if (has_vxrm_or_frm_p (instance, arglist) && (i == (len - 2)))
- argument_types.safe_push (unsigned_type_node);
- else
- argument_types.safe_push (TREE_TYPE (arglist[i]));
- }
+ argument_types.safe_push (TREE_TYPE (arglist[i]));
+
return overloaded_hash ();
}
@@ -4611,8 +4619,9 @@ resolve_overloaded_builtin (unsigned int code, vec<tree, va_gc> *arglist)
hashval_t hash = rfun->overloaded_hash (*arglist);
registered_function *rfn
= non_overloaded_function_table->find_with_hash (rfun, hash);
- gcc_assert (rfn);
- return rfn->decl;
+ if (rfn)
+ return rfn->decl;
+ return NULL_TREE;
}
function_instance
diff --git a/gcc/config/riscv/riscv-vector-builtins.h b/gcc/config/riscv/riscv-vector-builtins.h
index 54c8824..22fed60 100644
--- a/gcc/config/riscv/riscv-vector-builtins.h
+++ b/gcc/config/riscv/riscv-vector-builtins.h
@@ -123,6 +123,7 @@ enum required_ext
ZVKNHB_EXT, /* Crypto vector Zvknhb sub-ext */
ZVKSED_EXT, /* Crypto vector Zvksed sub-ext */
ZVKSH_EXT, /* Crypto vector Zvksh sub-ext */
+ XTHEADVECTOR_EXT, /* XTheadVector extension */
};
/* Enumerates the RVV operand types. */
@@ -252,6 +253,8 @@ struct function_group_info
return TARGET_ZVKSED;
case ZVKSH_EXT:
return TARGET_ZVKSH;
+ case XTHEADVECTOR_EXT:
+ return TARGET_XTHEADVECTOR;
default:
gcc_unreachable ();
}
diff --git a/gcc/config/riscv/riscv-vector-switch.def b/gcc/config/riscv/riscv-vector-switch.def
index 1ad26c2..452283b7 100644
--- a/gcc/config/riscv/riscv-vector-switch.def
+++ b/gcc/config/riscv/riscv-vector-switch.def
@@ -68,9 +68,9 @@ Encode the ratio of SEW/LMUL into the mask types.
#endif
/* Disable modes if TARGET_MIN_VLEN == 32. */
-ENTRY (RVVMF64BI, TARGET_MIN_VLEN > 32, LMUL_F8, 64)
-ENTRY (RVVMF32BI, true, LMUL_F4, 32)
-ENTRY (RVVMF16BI, true, LMUL_F2, 16)
+ENTRY (RVVMF64BI, TARGET_MIN_VLEN > 32, TARGET_XTHEADVECTOR ? LMUL_1 :LMUL_F8, 64)
+ENTRY (RVVMF32BI, true, TARGET_XTHEADVECTOR ? LMUL_1 :LMUL_F4, 32)
+ENTRY (RVVMF16BI, true, TARGET_XTHEADVECTOR ? LMUL_1 : LMUL_F2 , 16)
ENTRY (RVVMF8BI, true, LMUL_1, 8)
ENTRY (RVVMF4BI, true, LMUL_2, 4)
ENTRY (RVVMF2BI, true, LMUL_4, 2)
@@ -81,39 +81,39 @@ ENTRY (RVVM8QI, true, LMUL_8, 1)
ENTRY (RVVM4QI, true, LMUL_4, 2)
ENTRY (RVVM2QI, true, LMUL_2, 4)
ENTRY (RVVM1QI, true, LMUL_1, 8)
-ENTRY (RVVMF2QI, true, LMUL_F2, 16)
-ENTRY (RVVMF4QI, true, LMUL_F4, 32)
-ENTRY (RVVMF8QI, TARGET_MIN_VLEN > 32, LMUL_F8, 64)
+ENTRY (RVVMF2QI, !TARGET_XTHEADVECTOR, LMUL_F2, 16)
+ENTRY (RVVMF4QI, !TARGET_XTHEADVECTOR, LMUL_F4, 32)
+ENTRY (RVVMF8QI, TARGET_MIN_VLEN > 32 && !TARGET_XTHEADVECTOR, LMUL_F8, 64)
/* Disable modes if TARGET_MIN_VLEN == 32. */
ENTRY (RVVM8HI, true, LMUL_8, 2)
ENTRY (RVVM4HI, true, LMUL_4, 4)
ENTRY (RVVM2HI, true, LMUL_2, 8)
ENTRY (RVVM1HI, true, LMUL_1, 16)
-ENTRY (RVVMF2HI, true, LMUL_F2, 32)
-ENTRY (RVVMF4HI, TARGET_MIN_VLEN > 32, LMUL_F4, 64)
+ENTRY (RVVMF2HI, !TARGET_XTHEADVECTOR, LMUL_F2, 32)
+ENTRY (RVVMF4HI, TARGET_MIN_VLEN > 32 && !TARGET_XTHEADVECTOR, LMUL_F4, 64)
/* Disable modes if TARGET_MIN_VLEN == 32 or !TARGET_VECTOR_ELEN_FP_16. */
ENTRY (RVVM8HF, TARGET_VECTOR_ELEN_FP_16, LMUL_8, 2)
ENTRY (RVVM4HF, TARGET_VECTOR_ELEN_FP_16, LMUL_4, 4)
ENTRY (RVVM2HF, TARGET_VECTOR_ELEN_FP_16, LMUL_2, 8)
ENTRY (RVVM1HF, TARGET_VECTOR_ELEN_FP_16, LMUL_1, 16)
-ENTRY (RVVMF2HF, TARGET_VECTOR_ELEN_FP_16, LMUL_F2, 32)
-ENTRY (RVVMF4HF, TARGET_VECTOR_ELEN_FP_16 && TARGET_MIN_VLEN > 32, LMUL_F4, 64)
+ENTRY (RVVMF2HF, TARGET_VECTOR_ELEN_FP_16 && !TARGET_XTHEADVECTOR, LMUL_F2, 32)
+ENTRY (RVVMF4HF, TARGET_VECTOR_ELEN_FP_16 && TARGET_MIN_VLEN > 32 && !TARGET_XTHEADVECTOR, LMUL_F4, 64)
/* Disable modes if TARGET_MIN_VLEN == 32. */
ENTRY (RVVM8SI, true, LMUL_8, 4)
ENTRY (RVVM4SI, true, LMUL_4, 8)
ENTRY (RVVM2SI, true, LMUL_2, 16)
ENTRY (RVVM1SI, true, LMUL_1, 32)
-ENTRY (RVVMF2SI, TARGET_MIN_VLEN > 32, LMUL_F2, 64)
+ENTRY (RVVMF2SI, TARGET_MIN_VLEN > 32 && !TARGET_XTHEADVECTOR, LMUL_F2, 64)
/* Disable modes if TARGET_MIN_VLEN == 32 or !TARGET_VECTOR_ELEN_FP_32. */
ENTRY (RVVM8SF, TARGET_VECTOR_ELEN_FP_32, LMUL_8, 4)
ENTRY (RVVM4SF, TARGET_VECTOR_ELEN_FP_32, LMUL_4, 8)
ENTRY (RVVM2SF, TARGET_VECTOR_ELEN_FP_32, LMUL_2, 16)
ENTRY (RVVM1SF, TARGET_VECTOR_ELEN_FP_32, LMUL_1, 32)
-ENTRY (RVVMF2SF, TARGET_VECTOR_ELEN_FP_32 && TARGET_MIN_VLEN > 32, LMUL_F2, 64)
+ENTRY (RVVMF2SF, TARGET_VECTOR_ELEN_FP_32 && TARGET_MIN_VLEN > 32 && !TARGET_XTHEADVECTOR, LMUL_F2, 64)
/* Disable modes if !TARGET_VECTOR_ELEN_64. */
ENTRY (RVVM8DI, TARGET_VECTOR_ELEN_64, LMUL_8, 8)
@@ -140,127 +140,127 @@ ENTRY (RVVM1DF, TARGET_VECTOR_ELEN_FP_64, LMUL_1, 64)
#endif
TUPLE_ENTRY (RVVM1x8QI, true, RVVM1QI, 8, LMUL_1, 8)
-TUPLE_ENTRY (RVVMF2x8QI, true, RVVMF2QI, 8, LMUL_F2, 16)
-TUPLE_ENTRY (RVVMF4x8QI, true, RVVMF4QI, 8, LMUL_F4, 32)
-TUPLE_ENTRY (RVVMF8x8QI, TARGET_MIN_VLEN > 32, RVVMF8QI, 8, LMUL_F8, 64)
+TUPLE_ENTRY (RVVMF2x8QI, !TARGET_XTHEADVECTOR, RVVMF2QI, 8, LMUL_F2, 16)
+TUPLE_ENTRY (RVVMF4x8QI, !TARGET_XTHEADVECTOR, RVVMF4QI, 8, LMUL_F4, 32)
+TUPLE_ENTRY (RVVMF8x8QI, TARGET_MIN_VLEN > 32 && !TARGET_XTHEADVECTOR, RVVMF8QI, 8, LMUL_F8, 64)
TUPLE_ENTRY (RVVM1x7QI, true, RVVM1QI, 7, LMUL_1, 8)
-TUPLE_ENTRY (RVVMF2x7QI, true, RVVMF2QI, 7, LMUL_F2, 16)
-TUPLE_ENTRY (RVVMF4x7QI, true, RVVMF4QI, 7, LMUL_F4, 32)
-TUPLE_ENTRY (RVVMF8x7QI, TARGET_MIN_VLEN > 32, RVVMF8QI, 7, LMUL_F8, 64)
+TUPLE_ENTRY (RVVMF2x7QI, !TARGET_XTHEADVECTOR, RVVMF2QI, 7, LMUL_F2, 16)
+TUPLE_ENTRY (RVVMF4x7QI, !TARGET_XTHEADVECTOR, RVVMF4QI, 7, LMUL_F4, 32)
+TUPLE_ENTRY (RVVMF8x7QI, TARGET_MIN_VLEN > 32 && !TARGET_XTHEADVECTOR, RVVMF8QI, 7, LMUL_F8, 64)
TUPLE_ENTRY (RVVM1x6QI, true, RVVM1QI, 6, LMUL_1, 8)
-TUPLE_ENTRY (RVVMF2x6QI, true, RVVMF2QI, 6, LMUL_F2, 16)
-TUPLE_ENTRY (RVVMF4x6QI, true, RVVMF4QI, 6, LMUL_F4, 32)
-TUPLE_ENTRY (RVVMF8x6QI, TARGET_MIN_VLEN > 32, RVVMF8QI, 6, LMUL_F8, 64)
+TUPLE_ENTRY (RVVMF2x6QI, !TARGET_XTHEADVECTOR, RVVMF2QI, 6, LMUL_F2, 16)
+TUPLE_ENTRY (RVVMF4x6QI, !TARGET_XTHEADVECTOR, RVVMF4QI, 6, LMUL_F4, 32)
+TUPLE_ENTRY (RVVMF8x6QI, TARGET_MIN_VLEN > 32 && !TARGET_XTHEADVECTOR, RVVMF8QI, 6, LMUL_F8, 64)
TUPLE_ENTRY (RVVM1x5QI, true, RVVM1QI, 5, LMUL_1, 8)
-TUPLE_ENTRY (RVVMF2x5QI, true, RVVMF2QI, 5, LMUL_F2, 16)
-TUPLE_ENTRY (RVVMF4x5QI, true, RVVMF4QI, 5, LMUL_F4, 32)
-TUPLE_ENTRY (RVVMF8x5QI, TARGET_MIN_VLEN > 32, RVVMF8QI, 5, LMUL_F8, 64)
+TUPLE_ENTRY (RVVMF2x5QI, !TARGET_XTHEADVECTOR, RVVMF2QI, 5, LMUL_F2, 16)
+TUPLE_ENTRY (RVVMF4x5QI, !TARGET_XTHEADVECTOR, RVVMF4QI, 5, LMUL_F4, 32)
+TUPLE_ENTRY (RVVMF8x5QI, TARGET_MIN_VLEN > 32 && !TARGET_XTHEADVECTOR, RVVMF8QI, 5, LMUL_F8, 64)
TUPLE_ENTRY (RVVM2x4QI, true, RVVM2QI, 4, LMUL_2, 4)
TUPLE_ENTRY (RVVM1x4QI, true, RVVM1QI, 4, LMUL_1, 8)
-TUPLE_ENTRY (RVVMF2x4QI, true, RVVMF2QI, 4, LMUL_F2, 16)
-TUPLE_ENTRY (RVVMF4x4QI, true, RVVMF4QI, 4, LMUL_F4, 32)
-TUPLE_ENTRY (RVVMF8x4QI, TARGET_MIN_VLEN > 32, RVVMF8QI, 4, LMUL_F8, 64)
+TUPLE_ENTRY (RVVMF2x4QI, !TARGET_XTHEADVECTOR, RVVMF2QI, 4, LMUL_F2, 16)
+TUPLE_ENTRY (RVVMF4x4QI, !TARGET_XTHEADVECTOR, RVVMF4QI, 4, LMUL_F4, 32)
+TUPLE_ENTRY (RVVMF8x4QI, TARGET_MIN_VLEN > 32 && !TARGET_XTHEADVECTOR, RVVMF8QI, 4, LMUL_F8, 64)
TUPLE_ENTRY (RVVM2x3QI, true, RVVM2QI, 3, LMUL_2, 4)
TUPLE_ENTRY (RVVM1x3QI, true, RVVM1QI, 3, LMUL_1, 8)
-TUPLE_ENTRY (RVVMF2x3QI, true, RVVMF2QI, 3, LMUL_F2, 16)
-TUPLE_ENTRY (RVVMF4x3QI, true, RVVMF4QI, 3, LMUL_F4, 32)
-TUPLE_ENTRY (RVVMF8x3QI, TARGET_MIN_VLEN > 32, RVVMF8QI, 3, LMUL_F8, 64)
+TUPLE_ENTRY (RVVMF2x3QI, !TARGET_XTHEADVECTOR, RVVMF2QI, 3, LMUL_F2, 16)
+TUPLE_ENTRY (RVVMF4x3QI, !TARGET_XTHEADVECTOR, RVVMF4QI, 3, LMUL_F4, 32)
+TUPLE_ENTRY (RVVMF8x3QI, TARGET_MIN_VLEN > 32 && !TARGET_XTHEADVECTOR, RVVMF8QI, 3, LMUL_F8, 64)
TUPLE_ENTRY (RVVM4x2QI, true, RVVM4QI, 2, LMUL_4, 2)
TUPLE_ENTRY (RVVM2x2QI, true, RVVM2QI, 2, LMUL_2, 4)
TUPLE_ENTRY (RVVM1x2QI, true, RVVM1QI, 2, LMUL_1, 8)
-TUPLE_ENTRY (RVVMF2x2QI, true, RVVMF2QI, 2, LMUL_F2, 16)
-TUPLE_ENTRY (RVVMF4x2QI, true, RVVMF4QI, 2, LMUL_F4, 32)
-TUPLE_ENTRY (RVVMF8x2QI, TARGET_MIN_VLEN > 32, RVVMF8QI, 2, LMUL_F8, 64)
+TUPLE_ENTRY (RVVMF2x2QI, !TARGET_XTHEADVECTOR, RVVMF2QI, 2, LMUL_F2, 16)
+TUPLE_ENTRY (RVVMF4x2QI, !TARGET_XTHEADVECTOR, RVVMF4QI, 2, LMUL_F4, 32)
+TUPLE_ENTRY (RVVMF8x2QI, TARGET_MIN_VLEN > 32 && !TARGET_XTHEADVECTOR, RVVMF8QI, 2, LMUL_F8, 64)
TUPLE_ENTRY (RVVM1x8HI, true, RVVM1HI, 8, LMUL_1, 16)
-TUPLE_ENTRY (RVVMF2x8HI, true, RVVMF2HI, 8, LMUL_F2, 32)
-TUPLE_ENTRY (RVVMF4x8HI, TARGET_MIN_VLEN > 32, RVVMF4HI, 8, LMUL_F4, 64)
+TUPLE_ENTRY (RVVMF2x8HI, !TARGET_XTHEADVECTOR, RVVMF2HI, 8, LMUL_F2, 32)
+TUPLE_ENTRY (RVVMF4x8HI, TARGET_MIN_VLEN > 32 && !TARGET_XTHEADVECTOR, RVVMF4HI, 8, LMUL_F4, 64)
TUPLE_ENTRY (RVVM1x7HI, true, RVVM1HI, 7, LMUL_1, 16)
-TUPLE_ENTRY (RVVMF2x7HI, true, RVVMF2HI, 7, LMUL_F2, 32)
-TUPLE_ENTRY (RVVMF4x7HI, TARGET_MIN_VLEN > 32, RVVMF4HI, 7, LMUL_F4, 64)
+TUPLE_ENTRY (RVVMF2x7HI, !TARGET_XTHEADVECTOR, RVVMF2HI, 7, LMUL_F2, 32)
+TUPLE_ENTRY (RVVMF4x7HI, TARGET_MIN_VLEN > 32 && !TARGET_XTHEADVECTOR, RVVMF4HI, 7, LMUL_F4, 64)
TUPLE_ENTRY (RVVM1x6HI, true, RVVM1HI, 6, LMUL_1, 16)
-TUPLE_ENTRY (RVVMF2x6HI, true, RVVMF2HI, 6, LMUL_F2, 32)
-TUPLE_ENTRY (RVVMF4x6HI, TARGET_MIN_VLEN > 32, RVVMF4HI, 6, LMUL_F4, 64)
+TUPLE_ENTRY (RVVMF2x6HI, !TARGET_XTHEADVECTOR, RVVMF2HI, 6, LMUL_F2, 32)
+TUPLE_ENTRY (RVVMF4x6HI, TARGET_MIN_VLEN > 32 && !TARGET_XTHEADVECTOR, RVVMF4HI, 6, LMUL_F4, 64)
TUPLE_ENTRY (RVVM1x5HI, true, RVVM1HI, 5, LMUL_1, 16)
-TUPLE_ENTRY (RVVMF2x5HI, true, RVVMF2HI, 5, LMUL_F2, 32)
-TUPLE_ENTRY (RVVMF4x5HI, TARGET_MIN_VLEN > 32, RVVMF4HI, 5, LMUL_F4, 64)
+TUPLE_ENTRY (RVVMF2x5HI, !TARGET_XTHEADVECTOR, RVVMF2HI, 5, LMUL_F2, 32)
+TUPLE_ENTRY (RVVMF4x5HI, TARGET_MIN_VLEN > 32 && !TARGET_XTHEADVECTOR, RVVMF4HI, 5, LMUL_F4, 64)
TUPLE_ENTRY (RVVM2x4HI, true, RVVM2HI, 4, LMUL_2, 8)
TUPLE_ENTRY (RVVM1x4HI, true, RVVM1HI, 4, LMUL_1, 16)
-TUPLE_ENTRY (RVVMF2x4HI, true, RVVMF2HI, 4, LMUL_F2, 32)
-TUPLE_ENTRY (RVVMF4x4HI, TARGET_MIN_VLEN > 32, RVVMF4HI, 4, LMUL_F4, 64)
+TUPLE_ENTRY (RVVMF2x4HI, !TARGET_XTHEADVECTOR, RVVMF2HI, 4, LMUL_F2, 32)
+TUPLE_ENTRY (RVVMF4x4HI, TARGET_MIN_VLEN > 32 && !TARGET_XTHEADVECTOR, RVVMF4HI, 4, LMUL_F4, 64)
TUPLE_ENTRY (RVVM2x3HI, true, RVVM2HI, 3, LMUL_2, 8)
TUPLE_ENTRY (RVVM1x3HI, true, RVVM1HI, 3, LMUL_1, 16)
-TUPLE_ENTRY (RVVMF2x3HI, true, RVVMF2HI, 3, LMUL_F2, 32)
-TUPLE_ENTRY (RVVMF4x3HI, TARGET_MIN_VLEN > 32, RVVMF4HI, 3, LMUL_F4, 64)
+TUPLE_ENTRY (RVVMF2x3HI, !TARGET_XTHEADVECTOR, RVVMF2HI, 3, LMUL_F2, 32)
+TUPLE_ENTRY (RVVMF4x3HI, TARGET_MIN_VLEN > 32 && !TARGET_XTHEADVECTOR, RVVMF4HI, 3, LMUL_F4, 64)
TUPLE_ENTRY (RVVM4x2HI, true, RVVM4HI, 2, LMUL_4, 4)
TUPLE_ENTRY (RVVM2x2HI, true, RVVM2HI, 2, LMUL_2, 8)
TUPLE_ENTRY (RVVM1x2HI, true, RVVM1HI, 2, LMUL_1, 16)
-TUPLE_ENTRY (RVVMF2x2HI, true, RVVMF2HI, 2, LMUL_F2, 32)
-TUPLE_ENTRY (RVVMF4x2HI, TARGET_MIN_VLEN > 32, RVVMF4HI, 2, LMUL_F4, 64)
+TUPLE_ENTRY (RVVMF2x2HI, !TARGET_XTHEADVECTOR, RVVMF2HI, 2, LMUL_F2, 32)
+TUPLE_ENTRY (RVVMF4x2HI, TARGET_MIN_VLEN > 32 && !TARGET_XTHEADVECTOR, RVVMF4HI, 2, LMUL_F4, 64)
TUPLE_ENTRY (RVVM1x8HF, TARGET_VECTOR_ELEN_FP_16, RVVM1HF, 8, LMUL_1, 16)
-TUPLE_ENTRY (RVVMF2x8HF, TARGET_VECTOR_ELEN_FP_16, RVVMF2HF, 8, LMUL_F2, 32)
-TUPLE_ENTRY (RVVMF4x8HF, TARGET_VECTOR_ELEN_FP_16 && TARGET_MIN_VLEN > 32, RVVMF4HF, 8, LMUL_F4, 64)
+TUPLE_ENTRY (RVVMF2x8HF, TARGET_VECTOR_ELEN_FP_16 && !TARGET_XTHEADVECTOR, RVVMF2HF, 8, LMUL_F2, 32)
+TUPLE_ENTRY (RVVMF4x8HF, TARGET_VECTOR_ELEN_FP_16 && TARGET_MIN_VLEN > 32 && !TARGET_XTHEADVECTOR, RVVMF4HF, 8, LMUL_F4, 64)
TUPLE_ENTRY (RVVM1x7HF, TARGET_VECTOR_ELEN_FP_16, RVVM1HF, 7, LMUL_1, 16)
-TUPLE_ENTRY (RVVMF2x7HF, TARGET_VECTOR_ELEN_FP_16, RVVMF2HF, 7, LMUL_F2, 32)
-TUPLE_ENTRY (RVVMF4x7HF, TARGET_VECTOR_ELEN_FP_16 && TARGET_MIN_VLEN > 32, RVVMF4HF, 7, LMUL_F4, 64)
+TUPLE_ENTRY (RVVMF2x7HF, TARGET_VECTOR_ELEN_FP_16 && !TARGET_XTHEADVECTOR, RVVMF2HF, 7, LMUL_F2, 32)
+TUPLE_ENTRY (RVVMF4x7HF, TARGET_VECTOR_ELEN_FP_16 && TARGET_MIN_VLEN > 32 && !TARGET_XTHEADVECTOR, RVVMF4HF, 7, LMUL_F4, 64)
TUPLE_ENTRY (RVVM1x6HF, TARGET_VECTOR_ELEN_FP_16, RVVM1HF, 6, LMUL_1, 16)
-TUPLE_ENTRY (RVVMF2x6HF, TARGET_VECTOR_ELEN_FP_16, RVVMF2HF, 6, LMUL_F2, 32)
-TUPLE_ENTRY (RVVMF4x6HF, TARGET_VECTOR_ELEN_FP_16 && TARGET_MIN_VLEN > 32, RVVMF4HF, 6, LMUL_F4, 64)
+TUPLE_ENTRY (RVVMF2x6HF, TARGET_VECTOR_ELEN_FP_16 && !TARGET_XTHEADVECTOR, RVVMF2HF, 6, LMUL_F2, 32)
+TUPLE_ENTRY (RVVMF4x6HF, TARGET_VECTOR_ELEN_FP_16 && TARGET_MIN_VLEN > 32 && !TARGET_XTHEADVECTOR, RVVMF4HF, 6, LMUL_F4, 64)
TUPLE_ENTRY (RVVM1x5HF, TARGET_VECTOR_ELEN_FP_16, RVVM1HF, 5, LMUL_1, 16)
-TUPLE_ENTRY (RVVMF2x5HF, TARGET_VECTOR_ELEN_FP_16, RVVMF2HF, 5, LMUL_F2, 32)
-TUPLE_ENTRY (RVVMF4x5HF, TARGET_VECTOR_ELEN_FP_16 && TARGET_MIN_VLEN > 32, RVVMF4HF, 5, LMUL_F4, 64)
+TUPLE_ENTRY (RVVMF2x5HF, TARGET_VECTOR_ELEN_FP_16 && !TARGET_XTHEADVECTOR, RVVMF2HF, 5, LMUL_F2, 32)
+TUPLE_ENTRY (RVVMF4x5HF, TARGET_VECTOR_ELEN_FP_16 && TARGET_MIN_VLEN > 32 && !TARGET_XTHEADVECTOR, RVVMF4HF, 5, LMUL_F4, 64)
TUPLE_ENTRY (RVVM2x4HF, TARGET_VECTOR_ELEN_FP_16, RVVM2HF, 4, LMUL_2, 8)
TUPLE_ENTRY (RVVM1x4HF, TARGET_VECTOR_ELEN_FP_16, RVVM1HF, 4, LMUL_1, 16)
-TUPLE_ENTRY (RVVMF2x4HF, TARGET_VECTOR_ELEN_FP_16, RVVMF2HF, 4, LMUL_F2, 32)
-TUPLE_ENTRY (RVVMF4x4HF, TARGET_VECTOR_ELEN_FP_16 && TARGET_MIN_VLEN > 32, RVVMF4HF, 4, LMUL_F4, 64)
+TUPLE_ENTRY (RVVMF2x4HF, TARGET_VECTOR_ELEN_FP_16 && !TARGET_XTHEADVECTOR, RVVMF2HF, 4, LMUL_F2, 32)
+TUPLE_ENTRY (RVVMF4x4HF, TARGET_VECTOR_ELEN_FP_16 && TARGET_MIN_VLEN > 32 && !TARGET_XTHEADVECTOR, RVVMF4HF, 4, LMUL_F4, 64)
TUPLE_ENTRY (RVVM2x3HF, TARGET_VECTOR_ELEN_FP_16, RVVM2HF, 3, LMUL_2, 8)
TUPLE_ENTRY (RVVM1x3HF, TARGET_VECTOR_ELEN_FP_16, RVVM1HF, 3, LMUL_1, 16)
-TUPLE_ENTRY (RVVMF2x3HF, TARGET_VECTOR_ELEN_FP_16, RVVMF2HF, 3, LMUL_F2, 32)
-TUPLE_ENTRY (RVVMF4x3HF, TARGET_VECTOR_ELEN_FP_16 && TARGET_MIN_VLEN > 32, RVVMF4HF, 3, LMUL_F4, 64)
+TUPLE_ENTRY (RVVMF2x3HF, TARGET_VECTOR_ELEN_FP_16 && !TARGET_XTHEADVECTOR, RVVMF2HF, 3, LMUL_F2, 32)
+TUPLE_ENTRY (RVVMF4x3HF, TARGET_VECTOR_ELEN_FP_16 && TARGET_MIN_VLEN > 32 && !TARGET_XTHEADVECTOR, RVVMF4HF, 3, LMUL_F4, 64)
TUPLE_ENTRY (RVVM4x2HF, TARGET_VECTOR_ELEN_FP_16, RVVM4HF, 2, LMUL_4, 4)
TUPLE_ENTRY (RVVM2x2HF, TARGET_VECTOR_ELEN_FP_16, RVVM2HF, 2, LMUL_2, 8)
TUPLE_ENTRY (RVVM1x2HF, TARGET_VECTOR_ELEN_FP_16, RVVM1HF, 2, LMUL_1, 16)
-TUPLE_ENTRY (RVVMF2x2HF, TARGET_VECTOR_ELEN_FP_16, RVVMF2HF, 2, LMUL_F2, 32)
-TUPLE_ENTRY (RVVMF4x2HF, TARGET_VECTOR_ELEN_FP_16 && TARGET_MIN_VLEN > 32, RVVMF4HF, 2, LMUL_F4, 64)
+TUPLE_ENTRY (RVVMF2x2HF, TARGET_VECTOR_ELEN_FP_16 && !TARGET_XTHEADVECTOR, RVVMF2HF, 2, LMUL_F2, 32)
+TUPLE_ENTRY (RVVMF4x2HF, TARGET_VECTOR_ELEN_FP_16 && TARGET_MIN_VLEN > 32 && !TARGET_XTHEADVECTOR, RVVMF4HF, 2, LMUL_F4, 64)
TUPLE_ENTRY (RVVM1x8SI, true, RVVM1SI, 8, LMUL_1, 16)
-TUPLE_ENTRY (RVVMF2x8SI, TARGET_MIN_VLEN > 32, RVVMF2SI, 8, LMUL_F2, 32)
+TUPLE_ENTRY (RVVMF2x8SI, (TARGET_MIN_VLEN > 32) && !TARGET_XTHEADVECTOR, RVVMF2SI, 8, LMUL_F2, 32)
TUPLE_ENTRY (RVVM1x7SI, true, RVVM1SI, 7, LMUL_1, 16)
-TUPLE_ENTRY (RVVMF2x7SI, TARGET_MIN_VLEN > 32, RVVMF2SI, 7, LMUL_F2, 32)
+TUPLE_ENTRY (RVVMF2x7SI, (TARGET_MIN_VLEN > 32) && !TARGET_XTHEADVECTOR, RVVMF2SI, 7, LMUL_F2, 32)
TUPLE_ENTRY (RVVM1x6SI, true, RVVM1SI, 6, LMUL_1, 16)
-TUPLE_ENTRY (RVVMF2x6SI, TARGET_MIN_VLEN > 32, RVVMF2SI, 6, LMUL_F2, 32)
+TUPLE_ENTRY (RVVMF2x6SI, TARGET_MIN_VLEN > 32 && !TARGET_XTHEADVECTOR, RVVMF2SI, 6, LMUL_F2, 32)
TUPLE_ENTRY (RVVM1x5SI, true, RVVM1SI, 5, LMUL_1, 16)
-TUPLE_ENTRY (RVVMF2x5SI, TARGET_MIN_VLEN > 32, RVVMF2SI, 5, LMUL_F2, 32)
+TUPLE_ENTRY (RVVMF2x5SI, TARGET_MIN_VLEN > 32 && !TARGET_XTHEADVECTOR, RVVMF2SI, 5, LMUL_F2, 32)
TUPLE_ENTRY (RVVM2x4SI, true, RVVM2SI, 4, LMUL_2, 8)
TUPLE_ENTRY (RVVM1x4SI, true, RVVM1SI, 4, LMUL_1, 16)
-TUPLE_ENTRY (RVVMF2x4SI, TARGET_MIN_VLEN > 32, RVVMF2SI, 4, LMUL_F2, 32)
+TUPLE_ENTRY (RVVMF2x4SI, TARGET_MIN_VLEN > 32 && !TARGET_XTHEADVECTOR, RVVMF2SI, 4, LMUL_F2, 32)
TUPLE_ENTRY (RVVM2x3SI, true, RVVM2SI, 3, LMUL_2, 8)
TUPLE_ENTRY (RVVM1x3SI, true, RVVM1SI, 3, LMUL_1, 16)
-TUPLE_ENTRY (RVVMF2x3SI, TARGET_MIN_VLEN > 32, RVVMF2SI, 3, LMUL_F2, 32)
+TUPLE_ENTRY (RVVMF2x3SI, TARGET_MIN_VLEN > 32 && !TARGET_XTHEADVECTOR, RVVMF2SI, 3, LMUL_F2, 32)
TUPLE_ENTRY (RVVM4x2SI, true, RVVM4SI, 2, LMUL_4, 4)
TUPLE_ENTRY (RVVM2x2SI, true, RVVM2SI, 2, LMUL_2, 8)
TUPLE_ENTRY (RVVM1x2SI, true, RVVM1SI, 2, LMUL_1, 16)
-TUPLE_ENTRY (RVVMF2x2SI, TARGET_MIN_VLEN > 32, RVVMF2SI, 2, LMUL_F2, 32)
+TUPLE_ENTRY (RVVMF2x2SI, TARGET_MIN_VLEN > 32 && !TARGET_XTHEADVECTOR, RVVMF2SI, 2, LMUL_F2, 32)
TUPLE_ENTRY (RVVM1x8SF, TARGET_VECTOR_ELEN_FP_32, RVVM1SF, 8, LMUL_1, 16)
-TUPLE_ENTRY (RVVMF2x8SF, TARGET_VECTOR_ELEN_FP_32 && TARGET_MIN_VLEN > 32, RVVMF2SF, 8, LMUL_F2, 32)
+TUPLE_ENTRY (RVVMF2x8SF, TARGET_VECTOR_ELEN_FP_32 && TARGET_MIN_VLEN > 32 && !TARGET_XTHEADVECTOR, RVVMF2SF, 8, LMUL_F2, 32)
TUPLE_ENTRY (RVVM1x7SF, TARGET_VECTOR_ELEN_FP_32, RVVM1SF, 7, LMUL_1, 16)
-TUPLE_ENTRY (RVVMF2x7SF, TARGET_VECTOR_ELEN_FP_32 && TARGET_MIN_VLEN > 32, RVVMF2SF, 7, LMUL_F2, 32)
+TUPLE_ENTRY (RVVMF2x7SF, TARGET_VECTOR_ELEN_FP_32 && TARGET_MIN_VLEN > 32 && !TARGET_XTHEADVECTOR, RVVMF2SF, 7, LMUL_F2, 32)
TUPLE_ENTRY (RVVM1x6SF, TARGET_VECTOR_ELEN_FP_32, RVVM1SF, 6, LMUL_1, 16)
-TUPLE_ENTRY (RVVMF2x6SF, TARGET_VECTOR_ELEN_FP_32 && TARGET_MIN_VLEN > 32, RVVMF2SF, 6, LMUL_F2, 32)
+TUPLE_ENTRY (RVVMF2x6SF, TARGET_VECTOR_ELEN_FP_32 && TARGET_MIN_VLEN > 32 && !TARGET_XTHEADVECTOR, RVVMF2SF, 6, LMUL_F2, 32)
TUPLE_ENTRY (RVVM1x5SF, TARGET_VECTOR_ELEN_FP_32, RVVM1SF, 5, LMUL_1, 16)
-TUPLE_ENTRY (RVVMF2x5SF, TARGET_VECTOR_ELEN_FP_32 && TARGET_MIN_VLEN > 32, RVVMF2SF, 5, LMUL_F2, 32)
+TUPLE_ENTRY (RVVMF2x5SF, TARGET_VECTOR_ELEN_FP_32 && TARGET_MIN_VLEN > 32 && !TARGET_XTHEADVECTOR, RVVMF2SF, 5, LMUL_F2, 32)
TUPLE_ENTRY (RVVM2x4SF, TARGET_VECTOR_ELEN_FP_32, RVVM2SF, 4, LMUL_2, 8)
TUPLE_ENTRY (RVVM1x4SF, TARGET_VECTOR_ELEN_FP_32, RVVM1SF, 4, LMUL_1, 16)
-TUPLE_ENTRY (RVVMF2x4SF, TARGET_VECTOR_ELEN_FP_32 && TARGET_MIN_VLEN > 32, RVVMF2SF, 4, LMUL_F2, 32)
+TUPLE_ENTRY (RVVMF2x4SF, TARGET_VECTOR_ELEN_FP_32 && TARGET_MIN_VLEN > 32 && !TARGET_XTHEADVECTOR, RVVMF2SF, 4, LMUL_F2, 32)
TUPLE_ENTRY (RVVM2x3SF, TARGET_VECTOR_ELEN_FP_32, RVVM2SF, 3, LMUL_2, 8)
TUPLE_ENTRY (RVVM1x3SF, TARGET_VECTOR_ELEN_FP_32, RVVM1SF, 3, LMUL_1, 16)
-TUPLE_ENTRY (RVVMF2x3SF, TARGET_VECTOR_ELEN_FP_32 && TARGET_MIN_VLEN > 32, RVVMF2SF, 3, LMUL_F2, 32)
+TUPLE_ENTRY (RVVMF2x3SF, TARGET_VECTOR_ELEN_FP_32 && TARGET_MIN_VLEN > 32 && !TARGET_XTHEADVECTOR, RVVMF2SF, 3, LMUL_F2, 32)
TUPLE_ENTRY (RVVM4x2SF, TARGET_VECTOR_ELEN_FP_32, RVVM4SF, 2, LMUL_4, 4)
TUPLE_ENTRY (RVVM2x2SF, TARGET_VECTOR_ELEN_FP_32, RVVM2SF, 2, LMUL_2, 8)
TUPLE_ENTRY (RVVM1x2SF, TARGET_VECTOR_ELEN_FP_32, RVVM1SF, 2, LMUL_1, 16)
-TUPLE_ENTRY (RVVMF2x2SF, TARGET_VECTOR_ELEN_FP_32 && TARGET_MIN_VLEN > 32, RVVMF2SF, 2, LMUL_F2, 32)
+TUPLE_ENTRY (RVVMF2x2SF, TARGET_VECTOR_ELEN_FP_32 && TARGET_MIN_VLEN > 32 && !TARGET_XTHEADVECTOR, RVVMF2SF, 2, LMUL_F2, 32)
TUPLE_ENTRY (RVVM1x8DI, TARGET_VECTOR_ELEN_64, RVVM1DI, 8, LMUL_1, 16)
TUPLE_ENTRY (RVVM1x7DI, TARGET_VECTOR_ELEN_64, RVVM1DI, 7, LMUL_1, 16)
diff --git a/gcc/config/riscv/riscv-vsetvl.cc b/gcc/config/riscv/riscv-vsetvl.cc
index 2067073..d7b40a5 100644
--- a/gcc/config/riscv/riscv-vsetvl.cc
+++ b/gcc/config/riscv/riscv-vsetvl.cc
@@ -617,22 +617,6 @@ same_equiv_note_p (set_info *set1, set_info *set2)
return source_equal_p (insn1, insn2);
}
-static unsigned
-get_expr_id (unsigned bb_index, unsigned regno, unsigned num_bbs)
-{
- return regno * num_bbs + bb_index;
-}
-static unsigned
-get_regno (unsigned expr_id, unsigned num_bb)
-{
- return expr_id / num_bb;
-}
-static unsigned
-get_bb_index (unsigned expr_id, unsigned num_bb)
-{
- return expr_id % num_bb;
-}
-
/* Return true if the SET result is not used by any instructions. */
static bool
has_no_uses (basic_block cfg_bb, rtx_insn *rinsn, int regno)
@@ -670,6 +654,31 @@ invalid_opt_bb_p (basic_block cfg_bb)
return false;
}
+/* Get all predecessors of BB. */
+static hash_set<basic_block>
+get_all_predecessors (basic_block bb)
+{
+ hash_set<basic_block> blocks;
+ auto_vec<basic_block> work_list;
+ hash_set<basic_block> visited_list;
+ work_list.safe_push (bb);
+
+ while (!work_list.is_empty ())
+ {
+ basic_block new_bb = work_list.pop ();
+ visited_list.add (new_bb);
+ edge e;
+ edge_iterator ei;
+ FOR_EACH_EDGE (e, ei, new_bb->preds)
+ {
+ if (!visited_list.contains (e->src))
+ work_list.safe_push (e->src);
+ blocks.add (e->src);
+ }
+ }
+ return blocks;
+}
+
/* This flags indicates the minimum demand of the vl and vtype values by the
RVV instruction. For example, DEMAND_RATIO_P indicates that this RVV
instruction only needs the SEW/LMUL ratio to remain the same, and does not
@@ -1272,9 +1281,7 @@ public:
vsetvl_info global_info;
bb_info *bb;
- bool full_available;
-
- vsetvl_block_info () : bb (nullptr), full_available (false)
+ vsetvl_block_info () : bb (nullptr)
{
local_infos.safe_grow_cleared (0);
global_info.set_empty ();
@@ -1337,9 +1344,6 @@ public:
class demand_system
{
private:
- sbitmap *m_avl_def_in;
- sbitmap *m_avl_def_out;
-
/* predictors. */
inline bool always_true (const vsetvl_info &prev ATTRIBUTE_UNUSED,
@@ -1743,14 +1747,6 @@ private:
}
public:
- demand_system () : m_avl_def_in (nullptr), m_avl_def_out (nullptr) {}
-
- void set_avl_in_out_data (sbitmap *m_avl_def_in, sbitmap *m_avl_def_out)
- {
- m_avl_def_in = m_avl_def_in;
- m_avl_def_out = m_avl_def_out;
- }
-
/* Can we move vsetvl info between prev_insn and next_insn safe? */
bool avl_vl_unmodified_between_p (insn_info *prev_insn, insn_info *next_insn,
const vsetvl_info &info,
@@ -1778,32 +1774,66 @@ public:
}
else
{
+ basic_block prev_cfg_bb = prev_insn->bb ()->cfg_bb ();
if (!ignore_vl && info.has_vl ())
{
- bitmap live_out = df_get_live_out (prev_insn->bb ()->cfg_bb ());
+ bitmap live_out = df_get_live_out (prev_cfg_bb);
if (bitmap_bit_p (live_out, REGNO (info.get_vl ())))
return false;
}
- if (info.has_nonvlmax_reg_avl () && m_avl_def_in && m_avl_def_out)
+ /* Find set_info at location of PREV_INSN and NEXT_INSN, Return
+ false if those 2 set_info are different.
+
+ PREV_INSN --- multiple nested blocks --- NEXT_INSN.
+
+ Return false if there is any modifications of AVL inside those
+ multiple nested blocks. */
+ if (info.has_nonvlmax_reg_avl ())
{
- bool has_avl_out = false;
- unsigned regno = REGNO (info.get_avl ());
- unsigned expr_id;
- sbitmap_iterator sbi;
- EXECUTE_IF_SET_IN_BITMAP (m_avl_def_out[prev_insn->bb ()->index ()],
- 0, expr_id, sbi)
+ resource_info resource = full_register (REGNO (info.get_avl ()));
+ def_lookup dl1 = crtl->ssa->find_def (resource, prev_insn);
+ def_lookup dl2 = crtl->ssa->find_def (resource, next_insn);
+ if (dl2.matching_set ())
+ return false;
+
+ auto is_phi_or_real
+ = [&] (insn_info *h) { return h->is_real () || h->is_phi (); };
+
+ def_info *def1 = dl1.matching_set_or_last_def_of_prev_group ();
+ def_info *def2 = dl2.prev_def (next_insn);
+ set_info *set1 = safe_dyn_cast<set_info *> (def1);
+ set_info *set2 = safe_dyn_cast<set_info *> (def2);
+ if (!set1 || !set2)
+ return false;
+
+ auto is_same_ultimate_def = [&] (set_info *s1, set_info *s2) {
+ return s1->insn ()->is_phi () && s2->insn ()->is_phi ()
+ && look_through_degenerate_phi (s1)
+ == look_through_degenerate_phi (s2);
+ };
+
+ if (set1 != set2 && !is_same_ultimate_def (set1, set2))
{
- if (get_regno (expr_id, last_basic_block_for_fn (cfun))
- != regno)
- continue;
- has_avl_out = true;
- if (!bitmap_bit_p (m_avl_def_in[next_insn->bb ()->index ()],
- expr_id))
+ if (!is_phi_or_real (set1->insn ())
+ || !is_phi_or_real (set2->insn ()))
return false;
+
+ if (set1->insn ()->is_real () && set2->insn ()->is_phi ())
+ {
+ hash_set<set_info *> sets
+ = get_all_sets (set2, true, false, true);
+ if (!sets.contains (set1))
+ return false;
+ }
+ else
+ {
+ insn_info *def_insn1 = extract_single_source (set1);
+ insn_info *def_insn2 = extract_single_source (set2);
+ if (!def_insn1 || !def_insn2 || def_insn1 != def_insn2)
+ return false;
+ }
}
- if (!has_avl_out)
- return false;
}
for (insn_info *i = next_insn; i != next_insn->bb ()->head_insn ();
@@ -2043,9 +2073,6 @@ private:
auto_vec<vsetvl_block_info> m_vector_block_infos;
/* data for avl reaching defintion. */
- sbitmap m_avl_regs;
- sbitmap *m_avl_def_in;
- sbitmap *m_avl_def_out;
sbitmap *m_reg_def_loc;
/* data for vsetvl info reaching defintion. */
@@ -2292,8 +2319,7 @@ private:
public:
pre_vsetvl ()
- : m_avl_def_in (nullptr), m_avl_def_out (nullptr),
- m_vsetvl_def_in (nullptr), m_vsetvl_def_out (nullptr), m_avloc (nullptr),
+ : m_vsetvl_def_in (nullptr), m_vsetvl_def_out (nullptr), m_avloc (nullptr),
m_avin (nullptr), m_avout (nullptr), m_kill (nullptr), m_antloc (nullptr),
m_transp (nullptr), m_insert (nullptr), m_del (nullptr), m_edges (nullptr)
{
@@ -2318,16 +2344,9 @@ public:
delete crtl->ssa;
crtl->ssa = nullptr;
- if (m_avl_regs)
- sbitmap_free (m_avl_regs);
if (m_reg_def_loc)
sbitmap_vector_free (m_reg_def_loc);
- if (m_avl_def_in)
- sbitmap_vector_free (m_avl_def_in);
- if (m_avl_def_out)
- sbitmap_vector_free (m_avl_def_out);
-
if (m_vsetvl_def_in)
sbitmap_vector_free (m_vsetvl_def_in);
if (m_vsetvl_def_out)
@@ -2354,7 +2373,6 @@ public:
free_edge_list (m_edges);
}
- void compute_avl_def_data ();
void compute_vsetvl_def_data ();
void compute_lcm_local_properties ();
@@ -2394,114 +2412,6 @@ public:
};
void
-pre_vsetvl::compute_avl_def_data ()
-{
- if (bitmap_empty_p (m_avl_regs))
- return;
-
- unsigned num_regs = GP_REG_LAST + 1;
- unsigned num_bbs = last_basic_block_for_fn (cfun);
-
- sbitmap *avl_def_loc_temp = sbitmap_vector_alloc (num_bbs, num_regs);
- for (const bb_info *bb : crtl->ssa->bbs ())
- {
- bitmap_and (avl_def_loc_temp[bb->index ()], m_avl_regs,
- m_reg_def_loc[bb->index ()]);
-
- vsetvl_block_info &block_info = get_block_info (bb);
- if (block_info.has_info ())
- {
- vsetvl_info &footer_info = block_info.get_exit_info ();
- gcc_assert (footer_info.valid_p ());
- if (footer_info.has_vl ())
- bitmap_set_bit (avl_def_loc_temp[bb->index ()],
- REGNO (footer_info.get_vl ()));
- }
- }
-
- if (m_avl_def_in)
- sbitmap_vector_free (m_avl_def_in);
- if (m_avl_def_out)
- sbitmap_vector_free (m_avl_def_out);
-
- unsigned num_exprs = num_bbs * num_regs;
- sbitmap *avl_def_loc = sbitmap_vector_alloc (num_bbs, num_exprs);
- sbitmap *m_kill = sbitmap_vector_alloc (num_bbs, num_exprs);
- m_avl_def_in = sbitmap_vector_alloc (num_bbs, num_exprs);
- m_avl_def_out = sbitmap_vector_alloc (num_bbs, num_exprs);
-
- bitmap_vector_clear (avl_def_loc, num_bbs);
- bitmap_vector_clear (m_kill, num_bbs);
- bitmap_vector_clear (m_avl_def_out, num_bbs);
-
- unsigned regno;
- sbitmap_iterator sbi;
- for (const bb_info *bb : crtl->ssa->bbs ())
- EXECUTE_IF_SET_IN_BITMAP (avl_def_loc_temp[bb->index ()], 0, regno, sbi)
- {
- bitmap_set_bit (avl_def_loc[bb->index ()],
- get_expr_id (bb->index (), regno, num_bbs));
- bitmap_set_range (m_kill[bb->index ()], regno * num_bbs, num_bbs);
- }
-
- basic_block entry = ENTRY_BLOCK_PTR_FOR_FN (cfun);
- EXECUTE_IF_SET_IN_BITMAP (m_avl_regs, 0, regno, sbi)
- bitmap_set_bit (m_avl_def_out[entry->index],
- get_expr_id (entry->index, regno, num_bbs));
-
- compute_reaching_defintion (avl_def_loc, m_kill, m_avl_def_in, m_avl_def_out);
-
- if (dump_file && (dump_flags & TDF_DETAILS))
- {
- fprintf (dump_file,
- " Compute avl reaching defition data (num_bbs %d, num_regs "
- "%d):\n\n",
- num_bbs, num_regs);
- fprintf (dump_file, " avl_regs: ");
- dump_bitmap_file (dump_file, m_avl_regs);
- fprintf (dump_file, "\n bitmap data:\n");
- for (const bb_info *bb : crtl->ssa->bbs ())
- {
- unsigned int i = bb->index ();
- fprintf (dump_file, " BB %u:\n", i);
- fprintf (dump_file, " avl_def_loc:");
- unsigned expr_id;
- sbitmap_iterator sbi;
- EXECUTE_IF_SET_IN_BITMAP (avl_def_loc[i], 0, expr_id, sbi)
- {
- fprintf (dump_file, " (r%u,bb%u)", get_regno (expr_id, num_bbs),
- get_bb_index (expr_id, num_bbs));
- }
- fprintf (dump_file, "\n kill:");
- EXECUTE_IF_SET_IN_BITMAP (m_kill[i], 0, expr_id, sbi)
- {
- fprintf (dump_file, " (r%u,bb%u)", get_regno (expr_id, num_bbs),
- get_bb_index (expr_id, num_bbs));
- }
- fprintf (dump_file, "\n avl_def_in:");
- EXECUTE_IF_SET_IN_BITMAP (m_avl_def_in[i], 0, expr_id, sbi)
- {
- fprintf (dump_file, " (r%u,bb%u)", get_regno (expr_id, num_bbs),
- get_bb_index (expr_id, num_bbs));
- }
- fprintf (dump_file, "\n avl_def_out:");
- EXECUTE_IF_SET_IN_BITMAP (m_avl_def_out[i], 0, expr_id, sbi)
- {
- fprintf (dump_file, " (r%u,bb%u)", get_regno (expr_id, num_bbs),
- get_bb_index (expr_id, num_bbs));
- }
- fprintf (dump_file, "\n");
- }
- }
-
- sbitmap_vector_free (avl_def_loc);
- sbitmap_vector_free (m_kill);
- sbitmap_vector_free (avl_def_loc_temp);
-
- m_dem.set_avl_in_out_data (m_avl_def_in, m_avl_def_out);
-}
-
-void
pre_vsetvl::compute_vsetvl_def_data ()
{
m_vsetvl_def_exprs.truncate (0);
@@ -2602,34 +2512,6 @@ pre_vsetvl::compute_vsetvl_def_data ()
}
}
- for (const bb_info *bb : crtl->ssa->bbs ())
- {
- vsetvl_block_info &block_info = get_block_info (bb);
- if (block_info.empty_p ())
- continue;
- vsetvl_info &curr_info = block_info.get_entry_info ();
- if (!curr_info.valid_p ())
- continue;
-
- unsigned int expr_index;
- sbitmap_iterator sbi;
- gcc_assert (
- !bitmap_empty_p (m_vsetvl_def_in[curr_info.get_bb ()->index ()]));
- bool full_available = true;
- EXECUTE_IF_SET_IN_BITMAP (m_vsetvl_def_in[bb->index ()], 0, expr_index,
- sbi)
- {
- vsetvl_info &prev_info = *m_vsetvl_def_exprs[expr_index];
- if (!prev_info.valid_p ()
- || !m_dem.available_p (prev_info, curr_info))
- {
- full_available = false;
- break;
- }
- }
- block_info.full_available = full_available;
- }
-
sbitmap_vector_free (def_loc);
sbitmap_vector_free (m_kill);
}
@@ -2661,8 +2543,10 @@ pre_vsetvl::compute_lcm_local_properties ()
vsetvl_info &header_info = block_info.get_entry_info ();
vsetvl_info &footer_info = block_info.get_exit_info ();
gcc_assert (footer_info.valid_p () || footer_info.unknown_p ());
- add_expr (m_exprs, header_info);
- add_expr (m_exprs, footer_info);
+ if (header_info.valid_p ())
+ add_expr (m_exprs, header_info);
+ if (footer_info.valid_p ())
+ add_expr (m_exprs, footer_info);
}
int num_exprs = m_exprs.length ();
@@ -2820,18 +2704,17 @@ pre_vsetvl::compute_lcm_local_properties ()
for (const bb_info *bb : crtl->ssa->bbs ())
{
unsigned bb_index = bb->index ();
- bitmap_ior (m_kill[bb_index], m_transp[bb_index], m_avloc[bb_index]);
- bitmap_not (m_kill[bb_index], m_kill[bb_index]);
- }
-
- for (const bb_info *bb : crtl->ssa->bbs ())
- {
- unsigned bb_index = bb->index ();
if (invalid_opt_bb_p (bb->cfg_bb ()))
{
bitmap_clear (m_antloc[bb_index]);
bitmap_clear (m_transp[bb_index]);
}
+ /* Compute ae_kill for each basic block using:
+
+ ~(TRANSP | COMP)
+ */
+ bitmap_ior (m_kill[bb_index], m_transp[bb_index], m_avloc[bb_index]);
+ bitmap_not (m_kill[bb_index], m_kill[bb_index]);
}
}
@@ -2957,29 +2840,12 @@ pre_vsetvl::fuse_local_vsetvl_info ()
if (prev_info.valid_p () || prev_info.unknown_p ())
block_info.local_infos.safe_push (prev_info);
}
-
- m_avl_regs = sbitmap_alloc (GP_REG_LAST + 1);
- bitmap_clear (m_avl_regs);
- for (const bb_info *bb : crtl->ssa->bbs ())
- {
- vsetvl_block_info &block_info = get_block_info (bb);
- if (block_info.empty_p ())
- continue;
-
- vsetvl_info &header_info = block_info.get_entry_info ();
- if (header_info.valid_p () && header_info.has_nonvlmax_reg_avl ())
- {
- gcc_assert (GP_REG_P (REGNO (header_info.get_avl ())));
- bitmap_set_bit (m_avl_regs, REGNO (header_info.get_avl ()));
- }
- }
}
bool
pre_vsetvl::earliest_fuse_vsetvl_info (int iter)
{
- compute_avl_def_data ();
compute_vsetvl_def_data ();
compute_lcm_local_properties ();
@@ -3064,28 +2930,19 @@ pre_vsetvl::earliest_fuse_vsetvl_info (int iter)
EXECUTE_IF_SET_IN_BITMAP (e, 0, expr_index, sbi)
{
vsetvl_info &curr_info = *m_exprs[expr_index];
- if (!curr_info.valid_p ())
- continue;
-
edge eg = INDEX_EDGE (m_edges, ed);
- if (eg->probability == profile_probability::never ())
- continue;
- if (eg->src == ENTRY_BLOCK_PTR_FOR_FN (cfun)
- || eg->dest == EXIT_BLOCK_PTR_FOR_FN (cfun))
- continue;
-
- /* When multiple set bits in earliest edge, such edge may
- have infinite loop in preds or succs or multiple conflict
- vsetvl expression which make such edge is unrelated. We
- don't perform fusion for such situation. */
- if (bitmap_count_bits (e) != 1)
- continue;
-
vsetvl_block_info &src_block_info = get_block_info (eg->src);
vsetvl_block_info &dest_block_info = get_block_info (eg->dest);
- if (src_block_info.probability
- == profile_probability::uninitialized ())
+ if (!curr_info.valid_p ()
+ || eg->probability == profile_probability::never ()
+ || src_block_info.probability
+ == profile_probability::uninitialized ()
+ /* When multiple set bits in earliest edge, such edge may
+ have infinite loop in preds or succs or multiple conflict
+ vsetvl expression which make such edge is unrelated. We
+ don't perform fusion for such situation. */
+ || bitmap_count_bits (e) != 1)
continue;
if (src_block_info.empty_p ())
@@ -3192,29 +3049,27 @@ pre_vsetvl::earliest_fuse_vsetvl_info (int iter)
{
vsetvl_info &prev_info = src_block_info.get_exit_info ();
if (!prev_info.valid_p ()
- || m_dem.available_p (prev_info, curr_info))
+ || m_dem.available_p (prev_info, curr_info)
+ || !m_dem.compatible_p (prev_info, curr_info))
continue;
- if (m_dem.compatible_p (prev_info, curr_info))
+ if (dump_file && (dump_flags & TDF_DETAILS))
{
- if (dump_file && (dump_flags & TDF_DETAILS))
- {
- fprintf (dump_file, " Fuse curr info since prev info "
- "compatible with it:\n");
- fprintf (dump_file, " prev_info: ");
- prev_info.dump (dump_file, " ");
- fprintf (dump_file, " curr_info: ");
- curr_info.dump (dump_file, " ");
- }
- m_dem.merge (prev_info, curr_info);
- if (dump_file && (dump_flags & TDF_DETAILS))
- {
- fprintf (dump_file, " prev_info after fused: ");
- prev_info.dump (dump_file, " ");
- fprintf (dump_file, "\n");
- }
- changed = true;
+ fprintf (dump_file, " Fuse curr info since prev info "
+ "compatible with it:\n");
+ fprintf (dump_file, " prev_info: ");
+ prev_info.dump (dump_file, " ");
+ fprintf (dump_file, " curr_info: ");
+ curr_info.dump (dump_file, " ");
}
+ m_dem.merge (prev_info, curr_info);
+ if (dump_file && (dump_flags & TDF_DETAILS))
+ {
+ fprintf (dump_file, " prev_info after fused: ");
+ prev_info.dump (dump_file, " ");
+ fprintf (dump_file, "\n");
+ }
+ changed = true;
}
}
}
@@ -3235,7 +3090,6 @@ pre_vsetvl::earliest_fuse_vsetvl_info (int iter)
void
pre_vsetvl::pre_global_vsetvl_info ()
{
- compute_avl_def_data ();
compute_vsetvl_def_data ();
compute_lcm_local_properties ();
@@ -3303,17 +3157,53 @@ pre_vsetvl::pre_global_vsetvl_info ()
const vsetvl_block_info &block_info = get_block_info (info.get_bb ());
gcc_assert (block_info.get_entry_info () == info);
info.set_delete ();
+ if (dump_file && (dump_flags & TDF_DETAILS))
+ {
+ fprintf (dump_file,
+ "\nLCM deleting vsetvl of block %d, it has predecessors: \n",
+ bb->index ());
+ hash_set<basic_block> all_preds
+ = get_all_predecessors (bb->cfg_bb ());
+ int i = 0;
+ for (const auto pred : all_preds)
+ {
+ fprintf (dump_file, "%d ", pred->index);
+ i++;
+ if (i % 32 == 0)
+ fprintf (dump_file, "\n");
+ }
+ fprintf (dump_file, "\n");
+ }
}
/* Remove vsetvl infos if all precessors are available to the block. */
for (const bb_info *bb : crtl->ssa->bbs ())
{
vsetvl_block_info &block_info = get_block_info (bb);
- if (block_info.empty_p () || !block_info.full_available)
+ if (block_info.empty_p ())
+ continue;
+ vsetvl_info &curr_info = block_info.get_entry_info ();
+ if (!curr_info.valid_p ())
continue;
- vsetvl_info &info = block_info.get_entry_info ();
- info.set_delete ();
+ unsigned int expr_index;
+ sbitmap_iterator sbi;
+ gcc_assert (
+ !bitmap_empty_p (m_vsetvl_def_in[curr_info.get_bb ()->index ()]));
+ bool full_available = true;
+ EXECUTE_IF_SET_IN_BITMAP (m_vsetvl_def_in[bb->index ()], 0, expr_index,
+ sbi)
+ {
+ vsetvl_info &prev_info = *m_vsetvl_def_exprs[expr_index];
+ if (!prev_info.valid_p ()
+ || !m_dem.available_p (prev_info, curr_info))
+ {
+ full_available = false;
+ break;
+ }
+ }
+ if (full_available)
+ curr_info.set_delete ();
}
for (const bb_info *bb : crtl->ssa->bbs ())
@@ -3443,15 +3333,11 @@ pre_vsetvl::emit_vsetvl ()
{
edge eg = INDEX_EDGE (m_edges, ed);
sbitmap i = m_insert[ed];
- if (bitmap_count_bits (i) < 1)
- continue;
-
- if (bitmap_count_bits (i) > 1)
+ if (bitmap_count_bits (i) != 1)
/* For code with infinite loop (e.g. pr61634.c), The data flow is
completely wrong. */
continue;
- gcc_assert (bitmap_count_bits (i) == 1);
unsigned expr_index = bitmap_first_set_bit (i);
const vsetvl_info &info = *m_exprs[expr_index];
gcc_assert (info.valid_p ());
@@ -3556,7 +3442,7 @@ const pass_data pass_data_vsetvl = {
RTL_PASS, /* type */
"vsetvl", /* name */
OPTGROUP_NONE, /* optinfo_flags */
- TV_NONE, /* tv_id */
+ TV_MACH_DEP, /* tv_id */
0, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
@@ -3626,16 +3512,18 @@ pass_vsetvl::lazy_vsetvl ()
/* Phase 2: Fuse header and footer vsetvl infos between basic blocks. */
if (dump_file)
fprintf (dump_file, "\nPhase 2: Lift up vsetvl info.\n\n");
- bool changed;
- int fused_count = 0;
- do
+ if (vsetvl_strategy != VSETVL_OPT_NO_FUSION)
{
- if (dump_file)
- fprintf (dump_file, " Try lift up %d.\n\n", fused_count);
- changed = pre.earliest_fuse_vsetvl_info (fused_count);
- fused_count += 1;
- } while (changed);
-
+ bool changed = true;
+ int fused_count = 0;
+ do
+ {
+ if (dump_file)
+ fprintf (dump_file, " Try lift up %d.\n\n", fused_count);
+ changed = pre.earliest_fuse_vsetvl_info (fused_count);
+ fused_count += 1;
+ } while (changed);
+ }
if (dump_file && (dump_flags & TDF_DETAILS))
pre.dump (dump_file, "phase 2");
@@ -3676,7 +3564,7 @@ pass_vsetvl::execute (function *)
if (!has_vector_insn (cfun))
return 0;
- if (!optimize || vsetvl_strategy & VSETVL_SIMPLE)
+ if (!optimize || vsetvl_strategy == VSETVL_SIMPLE)
simple_vsetvl ();
else
lazy_vsetvl ();
diff --git a/gcc/config/riscv/riscv.cc b/gcc/config/riscv/riscv.cc
index 41626fa..7b6111a 100644
--- a/gcc/config/riscv/riscv.cc
+++ b/gcc/config/riscv/riscv.cc
@@ -1426,6 +1426,9 @@ riscv_v_adjust_bytesize (machine_mode mode, int scale)
{
if (riscv_v_ext_vector_mode_p (mode))
{
+ if (TARGET_XTHEADVECTOR)
+ return BYTES_PER_RISCV_VECTOR;
+
poly_int64 nunits = GET_MODE_NUNITS (mode);
poly_int64 mode_size = GET_MODE_SIZE (mode);
@@ -4870,11 +4873,7 @@ riscv_pass_fpr_pair (machine_mode mode, unsigned regno1,
For a library call, FNTYPE is 0. */
void
-riscv_init_cumulative_args (CUMULATIVE_ARGS *cum,
- tree fntype ATTRIBUTE_UNUSED,
- rtx libname ATTRIBUTE_UNUSED,
- tree fndecl,
- int caller ATTRIBUTE_UNUSED)
+riscv_init_cumulative_args (CUMULATIVE_ARGS *cum, tree fntype, rtx, tree, int)
{
memset (cum, 0, sizeof (*cum));
@@ -5000,7 +4999,7 @@ riscv_get_arg_info (struct riscv_arg_info *info, const CUMULATIVE_ARGS *cum,
/* When disable vector_abi or scalable vector argument is anonymous, this
argument is passed by reference. */
- if (riscv_v_ext_mode_p (mode) && (!riscv_vector_abi || !named))
+ if (riscv_v_ext_mode_p (mode) && !named)
return NULL_RTX;
if (named)
@@ -5321,9 +5320,8 @@ riscv_fntype_abi (const_tree fntype)
You can enable this feature via the `--param=riscv-vector-abi` compiler
option. */
- if (riscv_vector_abi
- && (riscv_return_value_is_vector_type_p (fntype)
- || riscv_arguments_is_vector_type_p (fntype)))
+ if (riscv_return_value_is_vector_type_p (fntype)
+ || riscv_arguments_is_vector_type_p (fntype))
return riscv_v_abi ();
return default_function_abi;
@@ -5610,6 +5608,17 @@ riscv_get_v_regno_alignment (machine_mode mode)
return lmul;
}
+/* Define ASM_OUTPUT_OPCODE to do anything special before
+ emitting an opcode. */
+const char *
+riscv_asm_output_opcode (FILE *asm_out_file, const char *p)
+{
+ if (TARGET_XTHEADVECTOR)
+ return th_asm_output_opcode (asm_out_file, p);
+
+ return p;
+}
+
/* Implement TARGET_PRINT_OPERAND. The RISCV-specific operand codes are:
'h' Print the high-part relocation associated with OP, after stripping
@@ -5842,6 +5851,14 @@ riscv_print_operand (FILE *file, rtx op, int letter)
output_addr_const (file, newop);
break;
}
+ case 'Y':
+ {
+ unsigned int imm = (UINTVAL (op) & 63);
+ gcc_assert (imm <= 63);
+ rtx newop = GEN_INT (imm);
+ output_addr_const (file, newop);
+ break;
+ }
default:
switch (code)
{
@@ -8784,13 +8801,13 @@ riscv_override_options_internal (struct gcc_options *opts)
We can only allow TARGET_MIN_VLEN * 8 (LMUL) < 65535. */
if (TARGET_MIN_VLEN_OPTS (opts) > 4096)
- sorry ("Current RISC-V GCC cannot support VLEN greater than 4096bit for "
+ sorry ("Current RISC-V GCC does not support VLEN greater than 4096bit for "
"'V' Extension");
/* FIXME: We don't support RVV in big-endian for now, we may enable RVV with
big-endian after finishing full coverage testing. */
if (TARGET_VECTOR && TARGET_BIG_ENDIAN)
- sorry ("Current RISC-V GCC cannot support RVV in big-endian mode");
+ sorry ("Current RISC-V GCC does not support RVV in big-endian mode");
/* Convert -march to a chunks count. */
riscv_vector_chunks = riscv_convert_vector_bits (opts);
@@ -9978,7 +9995,7 @@ riscv_use_divmod_expander (void)
static machine_mode
riscv_preferred_simd_mode (scalar_mode mode)
{
- if (TARGET_VECTOR)
+ if (TARGET_VECTOR && !TARGET_XTHEADVECTOR)
return riscv_vector::preferred_simd_mode (mode);
return word_mode;
@@ -10329,7 +10346,7 @@ riscv_mode_priority (int, int n)
unsigned int
riscv_autovectorize_vector_modes (vector_modes *modes, bool all)
{
- if (TARGET_VECTOR)
+ if (TARGET_VECTOR && !TARGET_XTHEADVECTOR)
return riscv_vector::autovectorize_vector_modes (modes, all);
return default_autovectorize_vector_modes (modes, all);
@@ -10517,6 +10534,16 @@ extract_base_offset_in_addr (rtx mem, rtx *base, rtx *offset)
return false;
}
+/* Implements target hook vector_mode_supported_any_target_p. */
+
+static bool
+riscv_vector_mode_supported_any_target_p (machine_mode)
+{
+ if (TARGET_XTHEADVECTOR)
+ return false;
+ return true;
+}
+
/* Initialize the GCC target structure. */
#undef TARGET_ASM_ALIGNED_HI_OP
#define TARGET_ASM_ALIGNED_HI_OP "\t.half\t"
@@ -10860,6 +10887,9 @@ extract_base_offset_in_addr (rtx mem, rtx *base, rtx *offset)
#undef TARGET_PREFERRED_ELSE_VALUE
#define TARGET_PREFERRED_ELSE_VALUE riscv_preferred_else_value
+#undef TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P
+#define TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P riscv_vector_mode_supported_any_target_p
+
struct gcc_target targetm = TARGET_INITIALIZER;
#include "gt-riscv.h"
diff --git a/gcc/config/riscv/riscv.h b/gcc/config/riscv/riscv.h
index 1b2cb8d..627eba1 100644
--- a/gcc/config/riscv/riscv.h
+++ b/gcc/config/riscv/riscv.h
@@ -827,6 +827,10 @@ extern enum riscv_cc get_riscv_cc (const rtx use);
asm_fprintf ((FILE), "%U%s", (NAME)); \
} while (0)
+#undef ASM_OUTPUT_OPCODE
+#define ASM_OUTPUT_OPCODE(STREAM, PTR) \
+ (PTR) = riscv_asm_output_opcode(STREAM, PTR)
+
#define JUMP_TABLES_IN_TEXT_SECTION 0
#define CASE_VECTOR_MODE SImode
#define CASE_VECTOR_PC_RELATIVE (riscv_cmodel != CM_MEDLOW)
diff --git a/gcc/config/riscv/riscv.md b/gcc/config/riscv/riscv.md
index 95753c7..b320ad0 100644
--- a/gcc/config/riscv/riscv.md
+++ b/gcc/config/riscv/riscv.md
@@ -89,6 +89,10 @@
;; Workaround for HFmode without hardware extension
UNSPEC_FMV_SFP16_X
+
+ ;; XTheadFmv moves
+ UNSPEC_XTHEADFMV
+ UNSPEC_XTHEADFMV_HW
])
(define_c_enum "unspecv" [
@@ -127,10 +131,6 @@
;; Zihintpause unspec
UNSPECV_PAUSE
- ;; XTheadFmv unspec
- UNSPEC_XTHEADFMV
- UNSPEC_XTHEADFMV_HW
-
;; XTheadInt unspec
UNSPECV_XTHEADINT_PUSH
UNSPECV_XTHEADINT_POP
@@ -583,6 +583,25 @@
]
(const_string "yes")))
+;; This attribute marks the alternatives not matching the constraints
+;; described in spec as disabled.
+(define_attr "spec_restriction" "none,thv,rvv"
+ (const_string "none"))
+
+(define_attr "spec_restriction_disabled" "no,yes"
+ (cond [(eq_attr "spec_restriction" "none")
+ (const_string "no")
+
+ (and (eq_attr "spec_restriction" "thv")
+ (match_test "TARGET_XTHEADVECTOR"))
+ (const_string "yes")
+
+ (and (eq_attr "spec_restriction" "rvv")
+ (match_test "TARGET_VECTOR && !TARGET_XTHEADVECTOR"))
+ (const_string "yes")
+ ]
+ (const_string "no")))
+
;; Attribute to control enable or disable instructions.
(define_attr "enabled" "no,yes"
(cond [
@@ -594,6 +613,9 @@
(eq_attr "group_overlap_valid" "no")
(const_string "no")
+
+ (eq_attr "spec_restriction_disabled" "yes")
+ (const_string "no")
]
(const_string "yes")))
@@ -1754,8 +1776,7 @@
(zero_extend:DI
(match_operand:SI 1 "nonimmediate_operand" " r,m")))]
"TARGET_64BIT && !TARGET_ZBA && !TARGET_XTHEADBB && !TARGET_XTHEADMEMIDX
- && !(register_operand (operands[1], SImode)
- && reg_or_subregno (operands[1]) == VL_REGNUM)"
+ && !(REG_P (operands[1]) && VL_REG_P (REGNO (operands[1])))"
"@
#
lwu\t%0,%1"
@@ -2192,8 +2213,7 @@
(match_operand:SI 1 "move_operand" " r,T,m,rJ,*r*J,*m,*f,*f,vp"))]
"(register_operand (operands[0], SImode)
|| reg_or_0_operand (operands[1], SImode))
- && !(register_operand (operands[1], SImode)
- && reg_or_subregno (operands[1]) == VL_REGNUM)"
+ && !(REG_P (operands[1]) && VL_REG_P (REGNO (operands[1])))"
{ return riscv_output_move (operands[0], operands[1]); }
[(set_attr "move_type" "move,const,load,store,mtc,fpload,mfc,fpstore,rdvlenb")
(set_attr "mode" "SI")
diff --git a/gcc/config/riscv/riscv.opt b/gcc/config/riscv/riscv.opt
index fd4f1a4..b6d8e9a 100644
--- a/gcc/config/riscv/riscv.opt
+++ b/gcc/config/riscv/riscv.opt
@@ -103,7 +103,7 @@ Target Mask(SAVE_RESTORE)
Use smaller but slower prologue and epilogue code.
mshorten-memrefs
-Target Bool Var(riscv_mshorten_memrefs) Init(1)
+Target Var(riscv_mshorten_memrefs) Init(1)
Convert BASE + LARGE_OFFSET addresses to NEW_BASE + SMALL_OFFSET to allow more
memory accesses to be generated as compressed instructions. Currently targets
32-bit integer load/stores.
@@ -134,12 +134,12 @@ Target Mask(EXPLICIT_RELOCS)
Use %reloc() operators, rather than assembly macros, to load addresses.
mrelax
-Target Bool Var(riscv_mrelax) Init(1)
+Target Var(riscv_mrelax) Init(1)
Take advantage of linker relaxations to reduce the number of instructions
required to materialize symbol addresses.
mcsr-check
-Target Bool Var(riscv_mcsr_check) Init(0)
+Target Var(riscv_mcsr_check) Init(0)
Enable the CSR checking for the ISA-dependent CRS and the read-only CSR.
The ISA-dependent CSR are only valid when the specific ISA is set. The
read-only CSR can not be written by the CSR instructions.
@@ -425,6 +425,8 @@ Mask(XCVALU) Var(riscv_xcv_subext)
Mask(XCVELW) Var(riscv_xcv_subext)
+Mask(XCVSIMD) Var(riscv_xcv_subext)
+
TargetVariable
int riscv_xthead_subext
@@ -452,6 +454,8 @@ Mask(XTHEADMEMPAIR) Var(riscv_xthead_subext)
Mask(XTHEADSYNC) Var(riscv_xthead_subext)
+Mask(XTHEADVECTOR) Var(riscv_xthead_subext)
+
TargetVariable
int riscv_xventana_subext
@@ -483,15 +487,15 @@ Target Var(TARGET_INLINE_SUBWORD_ATOMIC) Init(1)
Always inline subword atomic operations.
minline-strcmp
-Target Bool Var(riscv_inline_strcmp) Init(0)
+Target Var(riscv_inline_strcmp) Init(0)
Inline strcmp calls if possible.
minline-strncmp
-Target Bool Var(riscv_inline_strncmp) Init(0)
+Target Var(riscv_inline_strncmp) Init(0)
Inline strncmp calls if possible.
minline-strlen
-Target Bool Var(riscv_inline_strlen) Init(0)
+Target Var(riscv_inline_strlen) Init(0)
Inline strlen calls if possible.
-param=riscv-strcmp-inline-limit=
@@ -541,20 +545,18 @@ Target RejectNegative Joined Enum(riscv_autovec_lmul) Var(riscv_autovec_lmul) In
madjust-lmul-cost
Target Var(TARGET_ADJUST_LMUL_COST) Init(0)
--param=riscv-vector-abi
-Target Undocumented Bool Var(riscv_vector_abi) Init(0)
-Enable the use of vector registers for function arguments and return value.
-This is an experimental switch and may be subject to change in the future.
-
Enum
Name(vsetvl_strategy) Type(enum vsetvl_strategy_enum)
Valid arguments to -param=vsetvl-strategy=:
EnumValue
+Enum(vsetvl_strategy) String(optim) Value(VSETVL_OPT)
+
+EnumValue
Enum(vsetvl_strategy) String(simple) Value(VSETVL_SIMPLE)
EnumValue
-Enum(vsetvl_strategy) String(optim) Value(VSETVL_OPT)
+Enum(vsetvl_strategy) String(optim-no-fusion) Value(VSETVL_OPT_NO_FUSION)
-param=vsetvl-strategy=
Target Undocumented RejectNegative Joined Enum(vsetvl_strategy) Var(vsetvl_strategy) Init(VSETVL_OPT)
diff --git a/gcc/config/riscv/riscv_th_vector.h b/gcc/config/riscv/riscv_th_vector.h
new file mode 100644
index 0000000..b6b6738
--- /dev/null
+++ b/gcc/config/riscv/riscv_th_vector.h
@@ -0,0 +1,49 @@
+/* RISC-V 'XTheadVector' Extension intrinsics include file.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+
+ This file is part of GCC.
+
+ GCC is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3, or (at your
+ option) any later version.
+
+ GCC is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ License for more details.
+
+ Under Section 7 of GPL version 3, you are granted additional
+ permissions described in the GCC Runtime Library Exception, version
+ 3.1, as published by the Free Software Foundation.
+
+ You should have received a copy of the GNU General Public License and
+ a copy of the GCC Runtime Library Exception along with this program;
+ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef __RISCV_TH_VECTOR_H
+#define __RISCV_TH_VECTOR_H
+
+#include <stdint.h>
+#include <stddef.h>
+
+#ifndef __riscv_xtheadvector
+#error "XTheadVector intrinsics require the xtheadvector extension."
+#else
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* NOTE: This implementation of riscv_th_vector.h is intentionally short. It does
+ not define the RVV types and intrinsic functions directly in C and C++
+ code, but instead uses the following pragma to tell GCC to insert the
+ necessary type and function definitions itself. The net effect is the
+ same, and the file is a complete implementation of riscv_th_vector.h. */
+#pragma riscv intrinsic "xtheadvector"
+
+#ifdef __cplusplus
+}
+#endif // __cplusplus
+#endif // __riscv_xtheadvector
+#endif // __RISCV_TH_ECTOR_H
diff --git a/gcc/config/riscv/sfb.md b/gcc/config/riscv/sfb.md
index 8ab7471..bfd229e 100644
--- a/gcc/config/riscv/sfb.md
+++ b/gcc/config/riscv/sfb.md
@@ -35,3 +35,35 @@
[(set_attr "length" "8")
(set_attr "type" "sfb_alu")
(set_attr "mode" "<GPR:MODE>")])
+
+;; Combine creates this form ((typeof(y))zero_one * z) <op> y
+;; for SiFive short forward branches.
+
+(define_split
+ [(set (match_operand:X 0 "register_operand")
+ (and:X (sign_extract:X (match_operand:X 1 "register_operand")
+ (const_int 1)
+ (match_operand 2 "immediate_operand"))
+ (match_operand:X 3 "register_operand")))
+ (clobber (match_operand:X 4 "register_operand"))]
+ "TARGET_SFB_ALU"
+ [(set (match_dup 4) (zero_extract:X (match_dup 1) (const_int 1) (match_dup 2)))
+ (set (match_dup 0) (if_then_else:X (ne (match_dup 4) (const_int 0))
+ (match_dup 3)
+ (const_int 0)))])
+
+(define_split
+ [(set (match_operand:X 0 "register_operand")
+ (and:X (sign_extract:X (match_operand:X 1 "register_operand")
+ (const_int 1)
+ (match_operand 2 "immediate_operand"))
+ (match_operand:X 3 "register_operand")))
+ (clobber (match_operand:X 4 "register_operand"))]
+ "TARGET_SFB_ALU && (UINTVAL (operands[2]) < 11)"
+ [(set (match_dup 4) (and:X (match_dup 1) (match_dup 2)))
+ (set (match_dup 0) (if_then_else:X (ne (match_dup 4) (const_int 0))
+ (match_dup 3)
+ (const_int 0)))]
+{
+ operands[2] = GEN_INT (1 << UINTVAL(operands[2]));
+})
diff --git a/gcc/config/riscv/t-riscv b/gcc/config/riscv/t-riscv
index 32de6b8..3849432 100644
--- a/gcc/config/riscv/t-riscv
+++ b/gcc/config/riscv/t-riscv
@@ -1,6 +1,7 @@
RISCV_BUILTINS_H = $(srcdir)/config/riscv/riscv-vector-builtins.h \
$(srcdir)/config/riscv/riscv-vector-builtins.def \
$(srcdir)/config/riscv/riscv-vector-builtins-functions.def \
+ $(srcdir)/config/riscv/thead-vector-builtins-functions.def \
riscv-vector-type-indexer.gen.def
riscv-builtins.o: $(srcdir)/config/riscv/riscv-builtins.cc $(CONFIG_H) \
diff --git a/gcc/config/riscv/thead-vector-builtins-functions.def b/gcc/config/riscv/thead-vector-builtins-functions.def
new file mode 100644
index 0000000..fd3ba29
--- /dev/null
+++ b/gcc/config/riscv/thead-vector-builtins-functions.def
@@ -0,0 +1,39 @@
+#ifndef DEF_RVV_FUNCTION
+#define DEF_RVV_FUNCTION(NAME, SHAPE, PREDS, OPS_INFO)
+#endif
+
+#define REQUIRED_EXTENSIONS XTHEADVECTOR_EXT
+DEF_RVV_FUNCTION (vlb, th_loadstore_width, full_preds, all_v_scalar_const_ptr_ops)
+DEF_RVV_FUNCTION (vlh, th_loadstore_width, full_preds, all_v_scalar_const_ptr_ops)
+DEF_RVV_FUNCTION (vlw, th_loadstore_width, full_preds, all_v_scalar_const_ptr_ops)
+DEF_RVV_FUNCTION (vlbu, th_loadstore_width, full_preds, all_v_scalar_const_ptr_ops)
+DEF_RVV_FUNCTION (vlhu, th_loadstore_width, full_preds, all_v_scalar_const_ptr_ops)
+DEF_RVV_FUNCTION (vlwu, th_loadstore_width, full_preds, all_v_scalar_const_ptr_ops)
+DEF_RVV_FUNCTION (vsb, th_loadstore_width, none_m_preds, all_v_scalar_ptr_ops)
+DEF_RVV_FUNCTION (vsh, th_loadstore_width, none_m_preds, all_v_scalar_ptr_ops)
+DEF_RVV_FUNCTION (vsw, th_loadstore_width, none_m_preds, all_v_scalar_ptr_ops)
+DEF_RVV_FUNCTION (vlsb, th_loadstore_width, full_preds, all_v_scalar_const_ptr_size_ops)
+DEF_RVV_FUNCTION (vlsh, th_loadstore_width, full_preds, all_v_scalar_const_ptr_size_ops)
+DEF_RVV_FUNCTION (vlsw, th_loadstore_width, full_preds, all_v_scalar_const_ptr_size_ops)
+DEF_RVV_FUNCTION (vlsbu, th_loadstore_width, full_preds, all_v_scalar_const_ptr_size_ops)
+DEF_RVV_FUNCTION (vlshu, th_loadstore_width, full_preds, all_v_scalar_const_ptr_size_ops)
+DEF_RVV_FUNCTION (vlswu, th_loadstore_width, full_preds, all_v_scalar_const_ptr_size_ops)
+DEF_RVV_FUNCTION (vssb, th_loadstore_width, none_m_preds, all_v_scalar_ptr_size_ops)
+DEF_RVV_FUNCTION (vssh, th_loadstore_width, none_m_preds, all_v_scalar_ptr_size_ops)
+DEF_RVV_FUNCTION (vssw, th_loadstore_width, none_m_preds, all_v_scalar_ptr_size_ops)
+DEF_RVV_FUNCTION (vlxb, th_indexed_loadstore_width, full_preds, all_v_scalar_const_ptr_index_ops)
+DEF_RVV_FUNCTION (vlxh, th_indexed_loadstore_width, full_preds, all_v_scalar_const_ptr_index_ops)
+DEF_RVV_FUNCTION (vlxw, th_indexed_loadstore_width, full_preds, all_v_scalar_const_ptr_index_ops)
+DEF_RVV_FUNCTION (vlxbu, th_indexed_loadstore_width, full_preds, all_v_scalar_const_ptr_index_ops)
+DEF_RVV_FUNCTION (vlxhu, th_indexed_loadstore_width, full_preds, all_v_scalar_const_ptr_index_ops)
+DEF_RVV_FUNCTION (vlxwu, th_indexed_loadstore_width, full_preds, all_v_scalar_const_ptr_index_ops)
+DEF_RVV_FUNCTION (vsxb, th_indexed_loadstore_width, none_m_preds, all_v_scalar_ptr_index_ops)
+DEF_RVV_FUNCTION (vsxh, th_indexed_loadstore_width, none_m_preds, all_v_scalar_ptr_index_ops)
+DEF_RVV_FUNCTION (vsxw, th_indexed_loadstore_width, none_m_preds, all_v_scalar_ptr_index_ops)
+DEF_RVV_FUNCTION (vsuxb, th_indexed_loadstore_width, none_m_preds, all_v_scalar_ptr_index_ops)
+DEF_RVV_FUNCTION (vsuxh, th_indexed_loadstore_width, none_m_preds, all_v_scalar_ptr_index_ops)
+DEF_RVV_FUNCTION (vsuxw, th_indexed_loadstore_width, none_m_preds, all_v_scalar_ptr_index_ops)
+DEF_RVV_FUNCTION (vext_x_v, th_extract, none_preds, iu_x_s_u_ops)
+#undef REQUIRED_EXTENSIONS
+
+#undef DEF_RVV_FUNCTION
diff --git a/gcc/config/riscv/thead-vector.md b/gcc/config/riscv/thead-vector.md
new file mode 100644
index 0000000..5fe9ba0
--- /dev/null
+++ b/gcc/config/riscv/thead-vector.md
@@ -0,0 +1,352 @@
+(define_c_enum "unspec" [
+ UNSPEC_TH_VLB
+ UNSPEC_TH_VLBU
+ UNSPEC_TH_VLH
+ UNSPEC_TH_VLHU
+ UNSPEC_TH_VLW
+ UNSPEC_TH_VLWU
+
+ UNSPEC_TH_VLSB
+ UNSPEC_TH_VLSBU
+ UNSPEC_TH_VLSH
+ UNSPEC_TH_VLSHU
+ UNSPEC_TH_VLSW
+ UNSPEC_TH_VLSWU
+
+ UNSPEC_TH_VLXB
+ UNSPEC_TH_VLXBU
+ UNSPEC_TH_VLXH
+ UNSPEC_TH_VLXHU
+ UNSPEC_TH_VLXW
+ UNSPEC_TH_VLXWU
+
+ UNSPEC_TH_VSUXB
+ UNSPEC_TH_VSUXH
+ UNSPEC_TH_VSUXW
+
+ UNSPEC_TH_VWLDST
+])
+
+(define_int_iterator UNSPEC_TH_VLMEM_OP [
+ UNSPEC_TH_VLB UNSPEC_TH_VLBU
+ UNSPEC_TH_VLH UNSPEC_TH_VLHU
+ UNSPEC_TH_VLW UNSPEC_TH_VLWU
+])
+
+(define_int_iterator UNSPEC_TH_VLSMEM_OP [
+ UNSPEC_TH_VLSB UNSPEC_TH_VLSBU
+ UNSPEC_TH_VLSH UNSPEC_TH_VLSHU
+ UNSPEC_TH_VLSW UNSPEC_TH_VLSWU
+])
+
+(define_int_iterator UNSPEC_TH_VLXMEM_OP [
+ UNSPEC_TH_VLXB UNSPEC_TH_VLXBU
+ UNSPEC_TH_VLXH UNSPEC_TH_VLXHU
+ UNSPEC_TH_VLXW UNSPEC_TH_VLXWU
+])
+
+(define_int_attr vlmem_op_attr [
+ (UNSPEC_TH_VLB "b") (UNSPEC_TH_VLBU "bu")
+ (UNSPEC_TH_VLH "h") (UNSPEC_TH_VLHU "hu")
+ (UNSPEC_TH_VLW "w") (UNSPEC_TH_VLWU "wu")
+ (UNSPEC_TH_VLSB "b") (UNSPEC_TH_VLSBU "bu")
+ (UNSPEC_TH_VLSH "h") (UNSPEC_TH_VLSHU "hu")
+ (UNSPEC_TH_VLSW "w") (UNSPEC_TH_VLSWU "wu")
+ (UNSPEC_TH_VLXB "b") (UNSPEC_TH_VLXBU "bu")
+ (UNSPEC_TH_VLXH "h") (UNSPEC_TH_VLXHU "hu")
+ (UNSPEC_TH_VLXW "w") (UNSPEC_TH_VLXWU "wu")
+ (UNSPEC_TH_VSUXB "b")
+ (UNSPEC_TH_VSUXH "h")
+ (UNSPEC_TH_VSUXW "w")
+])
+
+(define_int_attr vlmem_order_attr [
+ (UNSPEC_TH_VLXB "")
+ (UNSPEC_TH_VLXH "")
+ (UNSPEC_TH_VLXW "")
+ (UNSPEC_TH_VSUXB "u")
+ (UNSPEC_TH_VSUXH "u")
+ (UNSPEC_TH_VSUXW "u")
+])
+
+(define_int_iterator UNSPEC_TH_VSMEM_OP [
+ UNSPEC_TH_VLB
+ UNSPEC_TH_VLH
+ UNSPEC_TH_VLW
+])
+
+(define_int_iterator UNSPEC_TH_VSSMEM_OP [
+ UNSPEC_TH_VLSB
+ UNSPEC_TH_VLSH
+ UNSPEC_TH_VLSW
+])
+
+(define_int_iterator UNSPEC_TH_VSXMEM_OP [
+ UNSPEC_TH_VLXB
+ UNSPEC_TH_VLXH
+ UNSPEC_TH_VLXW
+ UNSPEC_TH_VSUXB
+ UNSPEC_TH_VSUXH
+ UNSPEC_TH_VSUXW
+])
+
+(define_mode_iterator V_VLS_VT [V VLS VT])
+(define_mode_iterator V_VB_VLS_VT [V VB VLS VT])
+
+(define_split
+ [(set (match_operand:V_VB_VLS_VT 0 "reg_or_mem_operand")
+ (match_operand:V_VB_VLS_VT 1 "reg_or_mem_operand"))]
+ "TARGET_XTHEADVECTOR"
+ [(const_int 0)]
+ {
+ emit_insn (gen_pred_th_whole_mov (<MODE>mode, operands[0], operands[1],
+ RVV_VLMAX, GEN_INT(riscv_vector::VLMAX)));
+ DONE;
+ })
+
+(define_insn_and_split "@pred_th_whole_mov<mode>"
+ [(set (match_operand:V_VLS_VT 0 "reg_or_mem_operand" "=vr,vr, m")
+ (unspec:V_VLS_VT
+ [(match_operand:V_VLS_VT 1 "reg_or_mem_operand" " vr, m,vr")
+ (match_operand 2 "vector_length_operand" " rK, rK, rK")
+ (match_operand 3 "const_1_operand" " i, i, i")
+ (reg:SI VL_REGNUM)
+ (reg:SI VTYPE_REGNUM)]
+ UNSPEC_TH_VWLDST))]
+ "TARGET_XTHEADVECTOR"
+ "@
+ vmv.v.v\t%0,%1
+ vle.v\t%0,%1
+ vse.v\t%1,%0"
+ "&& REG_P (operands[0]) && REG_P (operands[1])
+ && REGNO (operands[0]) == REGNO (operands[1])"
+ [(const_int 0)]
+ ""
+ [(set_attr "type" "vimov,vlds,vlds")
+ (set_attr "mode" "<MODE>")
+ (set (attr "ta") (symbol_ref "riscv_vector::TAIL_UNDISTURBED"))
+ (set (attr "ma") (symbol_ref "riscv_vector::MASK_UNDISTURBED"))
+ (set (attr "avl_type_idx") (const_int 3))
+ (set_attr "vl_op_idx" "2")])
+
+(define_insn_and_split "@pred_th_whole_mov<mode>"
+ [(set (match_operand:VB 0 "reg_or_mem_operand" "=vr,vr, m")
+ (unspec:VB
+ [(match_operand:VB 1 "reg_or_mem_operand" " vr, m,vr")
+ (match_operand 2 "vector_length_operand" " rK, rK, rK")
+ (match_operand 3 "const_1_operand" " i, i, i")
+ (reg:SI VL_REGNUM)
+ (reg:SI VTYPE_REGNUM)]
+ UNSPEC_TH_VWLDST))]
+ "TARGET_XTHEADVECTOR"
+ "@
+ vmv.v.v\t%0,%1
+ vle.v\t%0,%1
+ vse.v\t%1,%0"
+ "&& REG_P (operands[0]) && REG_P (operands[1])
+ && REGNO (operands[0]) == REGNO (operands[1])"
+ [(const_int 0)]
+ ""
+ [(set_attr "type" "vimov,vlds,vlds")
+ (set_attr "mode" "<MODE>")
+ (set (attr "ta") (symbol_ref "riscv_vector::TAIL_UNDISTURBED"))
+ (set (attr "ma") (symbol_ref "riscv_vector::MASK_UNDISTURBED"))
+ (set (attr "avl_type_idx") (const_int 3))
+ (set_attr "vl_op_idx" "2")
+ (set (attr "sew") (const_int 8))
+ (set (attr "vlmul") (symbol_ref "riscv_vector::LMUL_1"))])
+
+(define_insn_and_split "*pred_th_mov<mode>"
+ [(set (match_operand:VB_VLS 0 "nonimmediate_operand" "=vr, m, vr, vr, vr")
+ (if_then_else:VB_VLS
+ (unspec:VB_VLS
+ [(match_operand:VB_VLS 1 "vector_all_trues_mask_operand" "Wc1, Wc1, Wc1, Wc1, Wc1")
+ (match_operand 4 "vector_length_operand" " rK, rK, rK, rK, rK")
+ (match_operand 5 "const_int_operand" " i, i, i, i, i")
+ (reg:SI VL_REGNUM)
+ (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ (match_operand:VB_VLS 3 "vector_move_operand" " m, vr, vr, Wc0, Wc1")
+ (match_operand:VB_VLS 2 "vector_undef_operand" " vu, vu, vu, vu, vu")))]
+ "TARGET_XTHEADVECTOR"
+ "@
+ #
+ #
+ vmcpy.m\t%0,%3
+ vmclr.m\t%0
+ vmset.m\t%0"
+ "&& !reload_completed"
+ [(const_int 0)]
+ {
+ if ((MEM_P (operands[0]) || MEM_P (operands[3]))
+ || (REG_P (operands[0]) && REG_P (operands[3])
+ && INTVAL (operands[5]) == riscv_vector::VLMAX))
+ {
+ emit_move_insn (operands[0], operands[3]);
+ DONE;
+ }
+ FAIL;
+ }
+ [(set_attr "type" "vldm,vstm,vmalu,vmalu,vmalu")
+ (set_attr "mode" "<MODE>")])
+
+(define_expand "@pred_mov_width<vlmem_op_attr><mode>"
+ [(set (match_operand:V_VLS 0 "nonimmediate_operand")
+ (if_then_else:V_VLS
+ (unspec:<VM>
+ [(match_operand:<VM> 1 "vector_mask_operand")
+ (match_operand 4 "vector_length_operand")
+ (match_operand 5 "const_int_operand")
+ (match_operand 6 "const_int_operand")
+ (match_operand 7 "const_int_operand")
+ (reg:SI VL_REGNUM)
+ (reg:SI VTYPE_REGNUM)] UNSPEC_TH_VLMEM_OP)
+ (match_operand:V_VLS 3 "vector_move_operand")
+ (match_operand:V_VLS 2 "vector_merge_operand")))]
+ "TARGET_XTHEADVECTOR"
+ {})
+
+(define_insn_and_split "*pred_mov_width<vlmem_op_attr><mode>"
+ [(set (match_operand:V_VLS 0 "nonimmediate_operand" "=vr, vr, vd, m, vr, vr")
+ (if_then_else:V_VLS
+ (unspec:<VM>
+ [(match_operand:<VM> 1 "vector_mask_operand" "vmWc1, Wc1, vm, vmWc1, Wc1, Wc1")
+ (match_operand 4 "vector_length_operand" " rK, rK, rK, rK, rK, rK")
+ (match_operand 5 "const_int_operand" " i, i, i, i, i, i")
+ (match_operand 6 "const_int_operand" " i, i, i, i, i, i")
+ (match_operand 7 "const_int_operand" " i, i, i, i, i, i")
+ (reg:SI VL_REGNUM)
+ (reg:SI VTYPE_REGNUM)] UNSPEC_TH_VLMEM_OP)
+ (match_operand:V_VLS 3 "reg_or_mem_operand" " m, m, m, vr, vr, vr")
+ (match_operand:V_VLS 2 "vector_merge_operand" " 0, vu, vu, vu, vu, 0")))]
+ "(TARGET_XTHEADVECTOR
+ && (register_operand (operands[0], <MODE>mode)
+ || register_operand (operands[3], <MODE>mode)))"
+ "@
+ vl<vlmem_op_attr>.v\t%0,%3%p1
+ vl<vlmem_op_attr>.v\t%0,%3
+ vl<vlmem_op_attr>.v\t%0,%3,%1.t
+ vs<vlmem_op_attr>.v\t%3,%0%p1
+ vmv.v.v\t%0,%3
+ vmv.v.v\t%0,%3"
+ "&& riscv_vector::whole_reg_to_reg_move_p (operands, <MODE>mode, 7)"
+ [(set (match_dup 0) (match_dup 3))]
+ ""
+ [(set_attr "type" "vlde,vlde,vlde,vste,vimov,vimov")
+ (set_attr "mode" "<MODE>")])
+
+(define_insn "@pred_store_width<vlmem_op_attr><mode>"
+ [(set (match_operand:VI 0 "memory_operand" "+m")
+ (if_then_else:VI
+ (unspec:<VM>
+ [(match_operand:<VM> 1 "vector_mask_operand" "vmWc1")
+ (match_operand 3 "vector_length_operand" " rK")
+ (match_operand 4 "const_int_operand" " i")
+ (reg:SI VL_REGNUM)
+ (reg:SI VTYPE_REGNUM)] UNSPEC_TH_VSMEM_OP)
+ (match_operand:VI 2 "register_operand" " vr")
+ (match_dup 0)))]
+ "TARGET_XTHEADVECTOR"
+ "vs<vlmem_op_attr>.v\t%2,%0%p1"
+ [(set_attr "type" "vste")
+ (set_attr "mode" "<MODE>")
+ (set (attr "avl_type_idx") (const_int 4))
+ (set_attr "vl_op_idx" "3")])
+
+(define_insn "@pred_strided_load_width<vlmem_op_attr><mode>"
+ [(set (match_operand:VI 0 "register_operand" "=vr, vr, vd")
+ (if_then_else:VI
+ (unspec:<VM>
+ [(match_operand:<VM> 1 "vector_mask_operand" "vmWc1, Wc1, vm")
+ (match_operand 5 "vector_length_operand" " rK, rK, rK")
+ (match_operand 6 "const_int_operand" " i, i, i")
+ (match_operand 7 "const_int_operand" " i, i, i")
+ (match_operand 8 "const_int_operand" " i, i, i")
+ (reg:SI VL_REGNUM)
+ (reg:SI VTYPE_REGNUM)] UNSPEC_TH_VLSMEM_OP)
+ (unspec:VI
+ [(match_operand:VI 3 "memory_operand" " m, m, m")
+ (match_operand 4 "pmode_reg_or_0_operand" " rJ, rJ, rJ")] UNSPEC_TH_VLSMEM_OP)
+ (match_operand:VI 2 "vector_merge_operand" " 0, vu, vu")))]
+ "TARGET_XTHEADVECTOR"
+ "vls<vlmem_op_attr>.v\t%0,%3,%z4%p1"
+ [(set_attr "type" "vlds")
+ (set_attr "mode" "<MODE>")])
+
+(define_insn "@pred_strided_store_width<vlmem_op_attr><mode>"
+ [(set (match_operand:VI 0 "memory_operand" "+m")
+ (if_then_else:VI
+ (unspec:<VM>
+ [(match_operand:<VM> 1 "vector_mask_operand" "vmWc1")
+ (match_operand 4 "vector_length_operand" " rK")
+ (match_operand 5 "const_int_operand" " i")
+ (reg:SI VL_REGNUM)
+ (reg:SI VTYPE_REGNUM)] UNSPEC_TH_VSSMEM_OP)
+ (unspec:VI
+ [(match_operand 2 "pmode_reg_or_0_operand" " rJ")
+ (match_operand:VI 3 "register_operand" " vr")] UNSPEC_TH_VSSMEM_OP)
+ (match_dup 0)))]
+ "TARGET_XTHEADVECTOR"
+ "vss<vlmem_op_attr>.v\t%3,%0,%z2%p1"
+ [(set_attr "type" "vsts")
+ (set_attr "mode" "<MODE>")
+ (set (attr "avl_type_idx") (const_int 5))])
+
+(define_insn "@pred_indexed_load_width<vlmem_op_attr><mode>"
+ [(set (match_operand:VI 0 "register_operand" "=vd, vr,vd, vr")
+ (if_then_else:VI
+ (unspec:<VM>
+ [(match_operand:<VM> 1 "vector_mask_operand" " vm,Wc1,vm,Wc1")
+ (match_operand 5 "vector_length_operand" " rK, rK,rK, rK")
+ (match_operand 6 "const_int_operand" " i, i, i, i")
+ (match_operand 7 "const_int_operand" " i, i, i, i")
+ (match_operand 8 "const_int_operand" " i, i, i, i")
+ (reg:SI VL_REGNUM)
+ (reg:SI VTYPE_REGNUM)] UNSPEC_TH_VLXMEM_OP)
+ (unspec:VI
+ [(match_operand 3 "pmode_reg_or_0_operand" " rJ, rJ,rJ, rJ")
+ (mem:BLK (scratch))
+ (match_operand:VI 4 "register_operand" " vr, vr,vr, vr")] UNSPEC_TH_VLXMEM_OP)
+ (match_operand:VI 2 "vector_merge_operand" " vu, vu, 0, 0")))]
+ "TARGET_XTHEADVECTOR"
+ "vlx<vlmem_op_attr>.v\t%0,(%z3),%4%p1"
+ [(set_attr "type" "vldux")
+ (set_attr "mode" "<MODE>")])
+
+(define_insn "@pred_indexed_<vlmem_order_attr>store_width<vlmem_op_attr><mode>"
+ [(set (mem:BLK (scratch))
+ (unspec:BLK
+ [(unspec:<VM>
+ [(match_operand:<VM> 0 "vector_mask_operand" "vmWc1")
+ (match_operand 4 "vector_length_operand" " rK")
+ (match_operand 5 "const_int_operand" " i")
+ (reg:SI VL_REGNUM)
+ (reg:SI VTYPE_REGNUM)] UNSPEC_TH_VSXMEM_OP)
+ (match_operand 1 "pmode_reg_or_0_operand" " rJ")
+ (match_operand:VI 2 "register_operand" " vr")
+ (match_operand:VI 3 "register_operand" " vr")] UNSPEC_TH_VSXMEM_OP))]
+ "TARGET_XTHEADVECTOR"
+ "vs<vlmem_order_attr>x<vlmem_op_attr>.v\t%3,(%z1),%2%p0"
+ [(set_attr "type" "vstux")
+ (set_attr "mode" "<MODE>")])
+
+(define_expand "@pred_th_extract<mode>"
+ [(set (match_operand:<VEL> 0 "register_operand")
+ (unspec:<VEL>
+ [(vec_select:<VEL>
+ (match_operand:V_VLSI 1 "register_operand")
+ (parallel [(match_operand:DI 2 "register_operand" "r")]))
+ (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE))]
+ "TARGET_XTHEADVECTOR"
+{})
+
+(define_insn "*pred_th_extract<mode>"
+ [(set (match_operand:<VEL> 0 "register_operand" "=r")
+ (unspec:<VEL>
+ [(vec_select:<VEL>
+ (match_operand:V_VLSI 1 "register_operand" "vr")
+ (parallel [(match_operand:DI 2 "register_operand" "r")]))
+ (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE))]
+ "TARGET_XTHEADVECTOR"
+ "vext.x.v\t%0,%1,%2"
+ [(set_attr "type" "vimovvx")
+ (set_attr "mode" "<MODE>")])
diff --git a/gcc/config/riscv/thead.cc b/gcc/config/riscv/thead.cc
index 0b7e4d8..e4b8c37 100644
--- a/gcc/config/riscv/thead.cc
+++ b/gcc/config/riscv/thead.cc
@@ -27,6 +27,7 @@
#include "backend.h"
#include "tree.h"
#include "rtl.h"
+#include "insn-attr.h"
#include "explow.h"
#include "memmodel.h"
#include "emit-rtl.h"
@@ -883,6 +884,244 @@ th_output_move (rtx dest, rtx src)
return NULL;
}
+/* Define ASM_OUTPUT_OPCODE to do anything special before
+ emitting an opcode. */
+const char *
+th_asm_output_opcode (FILE *asm_out_file, const char *p)
+{
+ /* We need to add th. prefix to all the xtheadvector
+ instructions here.*/
+ if (current_output_insn != NULL)
+ {
+ if (get_attr_type (current_output_insn) == TYPE_VSETVL)
+ {
+ if (strstr (p, "zero"))
+ {
+ if (strstr (p, "zero,zero"))
+ return "th.vsetvli\tzero,zero,e%0,%m1";
+ else
+ return "th.vsetvli\tzero,%0,e%1,%m2";
+ }
+ else
+ {
+ return "th.vsetvli\t%0,%1,e%2,%m3";
+ }
+ }
+
+ if (get_attr_type (current_output_insn) == TYPE_VLDE ||
+ get_attr_type (current_output_insn) == TYPE_VSTE ||
+ get_attr_type (current_output_insn) == TYPE_VLDFF)
+ {
+ if (strstr (p, "e8") || strstr (p, "e16") ||
+ strstr (p, "e32") || strstr (p, "e64"))
+ {
+ get_attr_type (current_output_insn) == TYPE_VSTE
+ ? fputs ("th.vse", asm_out_file)
+ : fputs ("th.vle", asm_out_file);
+ if (strstr (p, "e8"))
+ return p+4;
+ else
+ return p+5;
+ }
+ }
+
+ if (get_attr_type (current_output_insn) == TYPE_VLDS ||
+ get_attr_type (current_output_insn) == TYPE_VSTS)
+ {
+ if (strstr (p, "vle8") || strstr (p, "vse8") ||
+ strstr (p, "vle16") || strstr (p, "vse16") ||
+ strstr (p, "vle32") || strstr (p, "vse32") ||
+ strstr (p, "vle64") || strstr (p, "vse64"))
+ {
+ get_attr_type (current_output_insn) == TYPE_VSTS
+ ? fputs ("th.vse", asm_out_file)
+ : fputs ("th.vle", asm_out_file);
+ if (strstr (p, "e8"))
+ return p+4;
+ else
+ return p+5;
+ }
+ else if (strstr (p, "vlse8") || strstr (p, "vsse8") ||
+ strstr (p, "vlse16") || strstr (p, "vsse16") ||
+ strstr (p, "vlse32") || strstr (p, "vsse32") ||
+ strstr (p, "vlse64") || strstr (p, "vsse64"))
+ {
+ get_attr_type (current_output_insn) == TYPE_VSTS
+ ? fputs ("th.vsse", asm_out_file)
+ : fputs ("th.vlse", asm_out_file);
+ if (strstr (p, "e8"))
+ return p+5;
+ else
+ return p+6;
+ }
+ }
+
+ if (get_attr_type (current_output_insn) == TYPE_VLDUX ||
+ get_attr_type (current_output_insn) == TYPE_VLDOX)
+ {
+ if (strstr (p, "ei"))
+ {
+ fputs ("th.vlxe", asm_out_file);
+ if (strstr (p, "ei8"))
+ return p+7;
+ else
+ return p+8;
+ }
+ }
+
+ if (get_attr_type (current_output_insn) == TYPE_VSTUX ||
+ get_attr_type (current_output_insn) == TYPE_VSTOX)
+ {
+ if (strstr (p, "ei"))
+ {
+ get_attr_type (current_output_insn) == TYPE_VSTUX
+ ? fputs ("th.vsuxe", asm_out_file)
+ : fputs ("th.vsxe", asm_out_file);
+ if (strstr (p, "ei8"))
+ return p+7;
+ else
+ return p+8;
+ }
+ }
+
+ if (get_attr_type (current_output_insn) == TYPE_VLSEGDE ||
+ get_attr_type (current_output_insn) == TYPE_VSSEGTE ||
+ get_attr_type (current_output_insn) == TYPE_VLSEGDFF)
+ {
+ get_attr_type (current_output_insn) == TYPE_VSSEGTE
+ ? fputs ("th.vsseg", asm_out_file)
+ : fputs ("th.vlseg", asm_out_file);
+ asm_fprintf (asm_out_file, "%c", p[5]);
+ fputs ("e", asm_out_file);
+ if (strstr (p, "e8"))
+ return p+8;
+ else
+ return p+9;
+ }
+
+ if (get_attr_type (current_output_insn) == TYPE_VLSEGDS ||
+ get_attr_type (current_output_insn) == TYPE_VSSEGTS)
+ {
+ get_attr_type (current_output_insn) == TYPE_VSSEGTS
+ ? fputs ("th.vssseg", asm_out_file)
+ : fputs ("th.vlsseg", asm_out_file);
+ asm_fprintf (asm_out_file, "%c", p[6]);
+ fputs ("e", asm_out_file);
+ if (strstr (p, "e8"))
+ return p+9;
+ else
+ return p+10;
+ }
+
+ if (get_attr_type (current_output_insn) == TYPE_VLSEGDUX ||
+ get_attr_type (current_output_insn) == TYPE_VLSEGDOX)
+ {
+ fputs ("th.vlxseg", asm_out_file);
+ asm_fprintf (asm_out_file, "%c", p[7]);
+ fputs ("e", asm_out_file);
+ if (strstr (p, "ei8"))
+ return p+11;
+ else
+ return p+12;
+ }
+
+ if (get_attr_type (current_output_insn) == TYPE_VSSEGTUX ||
+ get_attr_type (current_output_insn) == TYPE_VSSEGTOX)
+ {
+ fputs ("th.vsxseg", asm_out_file);
+ asm_fprintf (asm_out_file, "%c", p[7]);
+ fputs ("e", asm_out_file);
+ if (strstr (p, "ei8"))
+ return p+11;
+ else
+ return p+12;
+ }
+
+ if (get_attr_type (current_output_insn) == TYPE_VNSHIFT)
+ {
+ if (strstr (p, "vncvt"))
+ {
+ fputs ("th.vncvt.x.x.v", asm_out_file);
+ return p+11;
+ }
+
+ strstr (p, "vnsrl") ? fputs ("th.vnsrl.v", asm_out_file)
+ : fputs ("th.vnsra.v", asm_out_file);
+ return p+7;
+ }
+
+ if (get_attr_type (current_output_insn) == TYPE_VNCLIP)
+ {
+ if (strstr (p, "vnclipu"))
+ {
+ fputs ("th.vnclipu.v", asm_out_file);
+ return p+9;
+ }
+ else
+ {
+ fputs ("th.vnclip.v", asm_out_file);
+ return p+8;
+ }
+ }
+
+ if (get_attr_type (current_output_insn) == TYPE_VMPOP)
+ {
+ fputs ("th.vmpopc", asm_out_file);
+ return p+5;
+ }
+
+ if (get_attr_type (current_output_insn) == TYPE_VMFFS)
+ {
+ fputs ("th.vmfirst", asm_out_file);
+ return p+6;
+ }
+
+ if (get_attr_type (current_output_insn) == TYPE_VFNCVTFTOI ||
+ get_attr_type (current_output_insn) == TYPE_VFNCVTITOF)
+ {
+ if (strstr (p, "xu"))
+ {
+ get_attr_type (current_output_insn) == TYPE_VFNCVTFTOI
+ ? fputs ("th.vfncvt.xu.f.v", asm_out_file)
+ : fputs ("th.vfncvt.f.xu.v", asm_out_file);
+ return p+13;
+ }
+ else
+ {
+ get_attr_type (current_output_insn) == TYPE_VFNCVTFTOI
+ ? fputs ("th.vfncvt.x.f.v", asm_out_file)
+ : fputs ("th.vfncvt.f.x.v", asm_out_file);
+ return p+12;
+ }
+ }
+
+ if (get_attr_type (current_output_insn) == TYPE_VFNCVTFTOF)
+ {
+ fputs ("th.vfncvt.f.f.v", asm_out_file);
+ return p+12;
+ }
+
+ if (get_attr_type (current_output_insn) == TYPE_VFREDU
+ && strstr (p, "sum"))
+ {
+ fputs ("th.vfredsum", asm_out_file);
+ return p+9;
+ }
+
+ if (get_attr_type (current_output_insn) == TYPE_VFWREDU
+ && strstr (p, "sum"))
+ {
+ fputs ("th.vfwredsum", asm_out_file);
+ return p+10;
+ }
+
+ if (p[0] == 'v')
+ fputs ("th.", asm_out_file);
+ }
+
+ return p;
+}
+
/* Implement TARGET_PRINT_OPERAND_ADDRESS for XTheadMemIdx. */
bool
@@ -902,7 +1141,7 @@ th_print_operand_address (FILE *file, machine_mode mode, rtx x)
return true;
case ADDRESS_REG_WB:
- fprintf (file, "(%s),%ld,%u", reg_names[REGNO (addr.reg)],
+ fprintf (file, "(%s),"HOST_WIDE_INT_PRINT_DEC",%u", reg_names[REGNO (addr.reg)],
INTVAL (addr.offset) >> addr.shift, addr.shift);
return true;
diff --git a/gcc/config/riscv/vector-crypto.md b/gcc/config/riscv/vector-crypto.md
index 9625014..519c6a1 100755
--- a/gcc/config/riscv/vector-crypto.md
+++ b/gcc/config/riscv/vector-crypto.md
@@ -81,7 +81,7 @@
(define_int_iterator UNSPEC_VRBB8 [UNSPEC_VBREV UNSPEC_VBREV8 UNSPEC_VREV8])
-(define_int_iterator UNSPEC_CLMUL [UNSPEC_VCLMUL UNSPEC_VCLMULH])
+(define_int_iterator UNSPEC_CLMUL_VC [UNSPEC_VCLMUL UNSPEC_VCLMULH])
(define_int_iterator UNSPEC_CRYPTO_VV [UNSPEC_VGMUL UNSPEC_VAESEFVV UNSPEC_VAESEMVV
UNSPEC_VAESDFVV UNSPEC_VAESDMVV UNSPEC_VAESEFVS
@@ -377,7 +377,7 @@
(reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
(unspec:VI_D
[(match_operand:VI_D 3 "register_operand" "vr, vr,vr, vr")
- (match_operand:VI_D 4 "register_operand" "vr, vr,vr, vr")]UNSPEC_CLMUL)
+ (match_operand:VI_D 4 "register_operand" "vr, vr,vr, vr")] UNSPEC_CLMUL_VC)
(match_operand:VI_D 2 "vector_merge_operand" "vu, vu, 0, 0")))]
"TARGET_ZVBC"
"vclmul<h>.vv\t%0,%3,%4%p1"
@@ -399,7 +399,7 @@
(unspec:VI_D
[(vec_duplicate:VI_D
(match_operand:<VEL> 4 "register_operand"))
- (match_operand:VI_D 3 "register_operand")]UNSPEC_CLMUL)
+ (match_operand:VI_D 3 "register_operand")] UNSPEC_CLMUL_VC)
(match_operand:VI_D 2 "vector_merge_operand")))]
"TARGET_ZVBC"
{
@@ -432,7 +432,7 @@
(unspec:VI_D
[(vec_duplicate:VI_D
(match_operand:<VEL> 4 "reg_or_0_operand" "rJ, rJ,rJ, rJ"))
- (match_operand:VI_D 3 "register_operand" "vr, vr,vr, vr")]UNSPEC_CLMUL)
+ (match_operand:VI_D 3 "register_operand" "vr, vr,vr, vr")] UNSPEC_CLMUL_VC)
(match_operand:VI_D 2 "vector_merge_operand" "vu, vu, 0, 0")))]
"TARGET_ZVBC"
"vclmul<h>.vx\t%0,%3,%4%p1"
@@ -454,7 +454,7 @@
[(vec_duplicate:VI_D
(sign_extend:<VEL>
(match_operand:<VSUBEL> 4 "reg_or_0_operand" " rJ, rJ,rJ, rJ")))
- (match_operand:VI_D 3 "register_operand" "vr, vr,vr, vr")]UNSPEC_CLMUL)
+ (match_operand:VI_D 3 "register_operand" "vr, vr,vr, vr")] UNSPEC_CLMUL_VC)
(match_operand:VI_D 2 "vector_merge_operand" "vu, vu, 0, 0")))]
"TARGET_ZVBC"
"vclmul<h>.vx\t%0,%3,%4%p1"
diff --git a/gcc/config/riscv/vector.md b/gcc/config/riscv/vector.md
index ee4ee05..ab6e099 100644
--- a/gcc/config/riscv/vector.md
+++ b/gcc/config/riscv/vector.md
@@ -87,7 +87,7 @@
;; check. However, we need default value of SEW for vsetvl instruction since there
;; is no field for ratio in the vsetvl instruction encoding.
(define_attr "sew" ""
- (cond [(eq_attr "mode" "RVVMF64BI,RVVMF32BI,RVVMF16BI,RVVMF8BI,RVVMF4BI,RVVMF2BI,RVVM1BI,\
+ (cond [(eq_attr "mode" "RVVMF8BI,RVVMF4BI,RVVMF2BI,RVVM1BI,\
RVVM8QI,RVVM4QI,RVVM2QI,RVVM1QI,RVVMF2QI,RVVMF4QI,RVVMF8QI,\
RVVM1x8QI,RVVMF2x8QI,RVVMF4x8QI,RVVMF8x8QI,\
RVVM1x7QI,RVVMF2x7QI,RVVMF4x7QI,RVVMF8x7QI,\
@@ -99,6 +99,18 @@
V1QI,V2QI,V4QI,V8QI,V16QI,V32QI,V64QI,V128QI,V256QI,V512QI,V1024QI,V2048QI,V4096QI,\
V1BI,V2BI,V4BI,V8BI,V16BI,V32BI,V64BI,V128BI,V256BI,V512BI,V1024BI,V2048BI,V4096BI")
(const_int 8)
+ (eq_attr "mode" "RVVMF16BI")
+ (if_then_else (match_test "TARGET_XTHEADVECTOR")
+ (const_int 16)
+ (const_int 8))
+ (eq_attr "mode" "RVVMF32BI")
+ (if_then_else (match_test "TARGET_XTHEADVECTOR")
+ (const_int 32)
+ (const_int 8))
+ (eq_attr "mode" "RVVMF64BI")
+ (if_then_else (match_test "TARGET_XTHEADVECTOR")
+ (const_int 64)
+ (const_int 8))
(eq_attr "mode" "RVVM8HI,RVVM4HI,RVVM2HI,RVVM1HI,RVVMF2HI,RVVMF4HI,\
RVVM1x8HI,RVVMF2x8HI,RVVMF4x8HI,\
RVVM1x7HI,RVVMF2x7HI,RVVMF4x7HI,\
@@ -159,9 +171,9 @@
(eq_attr "mode" "RVVM4QI,RVVMF2BI") (symbol_ref "riscv_vector::LMUL_4")
(eq_attr "mode" "RVVM2QI,RVVMF4BI") (symbol_ref "riscv_vector::LMUL_2")
(eq_attr "mode" "RVVM1QI,RVVMF8BI") (symbol_ref "riscv_vector::LMUL_1")
- (eq_attr "mode" "RVVMF2QI,RVVMF16BI") (symbol_ref "riscv_vector::LMUL_F2")
- (eq_attr "mode" "RVVMF4QI,RVVMF32BI") (symbol_ref "riscv_vector::LMUL_F4")
- (eq_attr "mode" "RVVMF8QI,RVVMF64BI") (symbol_ref "riscv_vector::LMUL_F8")
+ (eq_attr "mode" "RVVMF2QI,RVVMF16BI") (symbol_ref "TARGET_XTHEADVECTOR ? riscv_vector::LMUL_1 : riscv_vector::LMUL_F2")
+ (eq_attr "mode" "RVVMF4QI,RVVMF32BI") (symbol_ref "TARGET_XTHEADVECTOR ? riscv_vector::LMUL_1 : riscv_vector::LMUL_F4")
+ (eq_attr "mode" "RVVMF8QI,RVVMF64BI") (symbol_ref "TARGET_XTHEADVECTOR ? riscv_vector::LMUL_1 : riscv_vector::LMUL_F8")
(eq_attr "mode" "RVVM8HI") (symbol_ref "riscv_vector::LMUL_8")
(eq_attr "mode" "RVVM4HI") (symbol_ref "riscv_vector::LMUL_4")
(eq_attr "mode" "RVVM2HI") (symbol_ref "riscv_vector::LMUL_2")
@@ -421,7 +433,7 @@
vialu,vshift,vicmp,vimul,vidiv,vsalu,\
vext,viwalu,viwmul,vicalu,vnshift,\
vimuladd,vimerge,vaalu,vsmul,vsshift,\
- vnclip,viminmax,viwmuladd,vmffs,vmsfs,\
+ vnclip,viminmax,viwmuladd,\
vmiota,vmidx,vfalu,vfmul,vfminmax,vfdiv,\
vfwalu,vfwmul,vfsqrt,vfrecp,vfsgnj,vfcmp,\
vfmerge,vfcvtitof,vfcvtftoi,vfwcvtitof,\
@@ -436,6 +448,10 @@
vaeskf1,vaeskf2,vaesz,vsha2ms,vsha2ch,vsha2cl,vsm4k,vsm4r,\
vsm3me,vsm3c")
(const_int INVALID_ATTRIBUTE)
+ (and (eq_attr "type" "vlde,vste,vlsegde,vssegte,vlsegds,vssegts,\
+ vlsegdff,vssegtux,vlsegdox,vlsegdux")
+ (match_test "TARGET_XTHEADVECTOR"))
+ (const_int INVALID_ATTRIBUTE)
(eq_attr "mode" "RVVM8QI,RVVM1BI") (const_int 1)
(eq_attr "mode" "RVVM4QI,RVVMF2BI") (const_int 2)
(eq_attr "mode" "RVVM2QI,RVVMF4BI") (const_int 4)
@@ -905,6 +921,8 @@
(symbol_ref "riscv_vector::FRM_DYN")]
(symbol_ref "riscv_vector::FRM_NONE")))
+(include "thead-vector.md")
+
;; -----------------------------------------------------------------
;; ---- Miscellaneous Operations
;; -----------------------------------------------------------------
@@ -1078,6 +1096,12 @@
- We can not leave it to TARGET_SECONDARY_RELOAD since it happens
before spilling. The clobber scratch is used by spilling fractional
registers in IRA/LRA so it's too early. */
+ if (TARGET_XTHEADVECTOR)
+ {
+ emit_insn (gen_pred_th_whole_mov (<MODE>mode, operands[0], operands[1],
+ RVV_VLMAX, GEN_INT(riscv_vector::VLMAX)));
+ DONE;
+ }
if (riscv_vector::legitimize_move (operands[0], &operands[1]))
DONE;
@@ -1114,7 +1138,7 @@
(define_insn "*mov<mode>_whole"
[(set (match_operand:V_WHOLE 0 "reg_or_mem_operand" "=vr, m,vr")
(match_operand:V_WHOLE 1 "reg_or_mem_operand" " m,vr,vr"))]
- "TARGET_VECTOR"
+ "TARGET_VECTOR && !TARGET_XTHEADVECTOR"
"@
vl%m1re<sew>.v\t%0,%1
vs%m1r.v\t%1,%0
@@ -1135,6 +1159,13 @@
(match_operand:VB 1 "general_operand"))]
"TARGET_VECTOR"
{
+ if (TARGET_XTHEADVECTOR)
+ {
+ emit_insn (gen_pred_th_whole_mov (<MODE>mode, operands[0], operands[1],
+ RVV_VLMAX, GEN_INT(riscv_vector::VLMAX)));
+ DONE;
+ }
+
if (riscv_vector::legitimize_move (operands[0], &operands[1]))
DONE;
})
@@ -1142,7 +1173,7 @@
(define_insn "*mov<mode>"
[(set (match_operand:VB 0 "register_operand" "=vr")
(match_operand:VB 1 "register_operand" " vr"))]
- "TARGET_VECTOR"
+ "TARGET_VECTOR && !TARGET_XTHEADVECTOR"
"vmv1r.v\t%0,%1"
[(set_attr "type" "vmov")
(set_attr "mode" "<MODE>")])
@@ -1946,8 +1977,15 @@
(match_operand:V_VLS 2 "vector_merge_operand")))]
"TARGET_VECTOR"
{
+ /* Transform vmv.v.x/vfmv.v.f (avl = 1) into vmv.s.x since vmv.s.x/vfmv.s.f
+ has better chances to do vsetvl fusion in vsetvl pass. */
+ if (riscv_vector::splat_to_scalar_move_p (operands))
+ {
+ operands[1] = riscv_vector::gen_scalar_move_mask (<VM>mode);
+ operands[3] = force_reg (<VEL>mode, operands[3]);
+ }
/* Handle vmv.s.x instruction (Wb1 mask) which has memory scalar. */
- if (satisfies_constraint_Wdm (operands[3]))
+ else if (satisfies_constraint_Wdm (operands[3]))
{
if (satisfies_constraint_Wb1 (operands[1]))
{
@@ -3229,7 +3267,8 @@
[(set_attr "type" "vicalu")
(set_attr "mode" "<MODE>")
(set_attr "vl_op_idx" "4")
- (set (attr "avl_type_idx") (const_int 5))])
+ (set (attr "avl_type_idx") (const_int 5))
+ (set_attr "spec_restriction" "thv,none,none")])
(define_insn "@pred_msbc<mode>"
[(set (match_operand:<VM> 0 "register_operand" "=vr, vr, &vr")
@@ -3248,7 +3287,8 @@
[(set_attr "type" "vicalu")
(set_attr "mode" "<MODE>")
(set_attr "vl_op_idx" "4")
- (set (attr "avl_type_idx") (const_int 5))])
+ (set (attr "avl_type_idx") (const_int 5))
+ (set_attr "spec_restriction" "thv,thv,none")])
(define_insn "@pred_madc<mode>_scalar"
[(set (match_operand:<VM> 0 "register_operand" "=vr, &vr")
@@ -3268,7 +3308,8 @@
[(set_attr "type" "vicalu")
(set_attr "mode" "<MODE>")
(set_attr "vl_op_idx" "4")
- (set (attr "avl_type_idx") (const_int 5))])
+ (set (attr "avl_type_idx") (const_int 5))
+ (set_attr "spec_restriction" "thv,none")])
(define_insn "@pred_msbc<mode>_scalar"
[(set (match_operand:<VM> 0 "register_operand" "=vr, &vr")
@@ -3288,7 +3329,8 @@
[(set_attr "type" "vicalu")
(set_attr "mode" "<MODE>")
(set_attr "vl_op_idx" "4")
- (set (attr "avl_type_idx") (const_int 5))])
+ (set (attr "avl_type_idx") (const_int 5))
+ (set_attr "spec_restriction" "thv,none")])
(define_expand "@pred_madc<mode>_scalar"
[(set (match_operand:<VM> 0 "register_operand")
@@ -3337,7 +3379,8 @@
[(set_attr "type" "vicalu")
(set_attr "mode" "<MODE>")
(set_attr "vl_op_idx" "4")
- (set (attr "avl_type_idx") (const_int 5))])
+ (set (attr "avl_type_idx") (const_int 5))
+ (set_attr "spec_restriction" "thv,none")])
(define_insn "*pred_madc<mode>_extended_scalar"
[(set (match_operand:<VM> 0 "register_operand" "=vr, &vr")
@@ -3358,7 +3401,8 @@
[(set_attr "type" "vicalu")
(set_attr "mode" "<MODE>")
(set_attr "vl_op_idx" "4")
- (set (attr "avl_type_idx") (const_int 5))])
+ (set (attr "avl_type_idx") (const_int 5))
+ (set_attr "spec_restriction" "thv,none")])
(define_expand "@pred_msbc<mode>_scalar"
[(set (match_operand:<VM> 0 "register_operand")
@@ -3407,7 +3451,8 @@
[(set_attr "type" "vicalu")
(set_attr "mode" "<MODE>")
(set_attr "vl_op_idx" "4")
- (set (attr "avl_type_idx") (const_int 5))])
+ (set (attr "avl_type_idx") (const_int 5))
+ (set_attr "spec_restriction" "thv,none")])
(define_insn "*pred_msbc<mode>_extended_scalar"
[(set (match_operand:<VM> 0 "register_operand" "=vr, &vr")
@@ -3428,7 +3473,8 @@
[(set_attr "type" "vicalu")
(set_attr "mode" "<MODE>")
(set_attr "vl_op_idx" "4")
- (set (attr "avl_type_idx") (const_int 5))])
+ (set (attr "avl_type_idx") (const_int 5))
+ (set_attr "spec_restriction" "thv,none")])
(define_insn "@pred_madc<mode>_overflow"
[(set (match_operand:<VM> 0 "register_operand" "=vr, &vr, &vr")
@@ -3446,7 +3492,8 @@
[(set_attr "type" "vicalu")
(set_attr "mode" "<MODE>")
(set_attr "vl_op_idx" "3")
- (set (attr "avl_type_idx") (const_int 4))])
+ (set (attr "avl_type_idx") (const_int 4))
+ (set_attr "spec_restriction" "thv,none,none")])
(define_insn "@pred_msbc<mode>_overflow"
[(set (match_operand:<VM> 0 "register_operand" "=vr, vr, &vr, &vr")
@@ -3464,7 +3511,8 @@
[(set_attr "type" "vicalu")
(set_attr "mode" "<MODE>")
(set_attr "vl_op_idx" "3")
- (set (attr "avl_type_idx") (const_int 4))])
+ (set (attr "avl_type_idx") (const_int 4))
+ (set_attr "spec_restriction" "thv,thv,none,none")])
(define_insn "@pred_madc<mode>_overflow_scalar"
[(set (match_operand:<VM> 0 "register_operand" "=vr, &vr")
@@ -3483,7 +3531,8 @@
[(set_attr "type" "vicalu")
(set_attr "mode" "<MODE>")
(set_attr "vl_op_idx" "3")
- (set (attr "avl_type_idx") (const_int 4))])
+ (set (attr "avl_type_idx") (const_int 4))
+ (set_attr "spec_restriction" "thv,none")])
(define_insn "@pred_msbc<mode>_overflow_scalar"
[(set (match_operand:<VM> 0 "register_operand" "=vr, &vr")
@@ -3502,7 +3551,8 @@
[(set_attr "type" "vicalu")
(set_attr "mode" "<MODE>")
(set_attr "vl_op_idx" "3")
- (set (attr "avl_type_idx") (const_int 4))])
+ (set (attr "avl_type_idx") (const_int 4))
+ (set_attr "spec_restriction" "thv,none")])
(define_expand "@pred_madc<mode>_overflow_scalar"
[(set (match_operand:<VM> 0 "register_operand")
@@ -3549,7 +3599,8 @@
[(set_attr "type" "vicalu")
(set_attr "mode" "<MODE>")
(set_attr "vl_op_idx" "3")
- (set (attr "avl_type_idx") (const_int 4))])
+ (set (attr "avl_type_idx") (const_int 4))
+ (set_attr "spec_restriction" "thv,none")])
(define_insn "*pred_madc<mode>_overflow_extended_scalar"
[(set (match_operand:<VM> 0 "register_operand" "=vr, &vr")
@@ -3569,7 +3620,8 @@
[(set_attr "type" "vicalu")
(set_attr "mode" "<MODE>")
(set_attr "vl_op_idx" "3")
- (set (attr "avl_type_idx") (const_int 4))])
+ (set (attr "avl_type_idx") (const_int 4))
+ (set_attr "spec_restriction" "thv,none")])
(define_expand "@pred_msbc<mode>_overflow_scalar"
[(set (match_operand:<VM> 0 "register_operand")
@@ -3616,7 +3668,8 @@
[(set_attr "type" "vicalu")
(set_attr "mode" "<MODE>")
(set_attr "vl_op_idx" "3")
- (set (attr "avl_type_idx") (const_int 4))])
+ (set (attr "avl_type_idx") (const_int 4))
+ (set_attr "spec_restriction" "thv,none")])
(define_insn "*pred_msbc<mode>_overflow_extended_scalar"
[(set (match_operand:<VM> 0 "register_operand" "=vr, &vr")
@@ -3636,7 +3689,8 @@
[(set_attr "type" "vicalu")
(set_attr "mode" "<MODE>")
(set_attr "vl_op_idx" "3")
- (set (attr "avl_type_idx") (const_int 4))])
+ (set (attr "avl_type_idx") (const_int 4))
+ (set_attr "spec_restriction" "thv,none")])
;; -------------------------------------------------------------------------------
;; ---- Predicated integer unary operations
@@ -3956,7 +4010,8 @@
"TARGET_VECTOR"
"vn<insn>.w%o4\t%0,%3,%v4%p1"
[(set_attr "type" "vnshift")
- (set_attr "mode" "<V_DOUBLE_TRUNC>")])
+ (set_attr "mode" "<V_DOUBLE_TRUNC>")
+ (set_attr "spec_restriction" "none,none,thv,thv,none,thv,none,none,none,thv,none,none")])
(define_insn "@pred_narrow_<optab><mode>_scalar"
[(set (match_operand:<V_DOUBLE_TRUNC> 0 "register_operand" "=vd, vd, vr, vr, &vr, &vr")
@@ -3977,7 +4032,8 @@
"TARGET_VECTOR"
"vn<insn>.w%o4\t%0,%3,%4%p1"
[(set_attr "type" "vnshift")
- (set_attr "mode" "<V_DOUBLE_TRUNC>")])
+ (set_attr "mode" "<V_DOUBLE_TRUNC>")
+ (set_attr "spec_restriction" "none,none,thv,thv,none,none")])
;; vncvt.x.x.w
(define_insn "@pred_trunc<mode>"
@@ -4001,7 +4057,8 @@
(set_attr "vl_op_idx" "4")
(set (attr "ta") (symbol_ref "riscv_vector::get_ta(operands[5])"))
(set (attr "ma") (symbol_ref "riscv_vector::get_ma(operands[6])"))
- (set (attr "avl_type_idx") (const_int 7))])
+ (set (attr "avl_type_idx") (const_int 7))
+ (set_attr "spec_restriction" "none,none,thv,thv,none,none")])
;; -------------------------------------------------------------------------------
;; ---- Predicated fixed-point operations
@@ -4407,7 +4464,8 @@
"TARGET_VECTOR"
"vnclip<v_su>.w%o4\t%0,%3,%v4%p1"
[(set_attr "type" "vnclip")
- (set_attr "mode" "<V_DOUBLE_TRUNC>")])
+ (set_attr "mode" "<V_DOUBLE_TRUNC>")
+ (set_attr "spec_restriction" "thv,thv,thv,thv,thv,thv,none,none,thv,thv,none,none")])
(define_insn "@pred_narrow_clip<v_su><mode>_scalar"
[(set (match_operand:<V_DOUBLE_TRUNC> 0 "register_operand" "=vd, vd, vr, vr, &vr, &vr")
@@ -4429,7 +4487,8 @@
"TARGET_VECTOR"
"vnclip<v_su>.w%o4\t%0,%3,%4%p1"
[(set_attr "type" "vnclip")
- (set_attr "mode" "<V_DOUBLE_TRUNC>")])
+ (set_attr "mode" "<V_DOUBLE_TRUNC>")
+ (set_attr "spec_restriction" "thv,thv,thv,thv,none,none")])
;; -------------------------------------------------------------------------------
;; ---- Predicated integer comparison operations
@@ -4480,23 +4539,24 @@
;; We don't use early-clobber for LMUL <= 1 to get better codegen.
(define_insn "*pred_cmp<mode>"
- [(set (match_operand:<VM> 0 "register_operand" "=vr, vr, vr, vr")
+ [(set (match_operand:<VM> 0 "register_operand" "=vr, vr, vr, vr, &vr, &vr, &vr, &vr")
(if_then_else:<VM>
(unspec:<VM>
- [(match_operand:<VM> 1 "vector_mask_operand" "vmWc1,vmWc1,vmWc1,vmWc1")
- (match_operand 6 "vector_length_operand" " rK, rK, rK, rK")
- (match_operand 7 "const_int_operand" " i, i, i, i")
- (match_operand 8 "const_int_operand" " i, i, i, i")
+ [(match_operand:<VM> 1 "vector_mask_operand" "vmWc1,vmWc1,vmWc1,vmWc1,vmWc1,vmWc1,vmWc1,vmWc1")
+ (match_operand 6 "vector_length_operand" " rK, rK, rK, rK, rK, rK, rK, rK")
+ (match_operand 7 "const_int_operand" " i, i, i, i, i, i, i, i")
+ (match_operand 8 "const_int_operand" " i, i, i, i, i, i, i, i")
(reg:SI VL_REGNUM)
(reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
(match_operator:<VM> 3 "comparison_except_ltge_operator"
- [(match_operand:V_VLSI 4 "register_operand" " vr, vr, vr, vr")
- (match_operand:V_VLSI 5 "vector_arith_operand" " vr, vr, vi, vi")])
- (match_operand:<VM> 2 "vector_merge_operand" " vu, 0, vu, 0")))]
+ [(match_operand:V_VLSI 4 "register_operand" " vr, vr, vr, vr, vr, vr, vr, vr")
+ (match_operand:V_VLSI 5 "vector_arith_operand" " vr, vr, vi, vi, vr, vr, vi, vi")])
+ (match_operand:<VM> 2 "vector_merge_operand" " vu, 0, vu, 0, vu, 0, vu, 0")))]
"TARGET_VECTOR && riscv_vector::cmp_lmul_le_one (<MODE>mode)"
"vms%B3.v%o5\t%0,%4,%v5%p1"
[(set_attr "type" "vicmp")
- (set_attr "mode" "<MODE>")])
+ (set_attr "mode" "<MODE>")
+ (set_attr "spec_restriction" "thv,thv,thv,thv,rvv,rvv,rvv,rvv")])
;; We use early-clobber for source LMUL > dest LMUL.
(define_insn "*pred_cmp<mode>_narrow"
@@ -4516,7 +4576,8 @@
"TARGET_VECTOR && riscv_vector::cmp_lmul_gt_one (<MODE>mode)"
"vms%B3.v%o5\t%0,%4,%v5%p1"
[(set_attr "type" "vicmp")
- (set_attr "mode" "<MODE>")])
+ (set_attr "mode" "<MODE>")
+ (set_attr "spec_restriction" "none,thv,thv,thv,thv,thv,thv,none,none")])
(define_expand "@pred_ltge<mode>"
[(set (match_operand:<VM> 0 "register_operand")
@@ -4560,23 +4621,24 @@
;; We don't use early-clobber for LMUL <= 1 to get better codegen.
(define_insn "*pred_ltge<mode>"
- [(set (match_operand:<VM> 0 "register_operand" "=vr, vr, vr, vr")
+ [(set (match_operand:<VM> 0 "register_operand" "=vr, vr, vr, vr, &vr, &vr, &vr, &vr")
(if_then_else:<VM>
(unspec:<VM>
- [(match_operand:<VM> 1 "vector_mask_operand" "vmWc1,vmWc1,vmWc1,vmWc1")
- (match_operand 6 "vector_length_operand" " rK, rK, rK, rK")
- (match_operand 7 "const_int_operand" " i, i, i, i")
- (match_operand 8 "const_int_operand" " i, i, i, i")
+ [(match_operand:<VM> 1 "vector_mask_operand" "vmWc1,vmWc1,vmWc1,vmWc1,vmWc1,vmWc1,vmWc1,vmWc1")
+ (match_operand 6 "vector_length_operand" " rK, rK, rK, rK, rK, rK, rK, rK")
+ (match_operand 7 "const_int_operand" " i, i, i, i, i, i, i, i")
+ (match_operand 8 "const_int_operand" " i, i, i, i, i, i, i, i")
(reg:SI VL_REGNUM)
(reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
(match_operator:<VM> 3 "ltge_operator"
- [(match_operand:V_VLSI 4 "register_operand" " vr, vr, vr, vr")
- (match_operand:V_VLSI 5 "vector_neg_arith_operand" " vr, vr, vj, vj")])
- (match_operand:<VM> 2 "vector_merge_operand" " vu, 0, vu, 0")))]
+ [(match_operand:V_VLSI 4 "register_operand" " vr, vr, vr, vr, vr, vr, vr, vr")
+ (match_operand:V_VLSI 5 "vector_neg_arith_operand" " vr, vr, vj, vj, vr, vr, vj, vj")])
+ (match_operand:<VM> 2 "vector_merge_operand" " vu, 0, vu, 0, vu, 0, vu, 0")))]
"TARGET_VECTOR && riscv_vector::cmp_lmul_le_one (<MODE>mode)"
"vms%B3.v%o5\t%0,%4,%v5%p1"
[(set_attr "type" "vicmp")
- (set_attr "mode" "<MODE>")])
+ (set_attr "mode" "<MODE>")
+ (set_attr "spec_restriction" "thv,thv,thv,thv,rvv,rvv,rvv,rvv")])
;; We use early-clobber for source LMUL > dest LMUL.
(define_insn "*pred_ltge<mode>_narrow"
@@ -4596,7 +4658,8 @@
"TARGET_VECTOR && riscv_vector::cmp_lmul_gt_one (<MODE>mode)"
"vms%B3.v%o5\t%0,%4,%v5%p1"
[(set_attr "type" "vicmp")
- (set_attr "mode" "<MODE>")])
+ (set_attr "mode" "<MODE>")
+ (set_attr "spec_restriction" "none,thv,thv,thv,thv,thv,thv,none,none")])
(define_expand "@pred_cmp<mode>_scalar"
[(set (match_operand:<VM> 0 "register_operand")
@@ -4642,24 +4705,25 @@
;; We don't use early-clobber for LMUL <= 1 to get better codegen.
(define_insn "*pred_cmp<mode>_scalar"
- [(set (match_operand:<VM> 0 "register_operand" "=vr, vr")
+ [(set (match_operand:<VM> 0 "register_operand" "=vr, vr, &vr, &vr")
(if_then_else:<VM>
(unspec:<VM>
- [(match_operand:<VM> 1 "vector_mask_operand" "vmWc1,vmWc1")
- (match_operand 6 "vector_length_operand" " rK, rK")
- (match_operand 7 "const_int_operand" " i, i")
- (match_operand 8 "const_int_operand" " i, i")
+ [(match_operand:<VM> 1 "vector_mask_operand" "vmWc1,vmWc1,vmWc1,vmWc1")
+ (match_operand 6 "vector_length_operand" " rK, rK, rK, rK")
+ (match_operand 7 "const_int_operand" " i, i, i, i")
+ (match_operand 8 "const_int_operand" " i, i, i, i")
(reg:SI VL_REGNUM)
(reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
(match_operator:<VM> 3 "comparison_except_eqge_operator"
- [(match_operand:V_VLSI_QHS 4 "register_operand" " vr, vr")
+ [(match_operand:V_VLSI_QHS 4 "register_operand" " vr, vr, vr, vr")
(vec_duplicate:V_VLSI_QHS
- (match_operand:<VEL> 5 "register_operand" " r, r"))])
- (match_operand:<VM> 2 "vector_merge_operand" " vu, 0")))]
+ (match_operand:<VEL> 5 "register_operand" " r, r, r, r"))])
+ (match_operand:<VM> 2 "vector_merge_operand" " vu, 0, vu, 0")))]
"TARGET_VECTOR && riscv_vector::cmp_lmul_le_one (<MODE>mode)"
"vms%B3.vx\t%0,%4,%5%p1"
[(set_attr "type" "vicmp")
- (set_attr "mode" "<MODE>")])
+ (set_attr "mode" "<MODE>")
+ (set_attr "spec_restriction" "thv,thv,rvv,rvv")])
;; We use early-clobber for source LMUL > dest LMUL.
(define_insn "*pred_cmp<mode>_scalar_narrow"
@@ -4680,7 +4744,8 @@
"TARGET_VECTOR && riscv_vector::cmp_lmul_gt_one (<MODE>mode)"
"vms%B3.vx\t%0,%4,%5%p1"
[(set_attr "type" "vicmp")
- (set_attr "mode" "<MODE>")])
+ (set_attr "mode" "<MODE>")
+ (set_attr "spec_restriction" "none,thv,thv,none,none")])
(define_expand "@pred_eqne<mode>_scalar"
[(set (match_operand:<VM> 0 "register_operand")
@@ -4726,24 +4791,25 @@
;; We don't use early-clobber for LMUL <= 1 to get better codegen.
(define_insn "*pred_eqne<mode>_scalar"
- [(set (match_operand:<VM> 0 "register_operand" "=vr, vr")
+ [(set (match_operand:<VM> 0 "register_operand" "=vr, vr, &vr, &vr")
(if_then_else:<VM>
(unspec:<VM>
- [(match_operand:<VM> 1 "vector_mask_operand" "vmWc1,vmWc1")
- (match_operand 6 "vector_length_operand" " rK, rK")
- (match_operand 7 "const_int_operand" " i, i")
- (match_operand 8 "const_int_operand" " i, i")
+ [(match_operand:<VM> 1 "vector_mask_operand" "vmWc1,vmWc1,vmWc1,vmWc1")
+ (match_operand 6 "vector_length_operand" " rK, rK, rK, rK")
+ (match_operand 7 "const_int_operand" " i, i, i, i")
+ (match_operand 8 "const_int_operand" " i, i, i, i")
(reg:SI VL_REGNUM)
(reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
(match_operator:<VM> 3 "equality_operator"
[(vec_duplicate:V_VLSI_QHS
- (match_operand:<VEL> 5 "register_operand" " r, r"))
- (match_operand:V_VLSI_QHS 4 "register_operand" " vr, vr")])
- (match_operand:<VM> 2 "vector_merge_operand" " vu, 0")))]
+ (match_operand:<VEL> 5 "register_operand" " r, r, r, r"))
+ (match_operand:V_VLSI_QHS 4 "register_operand" " vr, vr, vr, vr")])
+ (match_operand:<VM> 2 "vector_merge_operand" " vu, 0, vu, 0")))]
"TARGET_VECTOR && riscv_vector::cmp_lmul_le_one (<MODE>mode)"
"vms%B3.vx\t%0,%4,%5%p1"
[(set_attr "type" "vicmp")
- (set_attr "mode" "<MODE>")])
+ (set_attr "mode" "<MODE>")
+ (set_attr "spec_restriction" "thv,thv,rvv,rvv")])
;; We use early-clobber for source LMUL > dest LMUL.
(define_insn "*pred_eqne<mode>_scalar_narrow"
@@ -4764,7 +4830,8 @@
"TARGET_VECTOR && riscv_vector::cmp_lmul_gt_one (<MODE>mode)"
"vms%B3.vx\t%0,%4,%5%p1"
[(set_attr "type" "vicmp")
- (set_attr "mode" "<MODE>")])
+ (set_attr "mode" "<MODE>")
+ (set_attr "spec_restriction" "none,thv,thv,none,none")])
;; Handle GET_MODE_INNER (mode) = DImode. We need to split them since
;; we need to deal with SEW = 64 in RV32 system.
@@ -4891,24 +4958,25 @@
;; We don't use early-clobber for LMUL <= 1 to get better codegen.
(define_insn "*pred_cmp<mode>_scalar"
- [(set (match_operand:<VM> 0 "register_operand" "=vr, vr")
+ [(set (match_operand:<VM> 0 "register_operand" "=vr, vr, &vr, &vr")
(if_then_else:<VM>
(unspec:<VM>
- [(match_operand:<VM> 1 "vector_mask_operand" "vmWc1,vmWc1")
- (match_operand 6 "vector_length_operand" " rK, rK")
- (match_operand 7 "const_int_operand" " i, i")
- (match_operand 8 "const_int_operand" " i, i")
+ [(match_operand:<VM> 1 "vector_mask_operand" "vmWc1,vmWc1,vmWc1,vmWc1")
+ (match_operand 6 "vector_length_operand" " rK, rK, rK, rK")
+ (match_operand 7 "const_int_operand" " i, i, i, i")
+ (match_operand 8 "const_int_operand" " i, i, i, i")
(reg:SI VL_REGNUM)
(reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
(match_operator:<VM> 3 "comparison_except_eqge_operator"
- [(match_operand:V_VLSI_D 4 "register_operand" " vr, vr")
+ [(match_operand:V_VLSI_D 4 "register_operand" " vr, vr, vr, vr")
(vec_duplicate:V_VLSI_D
- (match_operand:<VEL> 5 "register_operand" " r, r"))])
- (match_operand:<VM> 2 "vector_merge_operand" " vu, 0")))]
+ (match_operand:<VEL> 5 "register_operand" " r, r, r, r"))])
+ (match_operand:<VM> 2 "vector_merge_operand" " vu, 0, vu, 0")))]
"TARGET_VECTOR && riscv_vector::cmp_lmul_le_one (<MODE>mode)"
"vms%B3.vx\t%0,%4,%5%p1"
[(set_attr "type" "vicmp")
- (set_attr "mode" "<MODE>")])
+ (set_attr "mode" "<MODE>")
+ (set_attr "spec_restriction" "thv,thv,rvv,rvv")])
;; We use early-clobber for source LMUL > dest LMUL.
(define_insn "*pred_cmp<mode>_scalar_narrow"
@@ -4929,28 +4997,30 @@
"TARGET_VECTOR && riscv_vector::cmp_lmul_gt_one (<MODE>mode)"
"vms%B3.vx\t%0,%4,%5%p1"
[(set_attr "type" "vicmp")
- (set_attr "mode" "<MODE>")])
+ (set_attr "mode" "<MODE>")
+ (set_attr "spec_restriction" "none,thv,thv,none,none")])
;; We don't use early-clobber for LMUL <= 1 to get better codegen.
(define_insn "*pred_eqne<mode>_scalar"
- [(set (match_operand:<VM> 0 "register_operand" "=vr, vr")
+ [(set (match_operand:<VM> 0 "register_operand" "=vr, vr, &vr, &vr")
(if_then_else:<VM>
(unspec:<VM>
- [(match_operand:<VM> 1 "vector_mask_operand" "vmWc1,vmWc1")
- (match_operand 6 "vector_length_operand" " rK, rK")
- (match_operand 7 "const_int_operand" " i, i")
- (match_operand 8 "const_int_operand" " i, i")
+ [(match_operand:<VM> 1 "vector_mask_operand" "vmWc1,vmWc1,vmWc1,vmWc1")
+ (match_operand 6 "vector_length_operand" " rK, rK, rK, rK")
+ (match_operand 7 "const_int_operand" " i, i, i, i")
+ (match_operand 8 "const_int_operand" " i, i, i, i")
(reg:SI VL_REGNUM)
(reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
(match_operator:<VM> 3 "equality_operator"
[(vec_duplicate:V_VLSI_D
- (match_operand:<VEL> 5 "register_operand" " r, r"))
- (match_operand:V_VLSI_D 4 "register_operand" " vr, vr")])
- (match_operand:<VM> 2 "vector_merge_operand" " vu, 0")))]
+ (match_operand:<VEL> 5 "register_operand" " r, r, r, r"))
+ (match_operand:V_VLSI_D 4 "register_operand" " vr, vr, vr, vr")])
+ (match_operand:<VM> 2 "vector_merge_operand" " vu, 0, vu, 0")))]
"TARGET_VECTOR && riscv_vector::cmp_lmul_le_one (<MODE>mode)"
"vms%B3.vx\t%0,%4,%5%p1"
[(set_attr "type" "vicmp")
- (set_attr "mode" "<MODE>")])
+ (set_attr "mode" "<MODE>")
+ (set_attr "spec_restriction" "thv,thv,rvv,rvv")])
;; We use early-clobber for source LMUL > dest LMUL.
(define_insn "*pred_eqne<mode>_scalar_narrow"
@@ -4971,7 +5041,8 @@
"TARGET_VECTOR && riscv_vector::cmp_lmul_gt_one (<MODE>mode)"
"vms%B3.vx\t%0,%4,%5%p1"
[(set_attr "type" "vicmp")
- (set_attr "mode" "<MODE>")])
+ (set_attr "mode" "<MODE>")
+ (set_attr "spec_restriction" "none,thv,thv,none,none")])
(define_insn "*pred_cmp<mode>_extended_scalar_merge_tie_mask"
[(set (match_operand:<VM> 0 "register_operand" "=vm")
@@ -5000,25 +5071,26 @@
;; We don't use early-clobber for LMUL <= 1 to get better codegen.
(define_insn "*pred_cmp<mode>_extended_scalar"
- [(set (match_operand:<VM> 0 "register_operand" "=vr, vr")
+ [(set (match_operand:<VM> 0 "register_operand" "=vr, vr, &vr, &vr")
(if_then_else:<VM>
(unspec:<VM>
- [(match_operand:<VM> 1 "vector_mask_operand" "vmWc1,vmWc1")
- (match_operand 6 "vector_length_operand" " rK, rK")
- (match_operand 7 "const_int_operand" " i, i")
- (match_operand 8 "const_int_operand" " i, i")
+ [(match_operand:<VM> 1 "vector_mask_operand" "vmWc1,vmWc1,vmWc1,vmWc1")
+ (match_operand 6 "vector_length_operand" " rK, rK, rK, rK")
+ (match_operand 7 "const_int_operand" " i, i, i, i")
+ (match_operand 8 "const_int_operand" " i, i, i, i")
(reg:SI VL_REGNUM)
(reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
(match_operator:<VM> 3 "comparison_except_eqge_operator"
- [(match_operand:V_VLSI_D 4 "register_operand" " vr, vr")
+ [(match_operand:V_VLSI_D 4 "register_operand" " vr, vr, vr, vr")
(vec_duplicate:V_VLSI_D
(sign_extend:<VEL>
- (match_operand:<VSUBEL> 5 "register_operand" " r, r")))])
- (match_operand:<VM> 2 "vector_merge_operand" " vu, 0")))]
+ (match_operand:<VSUBEL> 5 "register_operand" " r, r, r, r")))])
+ (match_operand:<VM> 2 "vector_merge_operand" " vu, 0, vu, 0")))]
"TARGET_VECTOR && riscv_vector::cmp_lmul_le_one (<MODE>mode) && !TARGET_64BIT"
"vms%B3.vx\t%0,%4,%5%p1"
[(set_attr "type" "vicmp")
- (set_attr "mode" "<MODE>")])
+ (set_attr "mode" "<MODE>")
+ (set_attr "spec_restriction" "thv,thv,rvv,rvv")])
(define_insn "*pred_cmp<mode>_extended_scalar_narrow"
[(set (match_operand:<VM> 0 "register_operand" "=vm, vr, vr, &vr, &vr")
@@ -5039,7 +5111,8 @@
"TARGET_VECTOR && riscv_vector::cmp_lmul_gt_one (<MODE>mode) && !TARGET_64BIT"
"vms%B3.vx\t%0,%4,%5%p1"
[(set_attr "type" "vicmp")
- (set_attr "mode" "<MODE>")])
+ (set_attr "mode" "<MODE>")
+ (set_attr "spec_restriction" "none,thv,thv,none,none")])
(define_insn "*pred_eqne<mode>_extended_scalar_merge_tie_mask"
[(set (match_operand:<VM> 0 "register_operand" "=vm")
@@ -5068,25 +5141,26 @@
;; We don't use early-clobber for LMUL <= 1 to get better codegen.
(define_insn "*pred_eqne<mode>_extended_scalar"
- [(set (match_operand:<VM> 0 "register_operand" "=vr, vr")
+ [(set (match_operand:<VM> 0 "register_operand" "=vr, vr, &vr, &vr")
(if_then_else:<VM>
(unspec:<VM>
- [(match_operand:<VM> 1 "vector_mask_operand" "vmWc1,vmWc1")
- (match_operand 6 "vector_length_operand" " rK, rK")
- (match_operand 7 "const_int_operand" " i, i")
- (match_operand 8 "const_int_operand" " i, i")
+ [(match_operand:<VM> 1 "vector_mask_operand" "vmWc1,vmWc1,vmWc1,vmWc1")
+ (match_operand 6 "vector_length_operand" " rK, rK, rK, rK")
+ (match_operand 7 "const_int_operand" " i, i, i, i")
+ (match_operand 8 "const_int_operand" " i, i, i, i")
(reg:SI VL_REGNUM)
(reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
(match_operator:<VM> 3 "equality_operator"
[(vec_duplicate:V_VLSI_D
(sign_extend:<VEL>
- (match_operand:<VSUBEL> 5 "register_operand" " r, r")))
- (match_operand:V_VLSI_D 4 "register_operand" " vr, vr")])
- (match_operand:<VM> 2 "vector_merge_operand" " vu, 0")))]
+ (match_operand:<VSUBEL> 5 "register_operand" " r, r, r, r")))
+ (match_operand:V_VLSI_D 4 "register_operand" " vr, vr, vr, vr")])
+ (match_operand:<VM> 2 "vector_merge_operand" " vu, 0, vu, 0")))]
"TARGET_VECTOR && riscv_vector::cmp_lmul_le_one (<MODE>mode) && !TARGET_64BIT"
"vms%B3.vx\t%0,%4,%5%p1"
[(set_attr "type" "vicmp")
- (set_attr "mode" "<MODE>")])
+ (set_attr "mode" "<MODE>")
+ (set_attr "spec_restriction" "thv,thv,rvv,rvv")])
(define_insn "*pred_eqne<mode>_extended_scalar_narrow"
[(set (match_operand:<VM> 0 "register_operand" "=vm, vr, vr, &vr, &vr")
@@ -5107,7 +5181,8 @@
"TARGET_VECTOR && riscv_vector::cmp_lmul_gt_one (<MODE>mode) && !TARGET_64BIT"
"vms%B3.vx\t%0,%4,%5%p1"
[(set_attr "type" "vicmp")
- (set_attr "mode" "<MODE>")])
+ (set_attr "mode" "<MODE>")
+ (set_attr "spec_restriction" "none,thv,thv,none,none")])
;; GE, vmsge.vx/vmsgeu.vx
;;
@@ -7296,23 +7371,24 @@
;; We don't use early-clobber for LMUL <= 1 to get better codegen.
(define_insn "*pred_cmp<mode>"
- [(set (match_operand:<VM> 0 "register_operand" "=vr, vr")
+ [(set (match_operand:<VM> 0 "register_operand" "=vr, vr, &vr, &vr")
(if_then_else:<VM>
(unspec:<VM>
- [(match_operand:<VM> 1 "vector_mask_operand" "vmWc1,vmWc1")
- (match_operand 6 "vector_length_operand" " rK, rK")
- (match_operand 7 "const_int_operand" " i, i")
- (match_operand 8 "const_int_operand" " i, i")
+ [(match_operand:<VM> 1 "vector_mask_operand" "vmWc1,vmWc1,vmWc1,vmWc1")
+ (match_operand 6 "vector_length_operand" " rK, rK, rK, rK")
+ (match_operand 7 "const_int_operand" " i, i, i, i")
+ (match_operand 8 "const_int_operand" " i, i, i, i")
(reg:SI VL_REGNUM)
(reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
(match_operator:<VM> 3 "signed_order_operator"
- [(match_operand:V_VLSF 4 "register_operand" " vr, vr")
- (match_operand:V_VLSF 5 "register_operand" " vr, vr")])
- (match_operand:<VM> 2 "vector_merge_operand" " vu, 0")))]
+ [(match_operand:V_VLSF 4 "register_operand" " vr, vr, vr, vr")
+ (match_operand:V_VLSF 5 "register_operand" " vr, vr, vr, vr")])
+ (match_operand:<VM> 2 "vector_merge_operand" " vu, 0, vu, 0")))]
"TARGET_VECTOR && riscv_vector::cmp_lmul_le_one (<MODE>mode)"
"vmf%B3.vv\t%0,%4,%5%p1"
[(set_attr "type" "vfcmp")
- (set_attr "mode" "<MODE>")])
+ (set_attr "mode" "<MODE>")
+ (set_attr "spec_restriction" "thv,thv,rvv,rvv")])
(define_insn "*pred_cmp<mode>_narrow_merge_tie_mask"
[(set (match_operand:<VM> 0 "register_operand" "=vm")
@@ -7355,7 +7431,8 @@
"TARGET_VECTOR && riscv_vector::cmp_lmul_gt_one (<MODE>mode)"
"vmf%B3.vv\t%0,%4,%5%p1"
[(set_attr "type" "vfcmp")
- (set_attr "mode" "<MODE>")])
+ (set_attr "mode" "<MODE>")
+ (set_attr "spec_restriction" "none,thv,thv,thv,thv,thv,thv,none,none")])
(define_expand "@pred_cmp<mode>_scalar"
[(set (match_operand:<VM> 0 "register_operand")
@@ -7401,24 +7478,25 @@
;; We don't use early-clobber for LMUL <= 1 to get better codegen.
(define_insn "*pred_cmp<mode>_scalar"
- [(set (match_operand:<VM> 0 "register_operand" "=vr, vr")
+ [(set (match_operand:<VM> 0 "register_operand" "=vr, vr, &vr, &vr")
(if_then_else:<VM>
(unspec:<VM>
- [(match_operand:<VM> 1 "vector_mask_operand" "vmWc1,vmWc1")
- (match_operand 6 "vector_length_operand" " rK, rK")
- (match_operand 7 "const_int_operand" " i, i")
- (match_operand 8 "const_int_operand" " i, i")
+ [(match_operand:<VM> 1 "vector_mask_operand" "vmWc1,vmWc1,vmWc1,vmWc1")
+ (match_operand 6 "vector_length_operand" " rK, rK, rK, rK")
+ (match_operand 7 "const_int_operand" " i, i, i, i")
+ (match_operand 8 "const_int_operand" " i, i, i, i")
(reg:SI VL_REGNUM)
(reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
(match_operator:<VM> 3 "signed_order_operator"
- [(match_operand:V_VLSF 4 "register_operand" " vr, vr")
+ [(match_operand:V_VLSF 4 "register_operand" " vr, vr, vr, vr")
(vec_duplicate:V_VLSF
- (match_operand:<VEL> 5 "register_operand" " f, f"))])
- (match_operand:<VM> 2 "vector_merge_operand" " vu, 0")))]
+ (match_operand:<VEL> 5 "register_operand" " f, f, f, f"))])
+ (match_operand:<VM> 2 "vector_merge_operand" " vu, 0, vu, 0")))]
"TARGET_VECTOR && riscv_vector::cmp_lmul_le_one (<MODE>mode)"
"vmf%B3.vf\t%0,%4,%5%p1"
[(set_attr "type" "vfcmp")
- (set_attr "mode" "<MODE>")])
+ (set_attr "mode" "<MODE>")
+ (set_attr "spec_restriction" "thv,thv,rvv,rvv")])
;; We use early-clobber for source LMUL > dest LMUL.
(define_insn "*pred_cmp<mode>_scalar_narrow"
@@ -7439,7 +7517,8 @@
"TARGET_VECTOR && riscv_vector::cmp_lmul_gt_one (<MODE>mode)"
"vmf%B3.vf\t%0,%4,%5%p1"
[(set_attr "type" "vfcmp")
- (set_attr "mode" "<MODE>")])
+ (set_attr "mode" "<MODE>")
+ (set_attr "spec_restriction" "none,thv,thv,none,none")])
(define_expand "@pred_eqne<mode>_scalar"
[(set (match_operand:<VM> 0 "register_operand")
@@ -7485,24 +7564,25 @@
;; We don't use early-clobber for LMUL <= 1 to get better codegen.
(define_insn "*pred_eqne<mode>_scalar"
- [(set (match_operand:<VM> 0 "register_operand" "=vr, vr")
+ [(set (match_operand:<VM> 0 "register_operand" "=vr, vr, &vr, &vr")
(if_then_else:<VM>
(unspec:<VM>
- [(match_operand:<VM> 1 "vector_mask_operand" "vmWc1,vmWc1")
- (match_operand 6 "vector_length_operand" " rK, rK")
- (match_operand 7 "const_int_operand" " i, i")
- (match_operand 8 "const_int_operand" " i, i")
+ [(match_operand:<VM> 1 "vector_mask_operand" "vmWc1,vmWc1,vmWc1,vmWc1")
+ (match_operand 6 "vector_length_operand" " rK, rK, rK, rK")
+ (match_operand 7 "const_int_operand" " i, i, i, i")
+ (match_operand 8 "const_int_operand" " i, i, i, i")
(reg:SI VL_REGNUM)
(reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
(match_operator:<VM> 3 "equality_operator"
[(vec_duplicate:V_VLSF
- (match_operand:<VEL> 5 "register_operand" " f, f"))
- (match_operand:V_VLSF 4 "register_operand" " vr, vr")])
- (match_operand:<VM> 2 "vector_merge_operand" " vu, 0")))]
+ (match_operand:<VEL> 5 "register_operand" " f, f, f, f"))
+ (match_operand:V_VLSF 4 "register_operand" " vr, vr, vr, vr")])
+ (match_operand:<VM> 2 "vector_merge_operand" " vu, 0, vu, 0")))]
"TARGET_VECTOR && riscv_vector::cmp_lmul_le_one (<MODE>mode)"
"vmf%B3.vf\t%0,%4,%5%p1"
[(set_attr "type" "vfcmp")
- (set_attr "mode" "<MODE>")])
+ (set_attr "mode" "<MODE>")
+ (set_attr "spec_restriction" "thv,thv,rvv,rvv")])
;; We use early-clobber for source LMUL > dest LMUL.
(define_insn "*pred_eqne<mode>_scalar_narrow"
@@ -7523,7 +7603,8 @@
"TARGET_VECTOR && riscv_vector::cmp_lmul_gt_one (<MODE>mode)"
"vmf%B3.vf\t%0,%4,%5%p1"
[(set_attr "type" "vfcmp")
- (set_attr "mode" "<MODE>")])
+ (set_attr "mode" "<MODE>")
+ (set_attr "spec_restriction" "none,thv,thv,none,none")])
;; -------------------------------------------------------------------------------
;; ---- Predicated floating-point merge
@@ -7743,7 +7824,8 @@
[(set_attr "type" "vfncvtftoi")
(set_attr "mode" "<VNCONVERT>")
(set (attr "frm_mode")
- (symbol_ref "riscv_vector::get_frm_mode (operands[8])"))])
+ (symbol_ref "riscv_vector::get_frm_mode (operands[8])"))
+ (set_attr "spec_restriction" "none,none,thv,thv,none,none")])
(define_insn "@pred_narrow_<fix_cvt><mode>"
[(set (match_operand:<VNCONVERT> 0 "register_operand" "=vd, vd, vr, vr, &vr, &vr")
@@ -7785,7 +7867,8 @@
[(set_attr "type" "vfncvtitof")
(set_attr "mode" "<VNCONVERT>")
(set (attr "frm_mode")
- (symbol_ref "riscv_vector::get_frm_mode (operands[8])"))])
+ (symbol_ref "riscv_vector::get_frm_mode (operands[8])"))
+ (set_attr "spec_restriction" "none,none,thv,thv,none,none")])
(define_insn "@pred_trunc<mode>"
[(set (match_operand:<V_DOUBLE_TRUNC> 0 "register_operand" "=vd, vd, vr, vr, &vr, &vr")
@@ -7808,7 +7891,8 @@
[(set_attr "type" "vfncvtftof")
(set_attr "mode" "<V_DOUBLE_TRUNC>")
(set (attr "frm_mode")
- (symbol_ref "riscv_vector::get_frm_mode (operands[8])"))])
+ (symbol_ref "riscv_vector::get_frm_mode (operands[8])"))
+ (set_attr "spec_restriction" "none,none,thv,thv,none,none")])
(define_insn "@pred_rod_trunc<mode>"
[(set (match_operand:<V_DOUBLE_TRUNC> 0 "register_operand" "=vd, vd, vr, vr, &vr, &vr")
diff --git a/gcc/config/rs6000/darwin.h b/gcc/config/rs6000/darwin.h
index b264284..e8b1949 100644
--- a/gcc/config/rs6000/darwin.h
+++ b/gcc/config/rs6000/darwin.h
@@ -113,6 +113,9 @@
-lSystem \
}"
+#undef DARWIN_HEAP_T_LIB
+#define DARWIN_HEAP_T_LIB " "
+
/* We want -fPIC by default, unless we're using -static to compile for
the kernel or some such. The "-faltivec" option should have been
called "-maltivec" all along. */
diff --git a/gcc/config/rs6000/rs6000-string.cc b/gcc/config/rs6000/rs6000-string.cc
index f707bb2..917f557 100644
--- a/gcc/config/rs6000/rs6000-string.cc
+++ b/gcc/config/rs6000/rs6000-string.cc
@@ -1950,11 +1950,13 @@ expand_block_compare (rtx operands[])
/* TARGET_POPCNTD is already guarded at expand cmpmemsi. */
gcc_assert (TARGET_POPCNTD);
- /* This case is complicated to handle because the subtract
- with carry instructions do not generate the 64-bit
- carry and so we must emit code to calculate it ourselves.
- We choose not to implement this yet. */
- if (TARGET_32BIT && TARGET_POWERPC64)
+ /* For P8, this case is complicated to handle because the subtract
+ with carry instructions do not generate the 64-bit carry and so
+ we must emit code to calculate it ourselves. We skip it on P8
+ but setb works well on P9. */
+ if (TARGET_32BIT
+ && TARGET_POWERPC64
+ && !TARGET_P9_MISC)
return false;
/* Allow this param to shut off all expansion. */
diff --git a/gcc/configure b/gcc/configure
index 4acb254..c83e09b 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -30351,8 +30351,41 @@ fi
;;
mips*-*-*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for explicit relocation support" >&5
-$as_echo_n "checking assembler for explicit relocation support... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for explicit relocation support: %pcrel_hi/%pcrel_lo" >&5
+$as_echo_n "checking assembler for explicit relocation support: %pcrel_hi/%pcrel_lo... " >&6; }
+if ${gcc_cv_as_mips_explicit_relocs_pcrel+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ gcc_cv_as_mips_explicit_relocs_pcrel=no
+ if test x$gcc_cv_as != x; then
+ $as_echo ' lui $4,%pcrel_hi(foo)' > conftest.s
+ if { ac_try='$gcc_cv_as $gcc_cv_as_flags -o conftest.o conftest.s >&5'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }
+ then
+ gcc_cv_as_mips_explicit_relocs_pcrel=yes
+ else
+ echo "configure: failed program was" >&5
+ cat conftest.s >&5
+ fi
+ rm -f conftest.o conftest.s
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_mips_explicit_relocs_pcrel" >&5
+$as_echo "$gcc_cv_as_mips_explicit_relocs_pcrel" >&6; }
+if test $gcc_cv_as_mips_explicit_relocs_pcrel = yes; then
+
+$as_echo "#define MIPS_EXPLICIT_RELOCS MIPS_EXPLICIT_RELOCS_PCREL" >>confdefs.h
+
+fi
+
+
+ if test x$gcc_cv_as_mips_explicit_relocs_pcrel = xno; then \
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for explicit relocation support: %gp_rel" >&5
+$as_echo_n "checking assembler for explicit relocation support: %gp_rel... " >&6; }
if ${gcc_cv_as_mips_explicit_relocs+:} false; then :
$as_echo_n "(cached) " >&6
else
@@ -30377,12 +30410,18 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_mips_explicit_relocs" >&5
$as_echo "$gcc_cv_as_mips_explicit_relocs" >&6; }
if test $gcc_cv_as_mips_explicit_relocs = yes; then
- if test x$target_cpu_default = x
- then target_cpu_default=MASK_EXPLICIT_RELOCS
- else target_cpu_default="($target_cpu_default)|MASK_EXPLICIT_RELOCS"
- fi
+
+$as_echo "#define MIPS_EXPLICIT_RELOCS MIPS_EXPLICIT_RELOCS_BASE" >>confdefs.h
+
fi
+ fi
+
+ if test x$gcc_cv_as_mips_explicit_relocs = xno; then \
+
+$as_echo "#define MIPS_EXPLICIT_RELOCS MIPS_EXPLICIT_RELOCS_NONE" >>confdefs.h
+
+ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for -mno-shared support" >&5
$as_echo_n "checking assembler for -mno-shared support... " >&6; }
diff --git a/gcc/configure.ac b/gcc/configure.ac
index d2ed144..239856a 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -5241,13 +5241,24 @@ LCF0:
;;
mips*-*-*)
- gcc_GAS_CHECK_FEATURE([explicit relocation support],
+ gcc_GAS_CHECK_FEATURE([explicit relocation support: %pcrel_hi/%pcrel_lo],
+ gcc_cv_as_mips_explicit_relocs_pcrel,,
+[ lui $4,%pcrel_hi(foo)],,
+ [AC_DEFINE(MIPS_EXPLICIT_RELOCS, MIPS_EXPLICIT_RELOCS_PCREL,
+ [Define if assembler supports %pcrel_hi/%pcrel_lo.])])
+
+ if test x$gcc_cv_as_mips_explicit_relocs_pcrel = xno; then \
+ gcc_GAS_CHECK_FEATURE([explicit relocation support: %gp_rel],
gcc_cv_as_mips_explicit_relocs,,
[ lw $4,%gp_rel(foo)($4)],,
- [if test x$target_cpu_default = x
- then target_cpu_default=MASK_EXPLICIT_RELOCS
- else target_cpu_default="($target_cpu_default)|MASK_EXPLICIT_RELOCS"
- fi])
+ [AC_DEFINE(MIPS_EXPLICIT_RELOCS, MIPS_EXPLICIT_RELOCS_BASE,
+ [Define if assembler supports %reloc.])])
+ fi
+
+ if test x$gcc_cv_as_mips_explicit_relocs = xno; then \
+ AC_DEFINE(MIPS_EXPLICIT_RELOCS, MIPS_EXPLICIT_RELOCS_NONE,
+ [Define if assembler supports %reloc.])
+ fi
gcc_GAS_CHECK_FEATURE([-mno-shared support],
gcc_cv_as_mips_no_shared,[-mno-shared], [nop],,
diff --git a/gcc/convert.cc b/gcc/convert.cc
index 179f5e6..5ad24ad 100644
--- a/gcc/convert.cc
+++ b/gcc/convert.cc
@@ -762,7 +762,8 @@ convert_to_integer_1 (tree type, tree expr, bool dofold)
{
/* If shift count is less than the width of the truncated type,
really shift. */
- if (tree_int_cst_lt (TREE_OPERAND (expr, 1), TYPE_SIZE (type)))
+ if (wi::to_widest (TREE_OPERAND (expr, 1))
+ < TYPE_PRECISION (type))
/* In this case, shifting is like multiplication. */
goto trunc1;
else
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 98267cd..2d64d86 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,117 @@
+2024-01-29 Jason Merrill <jason@redhat.com>
+
+ PR c++/113544
+ * pt.cc (instantiate_class_template): Don't partially instantiate.
+ (tsubst_stmt): Likewise.
+
+2024-01-26 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ PR c++/113580
+ * module.cc (struct post_process_data): Create.
+ (trees_in::post_decls): Use.
+ (trees_in::post_process): Return entire vector at once.
+ Change overload to take post_process_data instead of tree.
+ (trees_out::write_function_def): Write needed flags from
+ DECL_STRUCT_FUNCTION.
+ (trees_in::read_function_def): Read them and pass to
+ post_process.
+ (module_state::read_cluster): Write flags into cfun.
+
+2024-01-26 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ PR c++/112899
+ * cp-tree.h (note_variable_template_instantiation): Rename to...
+ (note_vague_linkage_variable): ...this.
+ * decl2.cc (note_variable_template_instantiation): Rename to...
+ (note_vague_linkage_variable): ...this.
+ * pt.cc (instantiate_decl): Rename usage of above function.
+ * module.cc (trees_in::read_var_def): Remember pending statics
+ that we stream in.
+
+2024-01-25 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/113599
+ * typeck2.cc (build_m_component_ref): Use convert instead of
+ cp_convert for pointer conversion.
+
+2024-01-25 Jason Merrill <jason@redhat.com>
+
+ PR c++/113598
+ * init.cc (build_vec_init): Don't use {} for PMF.
+
+2024-01-25 Jason Merrill <jason@redhat.com>
+
+ PR c++/109227
+ * coroutines.cc (build_co_await): Use cxx_maybe_build_cleanup.
+ (build_actor_fn, process_conditional, maybe_promote_temps)
+ (morph_fn_to_coro): Likewise.
+ (expand_one_await_expression): Use build_cleanup.
+
+2024-01-25 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ PR c++/113405
+ * module.cc (set_defining_module): Track partial specialisations
+ for all declarations.
+
+2024-01-25 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ PR c++/100707
+ * name-lookup.cc (add_imported_namespace): Don't mark namespaces
+ as imported.
+
+2024-01-24 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/113529
+ * call.cc (add_operator_candidates): Propagate error_mark_node
+ result after recursing to find rewritten candidates.
+
+2024-01-23 Marek Polacek <polacek@redhat.com>
+
+ PR c++/113256
+ PR c++/111607
+ PR c++/109640
+ * call.cc (do_warn_dangling_reference): Don't warn if the temporary
+ is of lambda type.
+
+2024-01-23 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ PR c++/112820
+ PR c++/102607
+ * module.cc (trees_out::lang_type_bools): Write interface_only
+ and interface_unknown.
+ (trees_in::lang_type_bools): Read the above flags.
+ (trees_in::decl_value): Reset CLASSTYPE_INTERFACE_* except for
+ extern templates.
+ (trees_in::read_class_def): Remove buggy extern template
+ handling.
+
+2024-01-19 Jason Merrill <jason@redhat.com>
+
+ PR c++/113498
+ * pt.cc (decl_template_info): New fn.
+ (get_template_info): Use it.
+
+2024-01-19 Jason Merrill <jason@redhat.com>
+
+ PR c++/112632
+ PR c++/112594
+ PR c++/111357
+ PR c++/104594
+ PR c++/67898
+ * cp-tree.h (IMPLICIT_CONV_EXPR_FORCED): New.
+ * pt.cc (expand_integer_pack): Remove 111357 workaround.
+ (maybe_convert_nontype_argument): Add force parm.
+ (convert_template_argument): Handle alias template args
+ specially.
+ (tsubst_expr): Don't ignore IMPLICIT_CONV_EXPR_NONTYPE_ARG.
+ * error.cc (dump_expr) [CASE_CONVERT]: Handle null optype.
+
+2024-01-18 Marek Polacek <polacek@redhat.com>
+
+ PR c++/113389
+ * decl.cc (grokdeclarator) <case cdk_function>: Set TREE_PURPOSE to
+ NULL_TREE when emitting an error.
+
2024-01-17 Nathaniel Shead <nathanieloshead@gmail.com>
PR c++/112588
diff --git a/gcc/cp/call.cc b/gcc/cp/call.cc
index 1f5ff41..9de0d77 100644
--- a/gcc/cp/call.cc
+++ b/gcc/cp/call.cc
@@ -6828,7 +6828,9 @@ op_is_ordered (tree_code code)
/* Subroutine of build_new_op: Add to CANDIDATES all candidates for the
operator indicated by CODE/CODE2. This function calls itself recursively to
- handle C++20 rewritten comparison operator candidates.
+ handle C++20 rewritten comparison operator candidates. Returns NULL_TREE
+ upon success, and error_mark_node if something went wrong that prevented
+ us from performing overload resolution (e.g. ambiguous member name lookup).
LOOKUPS, if non-NULL, is the set of pertinent namespace-scope operator
overloads to consider. This parameter is used when instantiating a
@@ -7005,11 +7007,16 @@ add_operator_candidates (z_candidate **candidates,
if (rewrite_code)
{
+ tree r;
flags |= LOOKUP_REWRITTEN;
if (rewrite_code != code)
- /* Add rewritten candidates in same order. */
- add_operator_candidates (candidates, rewrite_code, ERROR_MARK,
- arglist, lookups, flags, complain);
+ {
+ /* Add rewritten candidates in same order. */
+ r = add_operator_candidates (candidates, rewrite_code, ERROR_MARK,
+ arglist, lookups, flags, complain);
+ if (r == error_mark_node)
+ return error_mark_node;
+ }
z_candidate *save_cand = *candidates;
@@ -7018,8 +7025,10 @@ add_operator_candidates (z_candidate **candidates,
vec<tree,va_gc> *revlist = make_tree_vector ();
revlist->quick_push ((*arglist)[1]);
revlist->quick_push ((*arglist)[0]);
- add_operator_candidates (candidates, rewrite_code, ERROR_MARK,
- revlist, lookups, flags, complain);
+ r = add_operator_candidates (candidates, rewrite_code, ERROR_MARK,
+ revlist, lookups, flags, complain);
+ if (r == error_mark_node)
+ return error_mark_node;
/* Release the vec if we didn't add a candidate that uses it. */
for (z_candidate *c = *candidates; c != save_cand; c = c->next)
@@ -14123,7 +14132,10 @@ do_warn_dangling_reference (tree expr, bool arg_p)
tree e = expr;
while (handled_component_p (e))
e = TREE_OPERAND (e, 0);
- if (!reference_like_class_p (TREE_TYPE (e)))
+ tree type = TREE_TYPE (e);
+ /* If the temporary represents a lambda, we don't really know
+ what's going on here. */
+ if (!reference_like_class_p (type) && !LAMBDA_TYPE_P (type))
return expr;
}
@@ -14180,10 +14192,10 @@ do_warn_dangling_reference (tree expr, bool arg_p)
initializing this reference parameter. */
if (do_warn_dangling_reference (arg, /*arg_p=*/true))
return expr;
- /* Don't warn about member function like:
+ /* Don't warn about member functions like:
std::any a(...);
S& s = a.emplace<S>({0}, 0);
- which constructs a new object and returns a reference to it, but
+ which construct a new object and return a reference to it, but
we still want to detect:
struct S { const S& self () { return *this; } };
const S& s = S().self();
diff --git a/gcc/cp/coroutines.cc b/gcc/cp/coroutines.cc
index ba6e698..3194c91 100644
--- a/gcc/cp/coroutines.cc
+++ b/gcc/cp/coroutines.cc
@@ -932,19 +932,14 @@ build_co_await (location_t loc, tree a, suspend_point_kind suspend_kind)
/* We now know that the final suspend object is distinct from the
final awaiter, so check for a non-throwing DTOR where needed. */
- tree a_type = TREE_TYPE (a);
- if (TYPE_HAS_NONTRIVIAL_DESTRUCTOR (a_type))
- if (tree dummy
- = build_special_member_call (a, complete_dtor_identifier,
- NULL, a_type, LOOKUP_NORMAL,
- tf_none))
- {
- if (CONVERT_EXPR_P (dummy))
- dummy = TREE_OPERAND (dummy, 0);
- dummy = TREE_OPERAND (CALL_EXPR_FN (dummy), 0);
- if (coro_diagnose_throwing_fn (dummy))
- return error_mark_node;
- }
+ if (tree dummy = cxx_maybe_build_cleanup (a, tf_none))
+ {
+ if (CONVERT_EXPR_P (dummy))
+ dummy = TREE_OPERAND (dummy, 0);
+ dummy = TREE_OPERAND (CALL_EXPR_FN (dummy), 0);
+ if (coro_diagnose_throwing_fn (dummy))
+ return error_mark_node;
+ }
}
}
else
@@ -1096,18 +1091,14 @@ build_co_await (location_t loc, tree a, suspend_point_kind suspend_kind)
return error_mark_node;
if (coro_diagnose_throwing_fn (awrs_func))
return error_mark_node;
- if (TYPE_HAS_NONTRIVIAL_DESTRUCTOR (o_type))
- if (tree dummy
- = build_special_member_call (e_proxy, complete_dtor_identifier,
- NULL, o_type, LOOKUP_NORMAL,
- tf_none))
- {
- if (CONVERT_EXPR_P (dummy))
- dummy = TREE_OPERAND (dummy, 0);
- dummy = TREE_OPERAND (CALL_EXPR_FN (dummy), 0);
- if (coro_diagnose_throwing_fn (dummy))
- return error_mark_node;
- }
+ if (tree dummy = cxx_maybe_build_cleanup (e_proxy, tf_none))
+ {
+ if (CONVERT_EXPR_P (dummy))
+ dummy = TREE_OPERAND (dummy, 0);
+ dummy = TREE_OPERAND (CALL_EXPR_FN (dummy), 0);
+ if (coro_diagnose_throwing_fn (dummy))
+ return error_mark_node;
+ }
}
/* We now have three call expressions, in terms of the promise, handle and
@@ -1662,7 +1653,6 @@ expand_one_await_expression (tree *stmt, tree *await_expr, void *d)
tree resume_label = create_named_label_with_ctx (loc, buf, actor);
tree empty_list = build_empty_stmt (loc);
- tree await_type = TREE_TYPE (var);
tree stmt_list = NULL;
tree r;
tree *await_init = NULL;
@@ -1791,9 +1781,7 @@ expand_one_await_expression (tree *stmt, tree *await_expr, void *d)
append_to_statement_list (destroy_label, &body_list);
if (needs_dtor)
{
- tree dtor = build_special_member_call (var, complete_dtor_identifier,
- NULL, await_type, LOOKUP_NORMAL,
- tf_warning_or_error);
+ tree dtor = build_cleanup (var);
append_to_statement_list (dtor, &body_list);
}
r = build1_loc (loc, GOTO_EXPR, void_type_node, data->cleanup);
@@ -1821,9 +1809,7 @@ expand_one_await_expression (tree *stmt, tree *await_expr, void *d)
tree *revised = tsi_stmt_ptr (tsi_last (stmt_list));
if (needs_dtor)
{
- tree dtor = build_special_member_call (var, complete_dtor_identifier,
- NULL, await_type, LOOKUP_NORMAL,
- tf_warning_or_error);
+ tree dtor = build_cleanup (var);
append_to_statement_list (dtor, &stmt_list);
}
data->index += 2;
@@ -2330,10 +2316,8 @@ build_actor_fn (location_t loc, tree coro_frame_type, tree actor, tree fnbody,
add_stmt (r);
/* Destructors for the things we built explicitly. */
- r = build_special_member_call (promise_proxy, complete_dtor_identifier, NULL,
- promise_type, LOOKUP_NORMAL,
- tf_warning_or_error);
- add_stmt (r);
+ if (tree c = cxx_maybe_build_cleanup (promise_proxy, tf_warning_or_error))
+ add_stmt (c);
tree del_frame_label
= create_named_label_with_ctx (loc, "coro.delete.frame", actor);
@@ -2362,12 +2346,8 @@ build_actor_fn (location_t loc, tree coro_frame_type, tree actor, tree fnbody,
= lookup_member (coro_frame_type, pid, 1, 0, tf_warning_or_error);
tree a = build_class_member_access_expr (actor_frame, m, NULL_TREE,
false, tf_warning_or_error);
- tree t = TREE_TYPE (a);
- tree dtor;
- dtor
- = build_special_member_call (a, complete_dtor_identifier, NULL, t,
- LOOKUP_NORMAL, tf_warning_or_error);
- add_stmt (dtor);
+ if (tree dtor = cxx_maybe_build_cleanup (a, tf_warning_or_error))
+ add_stmt (dtor);
}
}
@@ -3045,16 +3025,14 @@ process_conditional (var_nest_node *n, tree& vlist)
tree *flag = var_flags.get (var);
if (!flag)
continue;
- tree var_type = TREE_TYPE (var);
- tree cleanup
- = build_special_member_call (var, complete_dtor_identifier,
- NULL, var_type, LOOKUP_NORMAL,
- tf_warning_or_error);
- tree cond_cleanup = begin_if_stmt ();
- finish_if_stmt_cond (*flag, cond_cleanup);
- finish_expr_stmt (cleanup);
- finish_then_clause (cond_cleanup);
- finish_if_stmt (cond_cleanup);
+ if (tree cleanup = cxx_maybe_build_cleanup (var, tf_warning_or_error))
+ {
+ tree cond_cleanup = begin_if_stmt ();
+ finish_if_stmt_cond (*flag, cond_cleanup);
+ finish_expr_stmt (cleanup);
+ finish_then_clause (cond_cleanup);
+ finish_if_stmt (cond_cleanup);
+ }
}
final_actions = pop_stmt_list (final_actions);
tree try_finally
@@ -3135,13 +3113,8 @@ maybe_promote_temps (tree *stmt, void *d)
process_conditional (t, vlist);
else
finish_expr_stmt (t->init);
- tree var_type = TREE_TYPE (var);
- if (TYPE_HAS_NONTRIVIAL_DESTRUCTOR (var_type))
+ if (tree cleanup = cxx_maybe_build_cleanup (var, tf_warning_or_error))
{
- tree cleanup
- = build_special_member_call (var, complete_dtor_identifier,
- NULL, var_type, LOOKUP_NORMAL,
- tf_warning_or_error);
tree cl = build_stmt (sloc, CLEANUP_STMT, expr_list, cleanup, var);
add_stmt (cl); /* push this onto the level above. */
}
@@ -4903,10 +4876,7 @@ morph_fn_to_coro (tree orig, tree *resumer, tree *destroyer)
vec_safe_push (param_dtor_list, parm.field_id);
/* Cleanup this frame copy on exception. */
parm.fr_copy_dtor
- = build_special_member_call (fld_idx, complete_dtor_identifier,
- NULL, parm.frame_type,
- LOOKUP_NORMAL,
- tf_warning_or_error);
+ = cxx_maybe_build_cleanup (fld_idx, tf_warning_or_error);
if (flag_exceptions)
{
/* This var is now live. */
@@ -4961,10 +4931,7 @@ morph_fn_to_coro (tree orig, tree *resumer, tree *destroyer)
boolean_type_node);
finish_expr_stmt (r);
- promise_dtor
- = build_special_member_call (p, complete_dtor_identifier,
- NULL, promise_type, LOOKUP_NORMAL,
- tf_warning_or_error);
+ promise_dtor = cxx_maybe_build_cleanup (p, tf_warning_or_error);
}
/* Set up a new bind context for the GRO. */
@@ -5025,11 +4992,8 @@ morph_fn_to_coro (tree orig, tree *resumer, tree *destroyer)
/* If some part of the initalization code (prior to the await_resume
of the initial suspend expression), then we need to clean up the
return value. */
- gro_ret_dtor
- = build_special_member_call (DECL_RESULT (orig),
- complete_dtor_identifier, NULL,
- gro_type, LOOKUP_NORMAL,
- tf_warning_or_error);
+ gro_ret_dtor = cxx_maybe_build_cleanup (DECL_RESULT (orig),
+ tf_warning_or_error);
}
else
{
@@ -5042,15 +5006,9 @@ morph_fn_to_coro (tree orig, tree *resumer, tree *destroyer)
r = cp_build_modify_expr (input_location, gro, INIT_EXPR, get_ro,
tf_warning_or_error);
/* The constructed object might require a cleanup. */
- if (TYPE_HAS_NONTRIVIAL_DESTRUCTOR (gro_type))
- {
- gro_cleanup_stmt
- = build_special_member_call (gro, complete_dtor_identifier,
- NULL, gro_type, LOOKUP_NORMAL,
- tf_warning_or_error);
- gro_cleanup_stmt = build_stmt (input_location, CLEANUP_STMT, NULL,
- gro_cleanup_stmt, gro);
- }
+ if (tree cleanup = cxx_maybe_build_cleanup (gro, tf_warning_or_error))
+ gro_cleanup_stmt = build_stmt (input_location, CLEANUP_STMT, NULL,
+ cleanup, gro);
}
finish_expr_stmt (r);
diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h
index d9b14d7..f46b448 100644
--- a/gcc/cp/cp-tree.h
+++ b/gcc/cp/cp-tree.h
@@ -4717,6 +4717,11 @@ get_vec_init_expr (tree t)
#define IMPLICIT_CONV_EXPR_BRACED_INIT(NODE) \
(TREE_LANG_FLAG_2 (IMPLICIT_CONV_EXPR_CHECK (NODE)))
+/* True if NODE represents a conversion forced to be represented in
+ maybe_convert_nontype_argument, i.e. for an alias template. */
+#define IMPLICIT_CONV_EXPR_FORCED(NODE) \
+ (TREE_LANG_FLAG_3 (IMPLICIT_CONV_EXPR_CHECK (NODE)))
+
/* Nonzero means that an object of this type cannot be initialized using
an initializer list. */
#define CLASSTYPE_NON_AGGREGATE(NODE) \
@@ -7146,7 +7151,7 @@ extern tree maybe_get_tls_wrapper_call (tree);
extern void mark_needed (tree);
extern bool decl_needed_p (tree);
extern void note_vague_linkage_fn (tree);
-extern void note_variable_template_instantiation (tree);
+extern void note_vague_linkage_variable (tree);
extern tree build_artificial_parm (tree, tree, tree);
extern bool possibly_inlined_p (tree);
extern int parm_index (tree);
diff --git a/gcc/cp/decl.cc b/gcc/cp/decl.cc
index 322e48d..3e41fd4 100644
--- a/gcc/cp/decl.cc
+++ b/gcc/cp/decl.cc
@@ -13391,6 +13391,7 @@ grokdeclarator (const cp_declarator *declarator,
if (TREE_PURPOSE (parm) != this_identifier)
continue;
bad_xobj_parm_encountered = true;
+ TREE_PURPOSE (parm) = NULL_TREE;
gcc_rich_location bad_xobj_parm
(DECL_SOURCE_LOCATION (TREE_VALUE (parm)));
error_at (&bad_xobj_parm,
diff --git a/gcc/cp/decl2.cc b/gcc/cp/decl2.cc
index 91d4e2e..f569d40 100644
--- a/gcc/cp/decl2.cc
+++ b/gcc/cp/decl2.cc
@@ -947,10 +947,10 @@ note_vague_linkage_fn (tree decl)
vec_safe_push (deferred_fns, decl);
}
-/* As above, but for variable template instantiations. */
+/* As above, but for variables. */
void
-note_variable_template_instantiation (tree decl)
+note_vague_linkage_variable (tree decl)
{
vec_safe_push (pending_statics, decl);
}
diff --git a/gcc/cp/error.cc b/gcc/cp/error.cc
index 52e24fb..d3fcac7 100644
--- a/gcc/cp/error.cc
+++ b/gcc/cp/error.cc
@@ -2673,6 +2673,8 @@ dump_expr (cxx_pretty_printer *pp, tree t, int flags)
tree ttype = TREE_TYPE (t);
tree optype = TREE_TYPE (op);
+ if (!optype)
+ optype = unknown_type_node;
if (TREE_CODE (ttype) != TREE_CODE (optype)
&& INDIRECT_TYPE_P (ttype)
@@ -2691,7 +2693,7 @@ dump_expr (cxx_pretty_printer *pp, tree t, int flags)
else
dump_unary_op (pp, "&", t, flags);
}
- else if (!same_type_p (TREE_TYPE (op), TREE_TYPE (t)))
+ else if (!same_type_p (optype, ttype))
{
/* It is a cast, but we cannot tell whether it is a
reinterpret or static cast. Use the C style notation. */
diff --git a/gcc/cp/init.cc b/gcc/cp/init.cc
index adbdfc2..ac37330 100644
--- a/gcc/cp/init.cc
+++ b/gcc/cp/init.cc
@@ -4864,7 +4864,9 @@ build_vec_init (tree base, tree maxindex, tree init,
But for non-classes, that's the same as value-initialization. */
if (empty_list)
{
- if (cxx_dialect >= cxx11 && AGGREGATE_TYPE_P (type))
+ if (cxx_dialect >= cxx11
+ && (CLASS_TYPE_P (type)
+ || TREE_CODE (type) == ARRAY_TYPE))
{
init = build_constructor (init_list_type_node, NULL);
}
diff --git a/gcc/cp/module.cc b/gcc/cp/module.cc
index 8db662c..3c2fef0e 100644
--- a/gcc/cp/module.cc
+++ b/gcc/cp/module.cc
@@ -2837,6 +2837,13 @@ typedef hash_map<tree,uintptr_t,
simple_hashmap_traits<nodel_ptr_hash<tree_node>,uintptr_t> >
duplicate_hash_map;
+/* Data needed for post-processing. */
+struct post_process_data {
+ tree decl;
+ location_t start_locus;
+ location_t end_locus;
+};
+
/* Tree stream reader. Note that reading a stream doesn't mark the
read trees with TREE_VISITED. Thus it's quite safe to have
multiple concurrent readers. Which is good, because lazy
@@ -2848,7 +2855,7 @@ private:
module_state *state; /* Module being imported. */
vec<tree> back_refs; /* Back references. */
duplicate_hash_map *duplicates; /* Map from existings to duplicate. */
- vec<tree> post_decls; /* Decls to post process. */
+ vec<post_process_data> post_decls; /* Decls to post process. */
unsigned unused; /* Inhibit any interior TREE_USED
marking. */
@@ -2945,16 +2952,16 @@ public:
tree odr_duplicate (tree decl, bool has_defn);
public:
- /* Return the next decl to postprocess, or NULL. */
- tree post_process ()
+ /* Return the decls to postprocess. */
+ const vec<post_process_data>& post_process ()
{
- return post_decls.length () ? post_decls.pop () : NULL_TREE;
+ return post_decls;
}
private:
- /* Register DECL for postprocessing. */
- void post_process (tree decl)
+ /* Register DATA for postprocessing. */
+ void post_process (post_process_data data)
{
- post_decls.safe_push (decl);
+ post_decls.safe_push (data);
}
private:
@@ -5806,10 +5813,8 @@ trees_out::lang_type_bools (tree t)
WB ((lang->gets_delete >> 0) & 1);
WB ((lang->gets_delete >> 1) & 1);
- // Interfaceness is recalculated upon reading. May have to revisit?
- // How do dllexport and dllimport interact across a module?
- // lang->interface_only
- // lang->interface_unknown
+ WB (lang->interface_only);
+ WB (lang->interface_unknown);
WB (lang->contains_empty_class_p);
WB (lang->anon_aggr);
WB (lang->non_zero_init);
@@ -5877,9 +5882,8 @@ trees_in::lang_type_bools (tree t)
v = b () << 0;
v |= b () << 1;
lang->gets_delete = v;
- // lang->interface_only
- // lang->interface_unknown
- lang->interface_unknown = true; // Redetermine interface
+ RB (lang->interface_only);
+ RB (lang->interface_unknown);
RB (lang->contains_empty_class_p);
RB (lang->anon_aggr);
RB (lang->non_zero_init);
@@ -8246,6 +8250,23 @@ trees_in::decl_value ()
/* Set the TEMPLATE_DECL's type. */
TREE_TYPE (decl) = TREE_TYPE (inner);
+ /* Redetermine whether we need to import or export this declaration
+ for this TU. But for extern templates we know we must import:
+ they'll be defined in a different TU.
+ FIXME: How do dllexport and dllimport interact across a module?
+ See also https://github.com/itanium-cxx-abi/cxx-abi/issues/170.
+ May have to revisit? */
+ if (type
+ && CLASS_TYPE_P (type)
+ && TYPE_LANG_SPECIFIC (type)
+ && !(CLASSTYPE_EXPLICIT_INSTANTIATION (type)
+ && CLASSTYPE_INTERFACE_KNOWN (type)
+ && CLASSTYPE_INTERFACE_ONLY (type)))
+ {
+ CLASSTYPE_INTERFACE_ONLY (type) = false;
+ CLASSTYPE_INTERFACE_UNKNOWN (type) = true;
+ }
+
/* Add to specialization tables now that constraints etc are
added. */
if (mk == MK_partial)
@@ -11653,15 +11674,25 @@ trees_out::write_function_def (tree decl)
tree_node (cexpr->body);
}
+ function* f = DECL_STRUCT_FUNCTION (decl);
+
if (streaming_p ())
{
unsigned flags = 0;
+ if (f)
+ flags |= 2;
if (DECL_NOT_REALLY_EXTERN (decl))
flags |= 1;
u (flags);
}
+
+ if (state && f)
+ {
+ state->write_location (*this, f->function_start_locus);
+ state->write_location (*this, f->function_end_locus);
+ }
}
void
@@ -11678,6 +11709,8 @@ trees_in::read_function_def (tree decl, tree maybe_template)
tree saved = tree_node ();
tree context = tree_node ();
constexpr_fundef cexpr;
+ post_process_data pdata {};
+ pdata.decl = maybe_template;
tree maybe_dup = odr_duplicate (maybe_template, DECL_SAVED_TREE (decl));
bool installing = maybe_dup && !DECL_SAVED_TREE (decl);
@@ -11694,6 +11727,12 @@ trees_in::read_function_def (tree decl, tree maybe_template)
unsigned flags = u ();
+ if (flags & 2)
+ {
+ pdata.start_locus = state->read_location (*this);
+ pdata.end_locus = state->read_location (*this);
+ }
+
if (get_overrun ())
return NULL_TREE;
@@ -11708,7 +11747,7 @@ trees_in::read_function_def (tree decl, tree maybe_template)
SET_DECL_FRIEND_CONTEXT (decl, context);
if (cexpr.decl)
register_constexpr_fundef (cexpr);
- post_process (maybe_template);
+ post_process (pdata);
}
else if (maybe_dup)
{
@@ -11775,6 +11814,11 @@ trees_in::read_var_def (tree decl, tree maybe_template)
DECL_INITIALIZED_P (decl) = true;
if (maybe_dup && DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (maybe_dup))
DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (decl) = true;
+ if (DECL_IMPLICIT_INSTANTIATION (decl)
+ || (DECL_CLASS_SCOPE_P (decl)
+ && !DECL_VTABLE_OR_VTT_P (decl)
+ && !DECL_TEMPLATE_INFO (decl)))
+ note_vague_linkage_variable (decl);
}
DECL_INITIAL (decl) = init;
if (!dyn_init)
@@ -12068,15 +12112,6 @@ trees_in::read_class_def (tree defn, tree maybe_template)
bool installing = maybe_dup && !TYPE_SIZE (type);
if (installing)
{
- if (DECL_EXTERNAL (defn) && TYPE_LANG_SPECIFIC (type))
- {
- /* We don't deal with not-really-extern, because, for a
- module you want the import to be the interface, and for a
- header-unit, you're doing it wrong. */
- CLASSTYPE_INTERFACE_UNKNOWN (type) = false;
- CLASSTYPE_INTERFACE_ONLY (type) = true;
- }
-
if (maybe_dup != defn)
{
// FIXME: This is needed on other defns too, almost
@@ -14015,6 +14050,12 @@ get_primary (module_state *parent)
module_state *
get_module (tree name, module_state *parent, bool partition)
{
+ /* We might be given an empty NAME if preprocessing fails to handle
+ a header-name token. */
+ if (name && TREE_CODE (name) == STRING_CST
+ && TREE_STRING_LENGTH (name) == 0)
+ return nullptr;
+
if (partition)
{
if (!parent)
@@ -15090,8 +15131,10 @@ module_state::read_cluster (unsigned snum)
push_function_context does too much work. */
tree old_cfd = current_function_decl;
struct function *old_cfun = cfun;
- while (tree decl = sec.post_process ())
+ for (const post_process_data& pdata : sec.post_process ())
{
+ tree decl = pdata.decl;
+
bool abstract = false;
if (TREE_CODE (decl) == TEMPLATE_DECL)
{
@@ -15103,6 +15146,8 @@ module_state::read_cluster (unsigned snum)
allocate_struct_function (decl, abstract);
cfun->language = ggc_cleared_alloc<language_function> ();
cfun->language->base.x_stmt_tree.stmts_are_full_exprs_p = 1;
+ cfun->function_start_locus = pdata.start_locus;
+ cfun->function_end_locus = pdata.end_locus;
if (abstract)
;
@@ -18860,8 +18905,11 @@ set_defining_module (tree decl)
gcc_checking_assert (!DECL_LANG_SPECIFIC (decl)
|| !DECL_MODULE_IMPORT_P (decl));
- if (module_has_cmi_p ())
+ if (module_p ())
{
+ /* We need to track all declarations within a module, not just those
+ in the module purview, because we don't necessarily know yet if
+ this module will require a CMI while in the global fragment. */
tree ctx = DECL_CONTEXT (decl);
if (ctx
&& (TREE_CODE (ctx) == RECORD_TYPE || TREE_CODE (ctx) == UNION_TYPE)
diff --git a/gcc/cp/name-lookup.cc b/gcc/cp/name-lookup.cc
index 15b5fba..e58f3b5 100644
--- a/gcc/cp/name-lookup.cc
+++ b/gcc/cp/name-lookup.cc
@@ -9089,7 +9089,6 @@ add_imported_namespace (tree ctx, tree name, location_t loc, unsigned import,
if (!decl)
{
decl = make_namespace (ctx, name, loc, inline_p);
- DECL_MODULE_IMPORT_P (decl) = true;
make_namespace_finish (decl, slot, true);
}
else if (DECL_NAMESPACE_INLINE_P (decl) != inline_p)
diff --git a/gcc/cp/pt.cc b/gcc/cp/pt.cc
index f82d018..fb2448a 100644
--- a/gcc/cp/pt.cc
+++ b/gcc/cp/pt.cc
@@ -339,6 +339,32 @@ build_template_info (tree template_decl, tree template_args)
return result;
}
+/* DECL_TEMPLATE_INFO, if applicable, or NULL_TREE. */
+
+static tree
+decl_template_info (const_tree decl)
+{
+ /* This needs to match template_info_decl_check. */
+ if (DECL_LANG_SPECIFIC (decl))
+ switch (TREE_CODE (decl))
+ {
+ case FUNCTION_DECL:
+ if (DECL_THUNK_P (decl))
+ break;
+ gcc_fallthrough ();
+ case VAR_DECL:
+ case FIELD_DECL:
+ case TYPE_DECL:
+ case CONCEPT_DECL:
+ case TEMPLATE_DECL:
+ return DECL_TEMPLATE_INFO (decl);
+
+ default:
+ break;
+ }
+ return NULL_TREE;
+}
+
/* Return the template info node corresponding to T, whatever T is. */
tree
@@ -353,8 +379,8 @@ get_template_info (const_tree t)
|| TREE_CODE (t) == PARM_DECL)
return NULL;
- if (DECL_P (t) && DECL_LANG_SPECIFIC (t))
- tinfo = DECL_TEMPLATE_INFO (t);
+ if (DECL_P (t))
+ tinfo = decl_template_info (t);
if (!tinfo && DECL_IMPLICIT_TYPEDEF_P (t))
t = TREE_TYPE (t);
@@ -3760,13 +3786,6 @@ expand_integer_pack (tree call, tree args, tsubst_flags_t complain,
{
if (hi != ohi)
{
- /* Work around maybe_convert_nontype_argument not doing this for
- dependent arguments. Don't use IMPLICIT_CONV_EXPR_NONTYPE_ARG
- because that will make tsubst_expr ignore it. */
- tree type = tsubst (TREE_TYPE (ohi), args, complain, in_decl);
- if (!TREE_TYPE (hi) || !same_type_p (type, TREE_TYPE (hi)))
- hi = build1 (IMPLICIT_CONV_EXPR, type, hi);
-
call = copy_node (call);
CALL_EXPR_ARG (call, 0) = hi;
}
@@ -8457,23 +8476,30 @@ convert_wildcard_argument (tree parm, tree arg)
conversion for the benefit of cp_tree_equal. */
static tree
-maybe_convert_nontype_argument (tree type, tree arg)
+maybe_convert_nontype_argument (tree type, tree arg, bool force)
{
/* Auto parms get no conversion. */
if (type_uses_auto (type))
return arg;
+ /* ??? Do we need to push the IMPLICIT_CONV_EXPR into the pack expansion?
+ That would complicate other things, and it doesn't seem necessary. */
+ if (TREE_CODE (arg) == EXPR_PACK_EXPANSION)
+ return arg;
/* We don't need or want to add this conversion now if we're going to use the
argument for deduction. */
- if (value_dependent_expression_p (arg))
+ if (!value_dependent_expression_p (arg))
+ force = false;
+ else if (!force)
return arg;
type = cv_unqualified (type);
tree argtype = TREE_TYPE (arg);
- if (same_type_p (type, argtype))
+ if (argtype && same_type_p (type, argtype))
return arg;
arg = build1 (IMPLICIT_CONV_EXPR, type, arg);
IMPLICIT_CONV_EXPR_NONTYPE_ARG (arg) = true;
+ IMPLICIT_CONV_EXPR_FORCED (arg) = force;
return arg;
}
@@ -8741,6 +8767,22 @@ convert_template_argument (tree parm,
if (t != TREE_TYPE (parm))
t = canonicalize_type_argument (t, complain);
+ /* We need to handle arguments for alias or concept templates
+ differently: we need to force building an IMPLICIT_CONV_EXPR, because
+ these arguments are going to be substituted directly into the
+ dependent type; they might not get another chance at
+ convert_nontype_argument. But if the argument ends up here again for
+ a template that isn't one of those, remove the conversion for
+ consistency between naming the same dependent type directly or through
+ an alias. */
+ bool force_conv = in_decl && (DECL_ALIAS_TEMPLATE_P (in_decl)
+ || concept_definition_p (in_decl));
+ if (!force_conv
+ && TREE_CODE (orig_arg) == IMPLICIT_CONV_EXPR
+ && IMPLICIT_CONV_EXPR_FORCED (orig_arg)
+ && same_type_p (TREE_TYPE (orig_arg), t))
+ orig_arg = TREE_OPERAND (orig_arg, 0);
+
if (!type_dependent_expression_p (orig_arg)
&& !uses_template_parms (t))
/* We used to call digest_init here. However, digest_init
@@ -8757,10 +8799,9 @@ convert_template_argument (tree parm,
else
{
val = canonicalize_expr_argument (orig_arg, complain);
- val = maybe_convert_nontype_argument (t, val);
+ val = maybe_convert_nontype_argument (t, val, force_conv);
}
-
if (val == NULL_TREE)
val = error_mark_node;
else if (val == error_mark_node && (complain & tf_error))
@@ -12185,8 +12226,7 @@ instantiate_class_template (tree type)
return error_mark_node;
if (COMPLETE_OR_OPEN_TYPE_P (type)
- || (uses_template_parms (type)
- && !TYPE_FUNCTION_SCOPE_P (type)))
+ || uses_template_parms (type))
return type;
/* Figure out which template is being instantiated. */
@@ -18852,7 +18892,10 @@ tsubst_stmt (tree t, tree args, tsubst_flags_t complain, tree in_decl)
case TAG_DEFN:
tmp = tsubst (TREE_TYPE (t), args, complain, NULL_TREE);
- if (CLASS_TYPE_P (tmp))
+ if (dependent_type_p (tmp))
+ /* This is a partial instantiation, try again when full. */
+ add_stmt (build_min (TAG_DEFN, tmp));
+ else if (CLASS_TYPE_P (tmp))
{
/* Local classes are not independent templates; they are
instantiated along with their containing function. And this
@@ -18861,12 +18904,6 @@ tsubst_stmt (tree t, tree args, tsubst_flags_t complain, tree in_decl)
/* Closures are handled by the LAMBDA_EXPR. */
gcc_assert (!LAMBDA_TYPE_P (TREE_TYPE (t)));
complete_type (tmp);
- if (dependent_type_p (tmp))
- {
- /* This is a partial instantiation, try again when full. */
- add_stmt (build_min (TAG_DEFN, tmp));
- break;
- }
tree save_ccp = current_class_ptr;
tree save_ccr = current_class_ref;
for (tree fld = TYPE_FIELDS (tmp); fld; fld = DECL_CHAIN (fld))
@@ -20056,9 +20093,12 @@ tsubst_expr (tree t, tree args, tsubst_flags_t complain, tree in_decl)
RETURN (retval);
}
if (IMPLICIT_CONV_EXPR_NONTYPE_ARG (t))
- /* We'll pass this to convert_nontype_argument again, we don't need
- to actually perform any conversion here. */
- RETURN (expr);
+ {
+ tree r = convert_nontype_argument (type, expr, complain);
+ if (r == NULL_TREE)
+ r = error_mark_node;
+ RETURN (r);
+ }
int flags = LOOKUP_IMPLICIT;
if (IMPLICIT_CONV_EXPR_DIRECT_INIT (t))
flags = LOOKUP_NORMAL;
@@ -27256,7 +27296,7 @@ instantiate_decl (tree d, bool defer_ok, bool expl_inst_class_mem_p)
{
set_instantiating_module (d);
if (variable_template_p (gen_tmpl))
- note_variable_template_instantiation (d);
+ note_vague_linkage_variable (d);
instantiate_body (td, args, d, false);
}
diff --git a/gcc/cp/typeck2.cc b/gcc/cp/typeck2.cc
index ac0fefa..9608bdc 100644
--- a/gcc/cp/typeck2.cc
+++ b/gcc/cp/typeck2.cc
@@ -2378,7 +2378,7 @@ build_m_component_ref (tree datum, tree component, tsubst_flags_t complain)
/* Build an expression for "object + offset" where offset is the
value stored in the pointer-to-data-member. */
ptype = build_pointer_type (type);
- datum = cp_convert (ptype, datum, complain);
+ datum = convert (ptype, datum);
if (!processing_template_decl)
datum = build2 (POINTER_PLUS_EXPR, ptype,
datum, convert_to_ptrofftype (component));
diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi
index d1893ad..f0d02c9 100644
--- a/gcc/doc/extend.texi
+++ b/gcc/doc/extend.texi
@@ -70,6 +70,7 @@ extensions, accepted by GCC in C90 mode and in C++.
* Character Escapes:: @samp{\e} stands for the character @key{ESC}.
* Alignment:: Determining the alignment of a function, type or variable.
* Inline:: Defining inline functions (as fast as macros).
+* Const and Volatile Functions :: GCC interprets these specially in C.
* Volatiles:: What constitutes an access to a volatile object.
* Using Assembly Language with C:: Instructions and extensions for interfacing C with assembler.
* Alternate Keywords:: @code{__const__}, @code{__asm__}, etc., for header files.
@@ -2522,8 +2523,6 @@ the enclosing block.
@section Declaring Attributes of Functions
@cindex function attributes
@cindex declaring attributes of functions
-@cindex @code{volatile} applied to function
-@cindex @code{const} applied to function
In GNU C and C++, you can use function attributes to specify certain
function properties that may help the compiler optimize calls or
@@ -3667,13 +3666,17 @@ propagation.
@cindex @code{noinline} function attribute
@item noinline
This function attribute prevents a function from being considered for
-inlining.
+inlining. It also disables some other interprocedural optimizations; it's
+preferable to use the more comprehensive @code{noipa} attribute instead
+if that is your goal.
+
@c Don't enumerate the optimizations by name here; we try to be
@c future-compatible with this mechanism.
-If the function does not have side effects, there are optimizations
-other than inlining that cause function calls to be optimized away,
-although the function call is live. To keep such calls from being
-optimized away, put
+Even if a function is declared with the @code{noinline} attribute,
+there are optimizations other than inlining that can cause calls to be
+optimized away if it does not have side effects, although the function
+call is live. To keep such calls from being optimized away, put
+
@smallexample
asm ("");
@end smallexample
@@ -3692,8 +3695,7 @@ the body. This attribute implies @code{noinline}, @code{noclone} and
to a combination of other attributes, because its purpose is to suppress
existing and future optimizations employing interprocedural analysis,
including those that do not have an attribute suitable for disabling
-them individually. This attribute is supported mainly for the purpose
-of testing the compiler.
+them individually.
@cindex @code{nonnull} function attribute
@cindex functions with non-null pointer arguments
@@ -6765,6 +6767,14 @@ On x86-32 targets, the @code{stdcall} attribute causes the compiler to
assume that the called function pops off the stack space used to
pass arguments, unless it takes a variable number of arguments.
+@cindex @code{no_callee_saved_registers} function attribute, x86
+@item no_callee_saved_registers
+Use this attribute to indicate that the specified function has no
+callee-saved registers. That is, all registers can be used as scratch
+registers. For example, this attribute can be used for a function
+called from the interrupt handler assembly stub which will preserve
+all registers and return from interrupt.
+
@cindex @code{no_caller_saved_registers} function attribute, x86
@item no_caller_saved_registers
Use this attribute to indicate that the specified function has no
@@ -7780,6 +7790,11 @@ with static storage duration. The function must take one parameter,
a pointer to a type compatible with the variable. The return value
of the function (if any) is ignored.
+When multiple variables in the same scope have @code{cleanup}
+attributes, at exit from the scope their associated cleanup functions
+are run in reverse order of definition (last defined, first
+cleanup).
+
If @option{-fexceptions} is enabled, then @var{cleanup_function}
is run during the stack unwinding that happens during the
processing of the exception. Note that the @code{cleanup} attribute
@@ -10397,6 +10412,40 @@ The definition in the header file causes most calls to the function
to be inlined. If any uses of the function remain, they refer to
the single copy in the library.
+@node Const and Volatile Functions
+@section Const and Volatile Functions
+@cindex @code{const} applied to function
+@cindex @code{volatile} applied to function
+
+The C standard explicitly leaves the behavior of the @code{const} and
+@code{volatile} type qualifiers applied to functions undefined; these
+constructs can only arise through the use of @code{typedef}. As an extension,
+GCC defines this use of the @code{const} qualifier to have the same meaning
+as the GCC @code{const} function attribute, and the @code{volatile} qualifier
+to be equivalent to the @code{noreturn} attribute.
+@xref{Common Function Attributes}, for more information.
+
+As examples of this usage,
+
+@smallexample
+
+/* @r{Equivalent to:}
+ void fatal () __attribute__ ((noreturn)); */
+typedef void voidfn ();
+volatile voidfn fatal;
+
+/* @r{Equivalent to:}
+ extern int square (int) __attribute__ ((const)); */
+typedef int intfn (int);
+extern const intfn square;
+@end smallexample
+
+In general, using function attributes instead is preferred, since the
+attributes make both the intent of the code and its reliance on a GNU
+extension explicit. Additionally, using @code{const} and
+@code{volatile} in this way is specific to GNU C and does not work in
+GNU C++.
+
@node Volatiles
@section When is a Volatile Object Accessed?
@cindex accessing volatiles
@@ -24247,6 +24296,8 @@ All of these functions are declared in the include file @file{riscv_vector.h}.
@node CORE-V Built-in Functions
@subsection CORE-V Built-in Functions
+For more information on all CORE-V built-ins, please see
+@uref{https://github.com/openhwgroup/core-v-sw/blob/master/specifications/corev-builtin-spec.md}
These built-in functions are available for the CORE-V MAC machine
architecture. For more information on CORE-V built-ins, please see
@@ -24426,6 +24477,890 @@ architecture. For more information on CORE-V ELW builtins, please see
Generated assembler @code{cv.elw}
@end deftypefn
+These built-in functions are available for the CORE-V SIMD machine
+architecture. For more information on CORE-V SIMD built-ins, please see
+@uref{https://github.com/openhwgroup/core-v-sw/blob/master/specifications/corev-builtin-spec.md#listing-of-pulp-816-bit-simd-builtins-xcvsimd}
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_add_h (uint32_t, uint32_t, uint4_t)
+Generated assembler @code{cv.add.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_add_b (uint32_t, uint32_t)
+Generated assembler @code{cv.add.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_add_sc_h (uint32_t, int16_t)
+Generated assembler @code{cv.add.sc.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_add_sc_h (uint32_t, int6_t)
+Generated assembler @code{cv.add.sci.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_add_sc_b (uint32_t, int8_t)
+Generated assembler @code{cv.add.sc.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_add_sc_b (uint32_t, int6_t)
+Generated assembler @code{cv.add.sci.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_sub_h (uint32_t, uint32_t, uint4_t)
+Generated assembler @code{cv.sub.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_sub_b (uint32_t, uint32_t)
+Generated assembler @code{cv.sub.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_sub_sc_h (uint32_t, int16_t)
+Generated assembler @code{cv.sub.sc.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_sub_sc_h (uint32_t, int6_t)
+Generated assembler @code{cv.sub.sci.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_sub_sc_b (uint32_t, int8_t)
+Generated assembler @code{cv.sub.sc.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_sub_sc_b (uint32_t, int6_t)
+Generated assembler @code{cv.sub.sci.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_avg_h (uint32_t, uint32_t)
+Generated assembler @code{cv.avg.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_avg_b (uint32_t, uint32_t)
+Generated assembler @code{cv.avg.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_avg_sc_h (uint32_t, int16_t)
+Generated assembler @code{cv.avg.sc.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_avg_sc_h (uint32_t, int6_t)
+Generated assembler @code{cv.avg.sci.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_avg_sc_b (uint32_t, int8_t)
+Generated assembler @code{cv.avg.sc.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_avg_sc_b (uint32_t, int6_t)
+Generated assembler @code{cv.avg.sci.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_avgu_h (uint32_t, uint32_t)
+Generated assembler @code{cv.avgu.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_avgu_b (uint32_t, uint32_t)
+Generated assembler @code{cv.avgu.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_avgu_sc_h (uint32_t, uint16_t)
+Generated assembler @code{cv.avgu.sc.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_avgu_sc_h (uint32_t, uint6_t)
+Generated assembler @code{cv.avgu.sci.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_avgu_sc_b (uint32_t, uint8_t)
+Generated assembler @code{cv.avgu.sc.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_avgu_sc_b (uint32_t, uint6_t)
+Generated assembler @code{cv.avgu.sci.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_min_h (uint32_t, uint32_t)
+Generated assembler @code{cv.min.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_min_b (uint32_t, uint32_t)
+Generated assembler @code{cv.min.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_min_sc_h (uint32_t, int16_t)
+Generated assembler @code{cv.min.sc.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_min_sc_h (uint32_t, int6_t)
+Generated assembler @code{cv.min.sci.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_min_sc_b (uint32_t, int8_t)
+Generated assembler @code{cv.min.sc.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_min_sc_b (uint32_t, int6_t)
+Generated assembler @code{cv.min.sci.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_minu_h (uint32_t, uint32_t)
+Generated assembler @code{cv.minu.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_minu_b (uint32_t, uint32_t)
+Generated assembler @code{cv.minu.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_minu_sc_h (uint32_t, uint16_t)
+Generated assembler @code{cv.minu.sc.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_minu_sc_h (uint32_t, uint6_t)
+Generated assembler @code{cv.minu.sci.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_minu_sc_b (uint32_t, uint8_t)
+Generated assembler @code{cv.minu.sc.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_minu_sc_b (uint32_t, uint6_t)
+Generated assembler @code{cv.minu.sci.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_max_h (uint32_t, uint32_t)
+Generated assembler @code{cv.max.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_max_b (uint32_t, uint32_t)
+Generated assembler @code{cv.max.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_max_sc_h (uint32_t, int16_t)
+Generated assembler @code{cv.max.sc.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_max_sc_h (uint32_t, int6_t)
+Generated assembler @code{cv.max.sci.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_max_sc_b (uint32_t, int8_t)
+Generated assembler @code{cv.max.sc.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_max_sc_b (uint32_t, int6_t)
+Generated assembler @code{cv.max.sci.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_maxu_h (uint32_t, uint32_t)
+Generated assembler @code{cv.maxu.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_maxu_b (uint32_t, uint32_t)
+Generated assembler @code{cv.maxu.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_maxu_sc_h (uint32_t, uint16_t)
+Generated assembler @code{cv.maxu.sc.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_maxu_sc_h (uint32_t, uint6_t)
+Generated assembler @code{cv.maxu.sci.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_maxu_sc_b (uint32_t, uint8_t)
+Generated assembler @code{cv.maxu.sc.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_maxu_sc_b (uint32_t, uint6_t)
+Generated assembler @code{cv.maxu.sci.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_srl_h (uint32_t, uint32_t)
+Generated assembler @code{cv.srl.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_srl_b (uint32_t, uint32_t)
+Generated assembler @code{cv.srl.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_srl_sc_h (uint32_t, int16_t)
+Generated assembler @code{cv.srl.sc.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_srl_sc_h (uint32_t, int6_t)
+Generated assembler @code{cv.srl.sci.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_srl_sc_b (uint32_t, int8_t)
+Generated assembler @code{cv.srl.sc.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_srl_sc_b (uint32_t, int6_t)
+Generated assembler @code{cv.srl.sci.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_sra_h (uint32_t, uint32_t)
+Generated assembler @code{cv.sra.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_sra_b (uint32_t, uint32_t)
+Generated assembler @code{cv.sra.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_sra_sc_h (uint32_t, int16_t)
+Generated assembler @code{cv.sra.sc.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_sra_sc_h (uint32_t, int6_t)
+Generated assembler @code{cv.sra.sci.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_sra_sc_b (uint32_t, int8_t)
+Generated assembler @code{cv.sra.sc.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_sra_sc_b (uint32_t, int6_t)
+Generated assembler @code{cv.sra.sci.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_sll_h (uint32_t, uint32_t)
+Generated assembler @code{cv.sll.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_sll_b (uint32_t, uint32_t)
+Generated assembler @code{cv.sll.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_sll_sc_h (uint32_t, int16_t)
+Generated assembler @code{cv.sll.sc.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_sll_sc_h (uint32_t, int6_t)
+Generated assembler @code{cv.sll.sci.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_sll_sc_b (uint32_t, int8_t)
+Generated assembler @code{cv.sll.sc.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_sll_sc_b (uint32_t, int6_t)
+Generated assembler @code{cv.sll.sci.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_or_h (uint32_t, uint32_t)
+Generated assembler @code{cv.or.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_or_b (uint32_t, uint32_t)
+Generated assembler @code{cv.or.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_or_sc_h (uint32_t, int16_t)
+Generated assembler @code{cv.or.sc.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_or_sc_h (uint32_t, int6_t)
+Generated assembler @code{cv.or.sci.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_or_sc_b (uint32_t, int8_t)
+Generated assembler @code{cv.or.sc.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_or_sc_b (uint32_t, int6_t)
+Generated assembler @code{cv.or.sci.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_xor_h (uint32_t, uint32_t)
+Generated assembler @code{cv.xor.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_xor_b (uint32_t, uint32_t)
+Generated assembler @code{cv.xor.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_xor_sc_h (uint32_t, int16_t)
+Generated assembler @code{cv.xor.sc.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_xor_sc_h (uint32_t, int6_t)
+Generated assembler @code{cv.xor.sci.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_xor_sc_b (uint32_t, int8_t)
+Generated assembler @code{cv.xor.sc.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_xor_sc_b (uint32_t, int6_t)
+Generated assembler @code{cv.xor.sci.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_and_h (uint32_t, uint32_t)
+Generated assembler @code{cv.and.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_and_b (uint32_t, uint32_t)
+Generated assembler @code{cv.and.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_and_sc_h (uint32_t, int16_t)
+Generated assembler @code{cv.and.sc.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_and_sc_h (uint32_t, int6_t)
+Generated assembler @code{cv.and.sci.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_and_sc_b (uint32_t, int8_t)
+Generated assembler @code{cv.and.sc.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_and_sc_b (uint32_t, int6_t)
+Generated assembler @code{cv.and.sci.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_abs_h (uint32_t)
+Generated assembler @code{cv.abs.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_abs_b (uint32_t)
+Generated assembler @code{cv.abs.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_dotup_h (uint32_t, uint32_t)
+Generated assembler @code{cv.dotup.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_dotup_b (uint32_t, uint32_t)
+Generated assembler @code{cv.dotup.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_dotup_sc_h (uint32_t, uint16_t)
+Generated assembler @code{cv.dotup.sc.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_dotup_sc_h (uint32_t, uint6_t)
+Generated assembler @code{cv.dotup.sci.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_dotup_sc_b (uint32_t, uint8_t)
+Generated assembler @code{cv.dotup.sc.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_dotup_sc_b (uint32_t, uint6_t)
+Generated assembler @code{cv.dotup.sci.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_dotusp_h (uint32_t, uint32_t)
+Generated assembler @code{cv.dotusp.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_dotusp_b (uint32_t, uint32_t)
+Generated assembler @code{cv.dotusp.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_dotusp_sc_h (uint32_t, int16_t)
+Generated assembler @code{cv.dotusp.sc.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_dotusp_sc_h (uint32_t, int6_t)
+Generated assembler @code{cv.dotusp.sci.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_dotusp_sc_b (uint32_t, int8_t)
+Generated assembler @code{cv.dotusp.sc.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_dotusp_sc_b (uint32_t, int6_t)
+Generated assembler @code{cv.dotusp.sci.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_dotsp_h (uint32_t, uint32_t)
+Generated assembler @code{cv.dotsp.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_dotsp_b (uint32_t, uint32_t)
+Generated assembler @code{cv.dotsp.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_dotsp_sc_h (uint32_t, int16_t)
+Generated assembler @code{cv.dotsp.sc.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_dotsp_sc_h (uint32_t, int6_t)
+Generated assembler @code{cv.dotsp.sci.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_dotsp_sc_b (uint32_t, int8_t)
+Generated assembler @code{cv.dotsp.sc.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_dotsp_sc_b (uint32_t, int6_t)
+Generated assembler @code{cv.dotsp.sci.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_sdotup_h (uint32_t, uint32_t, uint32_t)
+Generated assembler @code{cv.sdotup.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_sdotup_b (uint32_t, uint32_t, uint32_t)
+Generated assembler @code{cv.sdotup.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_sdotup_sc_h (uint32_t, uint16_t, uint32_t)
+Generated assembler @code{cv.sdotup.sc.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_sdotup_sc_h (uint32_t, uint6_t, uint32_t)
+Generated assembler @code{cv.sdotup.sci.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_sdotup_sc_b (uint32_t, uint8_t, uint32_t)
+Generated assembler @code{cv.sdotup.sc.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_sdotup_sc_b (uint32_t, uint6_t, uint32_t)
+Generated assembler @code{cv.sdotup.sci.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_sdotusp_h (uint32_t, uint32_t, uint32_t)
+Generated assembler @code{cv.sdotusp.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_sdotusp_b (uint32_t, uint32_t, uint32_t)
+Generated assembler @code{cv.sdotusp.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_sdotusp_sc_h (uint32_t, int16_t, uint32_t)
+Generated assembler @code{cv.sdotusp.sc.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_sdotusp_sc_h (uint32_t, int6_t, uint32_t)
+Generated assembler @code{cv.sdotusp.sci.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_sdotusp_sc_b (uint32_t, int8_t, uint32_t)
+Generated assembler @code{cv.sdotusp.sc.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_sdotusp_sc_b (uint32_t, int6_t, uint32_t)
+Generated assembler @code{cv.sdotusp.sci.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_sdotsp_h (uint32_t, uint32_t, uint32_t)
+Generated assembler @code{cv.sdotsp.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_sdotsp_b (uint32_t, uint32_t, uint32_t)
+Generated assembler @code{cv.sdotsp.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_sdotsp_sc_h (uint32_t, int16_t, uint32_t)
+Generated assembler @code{cv.sdotsp.sc.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_sdotsp_sc_h (uint32_t, int6_t, uint32_t)
+Generated assembler @code{cv.sdotsp.sci.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_sdotsp_sc_b (uint32_t, int8_t, uint32_t)
+Generated assembler @code{cv.sdotsp.sc.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_sdotsp_sc_b (uint32_t, int6_t, uint32_t)
+Generated assembler @code{cv.sdotsp.sci.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_extract_h (uint32_t, uint6_t)
+Generated assembler @code{cv.extract.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_extract_b (uint32_t, uint6_t)
+Generated assembler @code{cv.extract.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_extractu_h (uint32_t, uint6_t)
+Generated assembler @code{cv.extractu.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_extractu_b (uint32_t, uint6_t)
+Generated assembler @code{cv.extractu.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_insert_h (uint32_t, uint32_t)
+Generated assembler @code{cv.insert.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_insert_b (uint32_t, uint32_t)
+Generated assembler @code{cv.insert.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_shuffle_h (uint32_t, uint32_t)
+Generated assembler @code{cv.shuffle.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_shuffle_b (uint32_t, uint32_t)
+Generated assembler @code{cv.shuffle.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_shuffle_sci_h (uint32_t, uint4_t)
+Generated assembler @code{cv.shuffle.sci.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_shufflei0_sci_b (uint32_t, uint4_t)
+Generated assembler @code{cv.shufflei0.sci.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_shufflei1_sci_b (uint32_t, uint4_t)
+Generated assembler @code{cv.shufflei1.sci.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_shufflei2_sci_b (uint32_t, uint4_t)
+Generated assembler @code{cv.shufflei2.sci.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_shufflei3_sci_b (uint32_t, uint4_t)
+Generated assembler @code{cv.shufflei3.sci.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_shuffle2_h (uint32_t, uint32_t, uint32_t)
+Generated assembler @code{cv.shuffle2.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_shuffle2_b (uint32_t, uint32_t, uint32_t)
+Generated assembler @code{cv.shuffle2.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_packlo_h (uint32_t, uint32_t)
+Generated assembler @code{cv.pack}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_packhi_h (uint32_t, uint32_t)
+Generated assembler @code{cv.pack.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_packhi_b (uint32_t, uint32_t, uint32_t)
+Generated assembler @code{cv.packhi.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_packlo_b (uint32_t, uint32_t, uint32_t)
+Generated assembler @code{cv.packlo.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmpeq_h (uint32_t, uint32_t)
+Generated assembler @code{cv.cmpeq.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmpeq_b (uint32_t, uint32_t)
+Generated assembler @code{cv.cmpeq.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmpeq_sc_h (uint32_t, int16_t)
+Generated assembler @code{cv.cmpeq.sc.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmpeq_sc_h (uint32_t, int6_t)
+Generated assembler @code{cv.cmpeq.sci.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmpeq_sc_b (uint32_t, int8_t)
+Generated assembler @code{cv.cmpeq.sc.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmpeq_sc_b (uint32_t, int6_t)
+Generated assembler @code{cv.cmpeq.sci.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmpne_h (uint32_t, uint32_t)
+Generated assembler @code{cv.cmpne.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmpne_b (uint32_t, uint32_t)
+Generated assembler @code{cv.cmpne.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmpne_sc_h (uint32_t, int16_t)
+Generated assembler @code{cv.cmpne.sc.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmpne_sc_h (uint32_t, int6_t)
+Generated assembler @code{cv.cmpne.sci.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmpne_sc_b (uint32_t, int8_t)
+Generated assembler @code{cv.cmpne.sc.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmpne_sc_b (uint32_t, int6_t)
+Generated assembler @code{cv.cmpne.sci.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmpgt_h (uint32_t, uint32_t)
+Generated assembler @code{cv.cmpgt.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmpgt_b (uint32_t, uint32_t)
+Generated assembler @code{cv.cmpgt.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmpgt_sc_h (uint32_t, int16_t)
+Generated assembler @code{cv.cmpgt.sc.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmpgt_sc_h (uint32_t, int6_t)
+Generated assembler @code{cv.cmpgt.sci.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmpgt_sc_b (uint32_t, int8_t)
+Generated assembler @code{cv.cmpgt.sc.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmpgt_sc_b (uint32_t, int6_t)
+Generated assembler @code{cv.cmpgt.sci.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmpge_h (uint32_t, uint32_t)
+Generated assembler @code{cv.cmpge.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmpge_b (uint32_t, uint32_t)
+Generated assembler @code{cv.cmpge.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmpge_sc_h (uint32_t, int16_t)
+Generated assembler @code{cv.cmpge.sc.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmpge_sc_h (uint32_t, int6_t)
+Generated assembler @code{cv.cmpge.sci.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmpge_sc_b (uint32_t, int8_t)
+Generated assembler @code{cv.cmpge.sc.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmpge_sc_b (uint32_t, int6_t)
+Generated assembler @code{cv.cmpge.sci.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmplt_h (uint32_t, uint32_t)
+Generated assembler @code{cv.cmplt.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmplt_b (uint32_t, uint32_t)
+Generated assembler @code{cv.cmplt.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmplt_sc_h (uint32_t, int16_t)
+Generated assembler @code{cv.cmplt.sc.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmplt_sc_h (uint32_t, int6_t)
+Generated assembler @code{cv.cmplt.sci.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmplt_sc_b (uint32_t, int8_t)
+Generated assembler @code{cv.cmplt.sc.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmplt_sc_b (uint32_t, int6_t)
+Generated assembler @code{cv.cmplt.sci.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmple_h (uint32_t, uint32_t)
+Generated assembler @code{cv.cmple.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmple_b (uint32_t, uint32_t)
+Generated assembler @code{cv.cmple.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmple_sc_h (uint32_t, int16_t)
+Generated assembler @code{cv.cmple.sc.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmple_sc_h (uint32_t, int6_t)
+Generated assembler @code{cv.cmple.sci.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmple_sc_b (uint32_t, int8_t)
+Generated assembler @code{cv.cmple.sc.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmple_sc_b (uint32_t, int6_t)
+Generated assembler @code{cv.cmple.sci.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmpgtu_h (uint32_t, uint32_t)
+Generated assembler @code{cv.cmpgtu.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmpgtu_b (uint32_t, uint32_t)
+Generated assembler @code{cv.cmpgtu.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmpgtu_sc_h (uint32_t, uint16_t)
+Generated assembler @code{cv.cmpgtu.sc.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmpgtu_sc_h (uint32_t, uint6_t)
+Generated assembler @code{cv.cmpgtu.sci.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmpgtu_sc_b (uint32_t, uint8_t)
+Generated assembler @code{cv.cmpgtu.sc.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmpgtu_sc_b (uint32_t, uint6_t)
+Generated assembler @code{cv.cmpgtu.sci.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmpgeu_h (uint32_t, uint32_t)
+Generated assembler @code{cv.cmpgeu.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmpgeu_b (uint32_t, uint32_t)
+Generated assembler @code{cv.cmpgeu.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmpgeu_sc_h (uint32_t, uint16_t)
+Generated assembler @code{cv.cmpgeu.sc.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmpgeu_sc_h (uint32_t, uint6_t)
+Generated assembler @code{cv.cmpgeu.sci.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmpgeu_sc_b (uint32_t, uint8_t)
+Generated assembler @code{cv.cmpgeu.sc.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmpgeu_sc_b (uint32_t, uint6_t)
+Generated assembler @code{cv.cmpgeu.sci.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmpltu_h (uint32_t, uint32_t)
+Generated assembler @code{cv.cmpltu.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmpltu_b (uint32_t, uint32_t)
+Generated assembler @code{cv.cmpltu.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmpltu_sc_h (uint32_t, uint16_t)
+Generated assembler @code{cv.cmpltu.sc.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmpltu_sc_h (uint32_t, uint6_t)
+Generated assembler @code{cv.cmpltu.sci.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmpltu_sc_b (uint32_t, uint8_t)
+Generated assembler @code{cv.cmpltu.sc.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmpltu_sc_b (uint32_t, uint6_t)
+Generated assembler @code{cv.cmpltu.sci.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmpleu_h (uint32_t, uint32_t)
+Generated assembler @code{cv.cmpleu.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmpleu_b (uint32_t, uint32_t)
+Generated assembler @code{cv.cmpleu.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmpleu_sc_h (uint32_t, uint16_t)
+Generated assembler @code{cv.cmpleu.sc.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmpleu_sc_h (uint32_t, uint6_t)
+Generated assembler @code{cv.cmpleu.sci.h}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmpleu_sc_b (uint32_t, uint8_t)
+Generated assembler @code{cv.cmpleu.sc.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cmpleu_sc_b (uint32_t, uint6_t)
+Generated assembler @code{cv.cmpleu.sci.b}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cplxmul_r (uint32_t, uint32_t, uint32_t, uint4_t)
+Generated assembler @code{cv.cplxmul.r}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cplxmul_i (uint32_t, uint32_t, uint32_t, uint4_t)
+Generated assembler @code{cv.cplxmul.i}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cplxmul_r (uint32_t, uint32_t, uint32_t, uint4_t)
+Generated assembler @code{cv.cplxmul.r.div2}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cplxmul_i (uint32_t, uint32_t, uint32_t, uint4_t)
+Generated assembler @code{cv.cplxmul.i.div2}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cplxmul_r (uint32_t, uint32_t, uint32_t, uint4_t)
+Generated assembler @code{cv.cplxmul.r.div4}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cplxmul_i (uint32_t, uint32_t, uint32_t, uint4_t)
+Generated assembler @code{cv.cplxmul.i.div4}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cplxmul_r (uint32_t, uint32_t, uint32_t, uint4_t)
+Generated assembler @code{cv.cplxmul.r.div8}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cplxmul_i (uint32_t, uint32_t, uint32_t, uint4_t)
+Generated assembler @code{cv.cplxmul.i.div8}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_cplxconj (uint32_t)
+Generated assembler @code{cv.cplxconj}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_subrotmj (uint32_t, uint32_t, uint4_t)
+Generated assembler @code{cv.subrotmj}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_subrotmj (uint32_t, uint32_t, uint32_t, uint4_t)
+Generated assembler @code{cv.subrotmj.div2}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_subrotmj (uint32_t, uint32_t, uint32_t, uint4_t)
+Generated assembler @code{cv.subrotmj.div4}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_subrotmj (uint32_t, uint32_t, uint32_t, uint4_t)
+Generated assembler @code{cv.subrotmj.div8}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_add_h (uint32_t, uint32_t, uint32_t, uint4_t)
+Generated assembler @code{cv.add.div2}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_add_h (uint32_t, uint32_t, uint32_t, uint4_t)
+Generated assembler @code{cv.add.div4}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_add_h (uint32_t, uint32_t, uint32_t, uint4_t)
+Generated assembler @code{cv.add.div8}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_sub_h (uint32_t, uint32_t, uint32_t, uint4_t)
+Generated assembler @code{cv.sub.div2}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_sub_h (uint32_t, uint32_t, uint32_t, uint4_t)
+Generated assembler @code{cv.sub.div4}
+@end deftypefn
+
+@deftypefn {Built-in Function} {uint32_t} __builtin_riscv_cv_simd_sub_h (uint32_t, uint32_t, uint32_t, uint4_t)
+Generated assembler @code{cv.sub.div8}
+@end deftypefn
+
@node RX Built-in Functions
@subsection RX Built-in Functions
GCC supports some of the RX instructions which cannot be expressed in
diff --git a/gcc/doc/generic.texi b/gcc/doc/generic.texi
index 5746bdc..c596b7d 100644
--- a/gcc/doc/generic.texi
+++ b/gcc/doc/generic.texi
@@ -1153,7 +1153,7 @@ vector. For example @{ 0, 1 @} could be seen as two patterns with
one element each or one pattern with two elements (@var{base0} and
@var{base1}). The canonical encoding is always the one with the
fewest patterns or (if both encodings have the same number of
-petterns) the one with the fewest encoded elements.
+patterns) the one with the fewest encoded elements.
@samp{vector_cst_encoding_nelts (@var{v})} gives the total number of
encoded elements in @var{v}, which is 6 in the example above.
diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi
index 7159391..c779443 100644
--- a/gcc/doc/install.texi
+++ b/gcc/doc/install.texi
@@ -1258,12 +1258,12 @@ default set of libraries is selected based on the value of
@item amdgcn*-*-*
@var{list} is a comma separated list of ISA names (allowed values: @code{fiji},
-@code{gfx900}, @code{gfx906}, @code{gfx908}, @code{gfx90a}). It ought not
-include the name of the default ISA, specified via @option{--with-arch}. If
-@var{list} is empty, then there will be no multilibs and only the default
-run-time library will be built. If @var{list} is @code{default} or
-@option{--with-multilib-list=} is not specified, then the default set of
-libraries is selected.
+@code{gfx900}, @code{gfx906}, @code{gfx908}, @code{gfx90a}, @code{gfx1030},
+@code{gfx1100}). It ought not include the name of the default ISA, specified
+via @option{--with-arch}. If @var{list} is empty, then there will be no
+multilibs and only the default run-time library will be built. If @var{list}
+is @code{default} or @option{--with-multilib-list=} is not specified, then
+the default set of libraries is selected.
@item arm*-*-*
@var{list} is a comma separated list of @code{aprofile} and
@@ -3927,14 +3927,15 @@ This is a synonym for @samp{x86_64-*-solaris2*}.
@heading amdgcn-*-amdhsa
AMD GCN GPU target.
-Instead of GNU Binutils, you will need to install LLVM 13.0.1, or later, and copy
+Instead of GNU Binutils, you will need to install LLVM 15, or later, and copy
@file{bin/llvm-mc} to @file{amdgcn-amdhsa/bin/as},
@file{bin/lld} to @file{amdgcn-amdhsa/bin/ld},
@file{bin/llvm-nm} to @file{amdgcn-amdhsa/bin/nm}, and
@file{bin/llvm-ar} to both @file{bin/amdgcn-amdhsa-ar} and
-@file{bin/amdgcn-amdhsa-ranlib}.
+@file{bin/amdgcn-amdhsa-ranlib}. Note that LLVM 13.0.1 or LLVM 14 can be used
+by specifying a @code{--with-multilib-list=} that does not list @code{gfx1100}.
-Use Newlib (4.3.0 or newer).
+Use Newlib (4.3.0 or newer; 4.4.0 or later is recommended).
To run the binaries, install the HSA Runtime from the
@uref{https://rocm.docs.amd.com/,,ROCm Platform}, and use
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 4d43dda..819a75d 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -332,6 +332,7 @@ Objective-C and Objective-C++ Dialects}.
-Wno-aggressive-loop-optimizations
-Warith-conversion
-Warray-bounds -Warray-bounds=@var{n} -Warray-compare
+-Warray-parameter -Warray-parameter=@var{n}
-Wno-attributes -Wattribute-alias=@var{n} -Wno-attribute-alias
-Wno-attribute-warning
-Wbidi-chars=@r{[}none@r{|}unpaired@r{|}any@r{|}ucn@r{]}
@@ -546,6 +547,7 @@ Objective-C and Objective-C++ Dialects}.
-falign-jumps[=@var{n}[:@var{m}:[@var{n2}[:@var{m2}]]]]
-falign-labels[=@var{n}[:@var{m}:[@var{n2}[:@var{m2}]]]]
-falign-loops[=@var{n}[:@var{m}:[@var{n2}[:@var{m2}]]]]
+-fmin-function-alignment=[@var{n}]
-fno-allocation-dce -fallow-store-data-races
-fassociative-math -fauto-profile -fauto-profile[=@var{path}]
-fauto-inc-dec -fbranch-probabilities
@@ -1137,6 +1139,7 @@ Objective-C and Objective-C++ Dialects}.
-mcode-readable=@var{setting}
-msplit-addresses -mno-split-addresses
-mexplicit-relocs -mno-explicit-relocs
+-mexplicit-relocs=@var{release}
-mcheck-zero-division -mno-check-zero-division
-mdivide-traps -mdivide-breaks
-mload-store-pairs -mno-load-store-pairs
@@ -1490,7 +1493,7 @@ See RS/6000 and PowerPC Options.
-munroll-only-small-loops -mlam=@var{choice}}
@emph{x86 Windows Options}
-@gccoptlist{-mconsole -mcrtdll=@var{library} -mcygwin -mno-cygwin -mdll
+@gccoptlist{-mconsole -mcrtdll=@var{library} -mdll
-mnop-fun-dllimport -mthread
-municode -mwin32 -mwindows -fno-set-stack-executable}
@@ -6201,27 +6204,37 @@ Options} and @ref{Objective-C and Objective-C++ Dialect Options}.
@option{-Wall} turns on the following warning flags:
@gccoptlist{-Waddress
+-Waligned-new @r{(C++ and Objective-C++ only)}
-Warray-bounds=1 @r{(only with} @option{-O2}@r{)}
-Warray-compare
--Warray-parameter=2 @r{(C and Objective-C only)}
+-Warray-parameter=2
-Wbool-compare
-Wbool-operation
--Wc++11-compat -Wc++14-compat
+-Wc++11-compat -Wc++14-compat -Wc++17compat -Wc++20compat
-Wcatch-value @r{(C++ and Objective-C++ only)}
-Wchar-subscripts
+-Wclass-memaccess @r{(C++ and Objective-C++ only)}
-Wcomment
+-Wdangling-else
-Wdangling-pointer=2
+-Wdelete-non-virtual-dtor @r{(C++ and Objective-C++ only)}
-Wduplicate-decl-specifier @r{(C and Objective-C only)}
-Wenum-compare @r{(in C/ObjC; this is on by default in C++)}
-Wenum-int-mismatch @r{(C and Objective-C only)}
--Wformat
--Wformat-overflow
--Wformat-truncation
--Wint-in-bool-context
+-Wformat=1
+-Wformat-contains-nul
+-Wformat-diag
+-Wformat-extra-args
+-Wformat-overflow=1
+-Wformat-truncation=1
+-Wformat-zero-length
+-Wframe-address
-Wimplicit @r{(C and Objective-C only)}
--Wimplicit-int @r{(C and Objective-C only)}
-Wimplicit-function-declaration @r{(C and Objective-C only)}
--Winit-self @r{(only for C++)}
+-Wimplicit-int @r{(C and Objective-C only)}
+-Winfinite-recursion
+-Winit-self @r{(C++ and Objective-C++ only)}
+-Wint-in-bool-context
-Wlogical-not-parentheses
-Wmain @r{(only for C/ObjC and unless} @option{-ffreestanding}@r{)}
-Wmaybe-uninitialized
@@ -6229,24 +6242,26 @@ Options} and @ref{Objective-C and Objective-C++ Dialect Options}.
-Wmemset-transposed-args
-Wmisleading-indentation @r{(only for C/C++)}
-Wmismatched-dealloc
--Wmismatched-new-delete @r{(only for C/C++)}
+-Wmismatched-new-delete @r{(C++ and Objective-C++ only)}
-Wmissing-attributes
-Wmissing-braces @r{(only for C/ObjC)}
-Wmultistatement-macros
--Wnarrowing @r{(only for C++)}
+-Wnarrowing @r{(C++ and Objective-C++ only)}
-Wnonnull
-Wnonnull-compare
--Wopenmp-simd
+-Wopenmp-simd @r{(C and C++ only)}
+-Woverloaded-virtual=1 @r{(C++ and Objective-C++ only)}
+-Wpacked-not-aligned
-Wparentheses
--Wpessimizing-move @r{(only for C++)}
--Wpointer-sign
--Wrange-loop-construct @r{(only for C++)}
--Wreorder
+-Wpessimizing-move @r{(C++ and Objective-C++ only)}
+-Wpointer-sign @r{(only for C/ObjC)}
+-Wrange-loop-construct @r{(C++ and Objective-C++ only)}
+-Wreorder @r{(C++ and Objective-C++ only)}
-Wrestrict
-Wreturn-type
--Wself-move @r{(only for C++)}
+-Wself-move @r{(C++ and Objective-C++ only)}
-Wsequence-point
--Wsign-compare @r{(only in C++)}
+-Wsign-compare @r{(C++ and Objective-C++ only)}
-Wsizeof-array-div
-Wsizeof-pointer-div
-Wsizeof-pointer-memaccess
@@ -6257,12 +6272,16 @@ Options} and @ref{Objective-C and Objective-C++ Dialect Options}.
-Wtrigraphs
-Wuninitialized
-Wunknown-pragmas
+-Wunused
+-Wunused-but-set-variable
+-Wunused-const-variable=1 @r{(only for C/ObjC)}
-Wunused-function
-Wunused-label
+-Wunused-local-typedefs
-Wunused-value
-Wunused-variable
-Wuse-after-free=2
--Wvla-parameter @r{(C and Objective-C only)}
+-Wvla-parameter
-Wvolatile-register-var
-Wzero-length-bounds}
@@ -6282,27 +6301,32 @@ This enables some extra warning flags that are not enabled by
@option{-Wall}. (This option used to be called @option{-W}. The older
name is still supported, but the newer name is more descriptive.)
-@gccoptlist{-Wclobbered
+@gccoptlist{-Wabsolute-value @r{(only for C/ObjC)}
+-Walloc-size
+-Wcalloc-transposed-args
-Wcast-function-type
--Wdeprecated-copy @r{(C++ only)}
+-Wclobbered
+-Wdeprecated-copy @r{(C++ and Objective-C++ only)}
-Wempty-body
--Wenum-conversion @r{(C only)}
--Wignored-qualifiers
+-Wenum-conversion @r{(only for C/ObjC)}
+-Wexpansion-to-defined
+-Wignored-qualifiers @r{(only for C/C++)}
-Wimplicit-fallthrough=3
+-Wmaybe-uninitialized
-Wmissing-field-initializers
--Wmissing-parameter-type @r{(C only)}
--Wold-style-declaration @r{(C only)}
--Woverride-init
--Wsign-compare @r{(C only)}
+-Wmissing-parameter-type @r{(C/ObjC only)}
+-Wold-style-declaration @r{(C/ObjC only)}
+-Woverride-init @r{(C/ObjC only)}
+-Wredundant-move @r{(C++ and Objective-C++ only)}
+-Wshift-negative-value @r{(in C++11 to C++17 and in C99 and newer)}
+-Wsign-compare @r{(C++ and Objective-C++ only)}
+-Wsized-deallocation @r{(C++ and Objective-C++ only)}
-Wstring-compare
--Wredundant-move @r{(only for C++)}
-Wtype-limits
-Wuninitialized
--Wshift-negative-value @r{(in C++11 to C++17 and in C99 and newer)}
-Wunused-parameter @r{(only with} @option{-Wunused} @r{or} @option{-Wall}@r{)}
-Wunused-but-set-parameter @r{(only with} @option{-Wunused} @r{or} @option{-Wall}@r{)}}
-
The option @option{-Wextra} also prints warning messages for the
following cases:
@@ -7597,6 +7621,8 @@ This warning is enabled by @option{-Wall}.
@opindex Wno-unused-parameter
@item -Wunused-parameter
Warn whenever a function parameter is unused aside from its declaration.
+This option is not enabled by @code{-Wunused} unless @code{-Wextra} is also
+specified.
To suppress this warning use the @code{unused} attribute
(@pxref{Variable Attributes}).
@@ -7623,25 +7649,26 @@ To suppress this warning use the @code{unused} attribute
@item -Wunused-const-variable
@itemx -Wunused-const-variable=@var{n}
Warn whenever a constant static variable is unused aside from its declaration.
-@option{-Wunused-const-variable=1} is enabled by @option{-Wunused-variable}
-for C, but not for C++. In C this declares variable storage, but in C++ this
-is not an error since const variables take the place of @code{#define}s.
To suppress this warning use the @code{unused} attribute
(@pxref{Variable Attributes}).
@table @gcctabopt
@item -Wunused-const-variable=1
-This is the warning level that is enabled by @option{-Wunused-variable} for
-C. It warns only about unused static const variables defined in the main
+Warn about unused static const variables defined in the main
compilation unit, but not about static const variables declared in any
header included.
+@option{-Wunused-const-variable=1} is enabled by either
+@option{-Wunused-variable} or @option{-Wunused} for C, but not for
+C++. In C this declares variable storage, but in C++ this is not an
+error since const variables take the place of @code{#define}s.
+
@item -Wunused-const-variable=2
This warning level also warns for unused constant static variables in
-headers (excluding system headers). This is the warning level of
-@option{-Wunused-const-variable} and must be explicitly requested since
-in C++ this isn't an error and in C it might be harder to clean up all
+headers (excluding system headers). It is equivalent to the short form
+@option{-Wunused-const-variable}. This level must be explicitly
+requested in both C and C++ because it might be hard to clean up all
headers included.
@end table
@@ -7660,11 +7687,16 @@ This warning is enabled by @option{-Wall}.
@opindex Wunused
@opindex Wno-unused
@item -Wunused
-All the above @option{-Wunused} options combined.
+All the above @option{-Wunused} options combined, except those documented
+as needing to be specified explicitly.
In order to get a warning about an unused function parameter, you must
either specify @option{-Wextra -Wunused} (note that @option{-Wall} implies
-@option{-Wunused}), or separately specify @option{-Wunused-parameter}.
+@option{-Wunused}), or separately specify @option{-Wunused-parameter} and/or
+@option{-Wunused-but-set-parameter}.
+
+@option{-Wunused} enables only @option{-Wunused-const-variable=1} rather than
+@option{-Wunused-const-variable}, and only for C, not C++.
@opindex Wuse-after-free
@opindex Wno-use-after-free
@@ -8467,25 +8499,28 @@ bool same = arr1 == arr2;
@option{-Warray-compare} is enabled by @option{-Wall}.
@opindex Wno-array-parameter
+@opindex Warray-parameter
@item -Warray-parameter
@itemx -Warray-parameter=@var{n}
-Warn about redeclarations of functions involving arguments of array or
+Warn about redeclarations of functions involving parameters of array or
pointer types of inconsistent kinds or forms, and enable the detection
of out-of-bounds accesses to such parameters by warnings such as
@option{-Warray-bounds}.
-If the first function declaration uses the array form the bound specified
+If the first function declaration uses the array form for a parameter
+declaration, the bound specified
in the array is assumed to be the minimum number of elements expected to
be provided in calls to the function and the maximum number of elements
accessed by it. Failing to provide arguments of sufficient size or accessing
more than the maximum number of elements may be diagnosed by warnings such
-as @option{-Warray-bounds}. At level 1 the warning diagnoses inconsistencies
+as @option{-Warray-bounds} or @option{-Wstringop-overflow}.
+At level 1, the warning diagnoses inconsistencies
involving array parameters declared using the @code{T[static N]} form.
-For example, the warning triggers for the following redeclarations because
-the first one allows an array of any size to be passed to @code{f} while
-the second one with the keyword @code{static} specifies that the array
-argument must have at least four elements.
+For example, the warning triggers for the second declaration of @code{f}
+because the first one with the keyword @code{static} specifies that
+the array argument must have at least four elements, while the second
+allows an array of any size to be passed to @code{f}.
@smallexample
void f (int[static 4]);
@@ -8493,7 +8528,7 @@ void f (int[]); // warning (inconsistent array form)
void g (void)
@{
- int *p = (int *)malloc (4);
+ int *p = (int *)malloc (1 * sizeof (int));
f (p); // warning (array too small)
@dots{}
@}
@@ -8514,6 +8549,10 @@ void g (int[8]); // warning (inconsistent array bound)
@option{-Wvla-parameter} option triggers warnings for similar inconsistencies
involving Variable Length Array arguments.
+The short form of the option @option{-Warray-parameter} is equivalent to
+@option{-Warray-parameter=2}. The negative form @option{-Wno-array-parameter}
+is equivalent to @option{-Warray-parameter=0}.
+
@opindex Wattribute-alias
@opindex Wno-attribute-alias
@item -Wattribute-alias=@var{n}
@@ -9415,51 +9454,63 @@ levels but may yield different results with optimization than without.
@table @gcctabopt
@item -Wdangling-pointer=1
-At level 1 the warning diagnoses only unconditional uses of dangling pointers.
-For example
+At level 1, the warning diagnoses only unconditional uses of dangling pointers.
+
+@item -Wdangling-pointer=2
+At level 2, in addition to unconditional uses the warning also diagnoses
+conditional uses of dangling pointers.
+@end table
+
+The short form @option{-Wdangling-pointer} is equivalent to
+@option{-Wdangling-pointer=2}, while @option{-Wno-dangling-pointer} and
+@option{-Wdangling-pointer=0} have the same effect of disabling the warnings.
+@option{-Wdangling-pointer=2} is included in @option{-Wall}.
+
+This example triggers the warning at level 1; the address of the unnamed
+temporary is unconditionally referenced outside of its scope.
+
@smallexample
-int f (int c1, int c2, x)
+char f (char c1, char c2, char c3)
@{
- char *p = strchr ((char[])@{ c1, c2 @}, c3);
- // warning: dangling pointer to a compound literal
- return p ? *p : 'x';
+ char *p;
+ @{
+ p = (char[]) @{ c1, c2, c3 @};
+ @}
+ // warning: using dangling pointer 'p' to an unnamed temporary
+ return *p;
@}
@end smallexample
+
In the following function the store of the address of the local variable
-@code{x} in the escaped pointer @code{*p} also triggers the warning.
+@code{x} in the escaped pointer @code{*p} triggers the warning at
+level 1.
+
@smallexample
void g (int **p)
@{
int x = 7;
- // warning: storing the address of a local variable in *p
+ // warning: storing the address of local variable 'x' in '*p'
*p = &x;
@}
@end smallexample
-@item -Wdangling-pointer=2
-At level 2, in addition to unconditional uses the warning also diagnoses
-conditional uses of dangling pointers.
-
-For example, because the array @var{a} in the following function is out of
-scope when the pointer @var{s} that was set to point is used, the warning
-triggers at this level.
+In this example, the array @var{a} is out of
+scope when the pointer @var{s} is used. Since the code that sets @code{s}
+is conditional, the warning triggers at level 2.
@smallexample
-void f (char *s)
+extern void frob (const char *);
+void h (char *s)
@{
if (!s)
@{
char a[12] = "tmpname";
s = a;
@}
- // warning: dangling pointer to a may be used
- strcat (s, ".tmp");
- ...
+ // warning: dangling pointer 's' to 'a' may be used
+ frob (s);
@}
@end smallexample
-@end table
-
-@option{-Wdangling-pointer=2} is included in @option{-Wall}.
@opindex Wdate-time
@opindex Wno-date-time
@@ -14184,6 +14235,9 @@ Align the start of functions to the next power-of-two greater than or
equal to @var{n}, skipping up to @var{m}-1 bytes. This ensures that at
least the first @var{m} bytes of the function can be fetched by the CPU
without crossing an @var{n}-byte alignment boundary.
+This is an optimization of code performance and alignment is ignored for
+functions considered cold. If alignment is required for all functions,
+use @option{-fmin-function-alignment}.
If @var{m} is not specified, it defaults to @var{n}.
@@ -14247,6 +14301,8 @@ Enabled at levels @option{-O2}, @option{-O3}.
Align loops to a power-of-two boundary. If the loops are executed
many times, this makes up for any execution of the dummy padding
instructions.
+This is an optimization of code performance and alignment is ignored for
+loops considered cold.
If @option{-falign-labels} is greater than this value, then its value
is used instead.
@@ -14269,6 +14325,8 @@ Enabled at levels @option{-O2}, @option{-O3}.
Align branch targets to a power-of-two boundary, for branch targets
where the targets can only be reached by jumping. In this case,
no dummy operations need be executed.
+This is an optimization of code performance and alignment is ignored for
+jumps considered cold.
If @option{-falign-labels} is greater than this value, then its value
is used instead.
@@ -14282,6 +14340,14 @@ The maximum allowed @var{n} option value is 65536.
Enabled at levels @option{-O2}, @option{-O3}.
+@opindex fmin-function-alignment=@var{n}
+@item -fmin-function-alignment
+Specify minimal alignment of functions to the next power-of-two greater than or
+equal to @var{n}. Unlike @option{-falign-functions} this alignment is applied
+also to all functions (even those considered cold). The alignment is also not
+affected by @option{-flimit-function-alignment}
+
+
@opindex fno-allocation-dce
@item -fno-allocation-dce
Do not remove unused C++ allocations in dead code elimination.
@@ -14378,7 +14444,7 @@ To use the link-time optimizer, @option{-flto} and optimization
options should be specified at compile time and during the final link.
It is recommended that you compile all the files participating in the
same link with the same options and also specify those options at
-link time.
+link time.
For example:
@smallexample
@@ -19457,8 +19523,8 @@ for nested functions.
By default, trampolines are generated on stack. However, certain platforms
(such as the Apple M1) do not permit an executable stack. Compiling with
@option{-ftrampoline-impl=heap} generate calls to
-@code{__builtin_nested_func_ptr_created} and
-@code{__builtin_nested_func_ptr_deleted} in order to allocate and
+@code{__gcc_nested_func_ptr_created} and
+@code{__gcc_nested_func_ptr_deleted} in order to allocate and
deallocate trampoline space on the executable heap. These functions are
implemented in libgcc, and will only be provided on specific targets:
x86_64 Darwin, x86_64 and aarch64 Linux. @emph{PLEASE NOTE}: Heap
@@ -21673,6 +21739,12 @@ Compile for CDNA1 Instinct MI100 series devices (gfx908).
@item gfx90a
Compile for CDNA2 Instinct MI200 series devices (gfx90a).
+@item gfx1030
+Compile for RDNA2 gfx1030 devices (GFX10 series).
+
+@item gfx1100
+Compile for RDNA3 gfx1100 devices (GFX11 series).
+
@end table
@opindex msram-ecc
@@ -28368,16 +28440,20 @@ Enable (disable) use of the @code{%hi()} and @code{%lo()} assembler
relocation operators. This option has been superseded by
@option{-mexplicit-relocs} but is retained for backwards compatibility.
-@opindex mexplicit-relocs
-@opindex mno-explicit-relocs
-@item -mexplicit-relocs
+@opindex mexplicit-relocs=none
+@opindex mexplicit-relocs=base
+@opindex mexplicit-relocs=pcrel
+@item -mexplicit-relocs=none
+@itemx -mexplicit-relocs=base
+@itemx -mexplicit-relocs=pcrel
+@itemx -mexplicit-relocs
@itemx -mno-explicit-relocs
-Use (do not use) assembler relocation operators when dealing with symbolic
-addresses. The alternative, selected by @option{-mno-explicit-relocs},
-is to use assembler macros instead.
+These options control whether explicit relocs (such as %gp_rel) are used.
+The default value depends on the version of GAS when GCC itself was built.
-@option{-mexplicit-relocs} is the default if GCC was configured
-to use an assembler that supports relocation operators.
+The @code{base} explicit-relocs support introdunced into GAS in 2001.
+The @code{pcrel} explicit-relocs support introdunced into GAS in 2014,
+which supports @code{%pcrel_hi} and @code{%pcrel_lo}.
@opindex mcheck-zero-division
@opindex mno-check-zero-division
@@ -30097,6 +30173,483 @@ Generate code for given RISC-V ISA (e.g.@: @samp{rv64im}). ISA strings must be
lower-case. Examples include @samp{rv64i}, @samp{rv32g}, @samp{rv32e}, and
@samp{rv32imaf}.
+The syntax of the ISA string is defined as follows:
+
+@table @code
+@item The string must start with @samp{rv32} or @samp{rv64}, followed by
+@samp{i}, @samp{e}, or @samp{g}, referred to as the base ISA.
+@item The subsequent part of the string is a list of extension names. Extension
+names can be categorized as multi-letter (e.g.@: @samp{zba}) and single-letter
+(e.g.@: @samp{v}). Single-letter extensions can appear consecutively,
+but multi-letter extensions must be separated by underscores.
+@item An underscore can appear anywhere after the base ISA. It has no specific
+effect but is used to improve readability and can act as a separator.
+@item Extension names may include an optional version number, following the
+syntax @samp{<major>p<minor>} or @samp{<major>}, (e.g.@: @samp{m2p1} or
+@samp{m2}).
+@end table
+
+Supported extension are listed below:
+@multitable @columnfractions .10 .10 .80
+@headitem Extension Name @tab Supported Version @tab Description
+@item i
+@tab 2.0, 2.1
+@tab Base integer extension.
+
+@item e
+@tab 2.0
+@tab Reduced base integer extension.
+
+@item g
+@tab -
+@tab General-purpose computing base extension, @samp{g} will expand to
+@samp{i}, @samp{m}, @samp{a}, @samp{f}, @samp{d}, @samp{zicsr} and
+@samp{zifencei}.
+
+@item m
+@tab 2.0
+@tab Integer multiplication and division extension.
+
+@item a
+@tab 2.0, 2.1
+@tab Atomic extension.
+
+@item f
+@tab 2.0, 2.2
+@tab Single-precision floating-point extension.
+
+@item d
+@tab 2.0, 2.2
+@tab Double-precision floating-point extension.
+
+@item c
+@tab 2.0
+@tab Compressed extension.
+
+@item h
+@tab 1.0
+@tab Hypervisor extension.
+
+@item v
+@tab 1.0
+@tab Vector extension.
+
+@item zicsr
+@tab 2.0
+@tab Control and status register access extension.
+
+@item zifencei
+@tab 2.0
+@tab Instruction-fetch fence extension.
+
+@item zicond
+@tab 1.0
+@tab Integer conditional operations extension.
+
+@item zawrs
+@tab 1.0
+@tab Wait-on-reservation-set extension.
+
+@item zba
+@tab 1.0
+@tab Address calculation extension.
+
+@item zbb
+@tab 1.0
+@tab Basic bit manipulation extension.
+
+@item zbc
+@tab 1.0
+@tab Carry-less multiplication extension.
+
+@item zbs
+@tab 1.0
+@tab Single-bit operation extension.
+
+@item zfinx
+@tab 1.0
+@tab Single-precision floating-point in integer registers extension.
+
+@item zdinx
+@tab 1.0
+@tab Double-precision floating-point in integer registers extension.
+
+@item zhinx
+@tab 1.0
+@tab Half-precision floating-point in integer registers extension.
+
+@item zhinxmin
+@tab 1.0
+@tab Minimal half-precision floating-point in integer registers extension.
+
+@item zbkb
+@tab 1.0
+@tab Cryptography bit-manipulation extension.
+
+@item zbkc
+@tab 1.0
+@tab Cryptography carry-less multiply extension.
+
+@item zbkx
+@tab 1.0
+@tab Cryptography crossbar permutation extension.
+
+@item zkne
+@tab 1.0
+@tab AES Encryption extension.
+
+@item zknd
+@tab 1.0
+@tab AES Decryption extension.
+
+@item zknh
+@tab 1.0
+@tab Hash function extension.
+
+@item zkr
+@tab 1.0
+@tab Entropy source extension.
+
+@item zksed
+@tab 1.0
+@tab SM4 block cipher extension.
+
+@item zksh
+@tab 1.0
+@tab SM3 hash function extension.
+
+@item zkt
+@tab 1.0
+@tab Data independent execution latency extension.
+
+@item zk
+@tab 1.0
+@tab Standard scalar cryptography extension.
+
+@item zkn
+@tab 1.0
+@tab NIST algorithm suite extension.
+
+@item zks
+@tab 1.0
+@tab ShangMi algorithm suite extension.
+
+@item zihintntl
+@tab 1.0
+@tab Non-temporal locality hints extension.
+
+@item zihintpause
+@tab 1.0
+@tab Pause hint extension.
+
+@item zicboz
+@tab 1.0
+@tab Cache-block zero extension.
+
+@item zicbom
+@tab 1.0
+@tab Cache-block management extension.
+
+@item zicbop
+@tab 1.0
+@tab Cache-block prefetch extension.
+
+@item zicntr
+@tab 2.0
+@tab Standard extension for base counters and timers.
+
+@item zihpm
+@tab 2.0
+@tab Standard extension for hardware performance counters.
+
+@item ztso
+@tab 1.0
+@tab Total store ordering extension.
+
+@item zve32x
+@tab 1.0
+@tab Vector extensions for embedded processors.
+
+@item zve32f
+@tab 1.0
+@tab Vector extensions for embedded processors.
+
+@item zve64x
+@tab 1.0
+@tab Vector extensions for embedded processors.
+
+@item zve64f
+@tab 1.0
+@tab Vector extensions for embedded processors.
+
+@item zve64d
+@tab 1.0
+@tab Vector extensions for embedded processors.
+
+@item zvl32b
+@tab 1.0
+@tab Minimum vector length standard extensions
+
+@item zvl64b
+@tab 1.0
+@tab Minimum vector length standard extensions
+
+@item zvl128b
+@tab 1.0
+@tab Minimum vector length standard extensions
+
+@item zvl256b
+@tab 1.0
+@tab Minimum vector length standard extensions
+
+@item zvl512b
+@tab 1.0
+@tab Minimum vector length standard extensions
+
+@item zvl1024b
+@tab 1.0
+@tab Minimum vector length standard extensions
+
+@item zvl2048b
+@tab 1.0
+@tab Minimum vector length standard extensions
+
+@item zvl4096b
+@tab 1.0
+@tab Minimum vector length standard extensions
+
+@item zvbb
+@tab 1.0
+@tab Vector basic bit-manipulation extension.
+
+@item zvbc
+@tab 1.0
+@tab Vector carryless multiplication extension.
+
+@item zvkb
+@tab 1.0
+@tab Vector cryptography bit-manipulation extension.
+
+@item zvkg
+@tab 1.0
+@tab Vector GCM/GMAC extension.
+
+@item zvkned
+@tab 1.0
+@tab Vector AES block cipher extension.
+
+@item zvknha
+@tab 1.0
+@tab Vector SHA-2 secure hash extension.
+
+@item zvknhb
+@tab 1.0
+@tab Vector SHA-2 secure hash extension.
+
+@item zvksed
+@tab 1.0
+@tab Vector SM4 Block Cipher extension.
+
+@item zvksh
+@tab 1.0
+@tab Vector SM3 Secure Hash extension.
+
+@item zvkn
+@tab 1.0
+@tab Vector NIST Algorithm Suite extension, @samp{zvkn} will expand to
+@samp{zvkned}, @samp{zvknhb}, @samp{zvkb} and @samp{zvkt}.
+
+@item zvknc
+@tab 1.0
+@tab Vector NIST Algorithm Suite with carryless multiply extension, @samp{zvknc}
+will expand to @samp{zvkn} and @samp{zvbc}.
+
+@item zvkng
+@tab 1.0
+@tab Vector NIST Algorithm Suite with GCM extension, @samp{zvkng} will expand
+to @samp{zvkn} and @samp{zvkg}.
+
+@item zvks
+@tab 1.0
+@tab Vector ShangMi algorithm suite extension, @samp{zvks} will expand
+to @samp{zvksed}, @samp{zvksh}, @samp{zvkb} and @samp{zvkt}.
+
+@item zvksc
+@tab 1.0
+@tab Vector ShangMi algorithm suite with carryless multiplication extension,
+@samp{zvksc} will expand to @samp{zvks} and @samp{zvbc}.
+
+@item zvksg
+@tab 1.0
+@tab Vector ShangMi algorithm suite with GCM extension, @samp{zvksg} will expand
+to @samp{zvks} and @samp{zvkg}.
+
+@item zvkt
+@tab 1.0
+@tab Vector data independent execution latency extension.
+
+@item zfh
+@tab 1.0
+@tab Half-precision floating-point extension.
+
+@item zfhmin
+@tab 1.0
+@tab Minimal half-precision floating-point extension.
+
+@item zvfh
+@tab 1.0
+@tab Vector half-precision floating-point extension.
+
+@item zvfhmin
+@tab 1.0
+@tab Vector minimal half-precision floating-point extension.
+
+@item zvfbfmin
+@tab 1.0
+@tab Vector BF16 converts extension.
+
+@item zfa
+@tab 1.0
+@tab Additional floating-point extension.
+
+@item zmmul
+@tab 1.0
+@tab Integer multiplication extension.
+
+@item zca
+@tab 1.0
+@tab Integer compressed instruction extension.
+
+@item zcf
+@tab 1.0
+@tab Compressed single-precision floating point loads and stores extension.
+
+@item zcd
+@tab 1.0
+@tab Compressed double-precision floating point loads and stores extension.
+
+@item zcb
+@tab 1.0
+@tab Simple compressed instruction extension.
+
+@item zce
+@tab 1.0
+@tab Compressed instruction extensions for embedded processors.
+
+@item zcmp
+@tab 1.0
+@tab Compressed push pop extension.
+
+@item zcmt
+@tab 1.0
+@tab Table jump instruction extension.
+
+@item smaia
+@tab 1.0
+@tab Advanced interrupt architecture extension.
+
+@item smepmp
+@tab 1.0
+@tab PMP Enhancements for memory access and execution prevention on Machine mode.
+
+@item smstateen
+@tab 1.0
+@tab State enable extension.
+
+@item ssaia
+@tab 1.0
+@tab Advanced interrupt architecture extension for supervisor-mode.
+
+@item sscofpmf
+@tab 1.0
+@tab Count overflow & filtering extension.
+
+@item ssstateen
+@tab 1.0
+@tab State-enable extension for supervisor-mode.
+
+@item sstc
+@tab 1.0
+@tab Supervisor-mode timer interrupts extension.
+
+@item svinval
+@tab 1.0
+@tab Fine-grained address-translation cache invalidation extension.
+
+@item svnapot
+@tab 1.0
+@tab NAPOT translation contiguity extension.
+
+@item svpbmt
+@tab 1.0
+@tab Page-based memory types extension.
+
+@item xcvmac
+@tab 1.0
+@tab Core-V multiply-accumulate extension.
+
+@item xcvalu
+@tab 1.0
+@tab Core-V miscellaneous ALU extension.
+
+@item xcvelw
+@tab 1.0
+@tab Core-V event load word extension.
+
+@item xtheadba
+@tab 1.0
+@tab T-head address calculation extension.
+
+@item xtheadbb
+@tab 1.0
+@tab T-head basic bit-manipulation extension.
+
+@item xtheadbs
+@tab 1.0
+@tab T-head single-bit instructions extension.
+
+@item xtheadcmo
+@tab 1.0
+@tab T-head cache management operations extension.
+
+@item xtheadcondmov
+@tab 1.0
+@tab T-head conditional move extension.
+
+@item xtheadfmemidx
+@tab 1.0
+@tab T-head indexed memory operations for floating-point registers extension.
+
+@item xtheadfmv
+@tab 1.0
+@tab T-head double floating-point high-bit data transmission extension.
+
+@item xtheadint
+@tab 1.0
+@tab T-head acceleration interruption extension.
+
+@item xtheadmac
+@tab 1.0
+@tab T-head multiply-accumulate extension.
+
+@item xtheadmemidx
+@tab 1.0
+@tab T-head indexed memory operation extension.
+
+@item xtheadmempair
+@tab 1.0
+@tab T-head two-GPR memory operation extension.
+
+@item xtheadsync
+@tab 1.0
+@tab T-head multi-core synchronization extension.
+
+@item xventanacondops
+@tab 1.0
+@tab Ventana integer conditional operations extension.
+
+@end multitable
+
When @option{-march=} is not specified, use the setting from @option{-mcpu}.
If both @option{-march} and @option{-mcpu=} are not specified, the default for
diff --git a/gcc/doc/rtl.texi b/gcc/doc/rtl.texi
index 34034a9..8ea6588 100644
--- a/gcc/doc/rtl.texi
+++ b/gcc/doc/rtl.texi
@@ -1843,7 +1843,7 @@ vector. For example @{ 0, 1 @} could be seen as two patterns with
one element each or one pattern with two elements (@var{base0} and
@var{base1}). The canonical encoding is always the one with the
fewest patterns or (if both encodings have the same number of
-petterns) the one with the fewest encoded elements.
+patterns) the one with the fewest encoded elements.
@samp{const_vector_encoding_nelts (@var{v})} gives the total number of
encoded elements in @var{v}, which is 6 in the example above.
diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi
index 8082100..193be197 100644
--- a/gcc/doc/sourcebuild.texi
+++ b/gcc/doc/sourcebuild.texi
@@ -2352,6 +2352,26 @@ AArch64 target that is able to generate and execute armv8.3-a FJCVTZS
instruction.
@end table
+@subsubsection LoongArch specific attributes
+
+@table @code
+@item loongarch_sx
+LoongArch target that generates instructions for SX.
+
+@item loongarch_asx
+LoongArch target that generates instructions for ASX.
+
+@item loongarch_sx_hw
+LoongArch target that is able to generate and execute SX code.
+
+@item loongarch_asx_hw
+LoongArch target that is able to generate and execute ASX code.
+
+@item loongarch_call36_support
+LoongArch binutils supports call36 relocation.
+
+@end table
+
@subsubsection MIPS-specific attributes
@table @code
@@ -2505,6 +2525,9 @@ Test system has support for the CORE-V ALU extension.
@item cv_elw
Test system has support for the CORE-V ELW extension.
+@item cv_simd
+Test system has support for the CORE-V SIMD extension.
+
@end table
@subsubsection Other hardware attributes
diff --git a/gcc/dwarf2out.cc b/gcc/dwarf2out.cc
index 1c994bb..2b72321 100644
--- a/gcc/dwarf2out.cc
+++ b/gcc/dwarf2out.cc
@@ -6061,10 +6061,17 @@ dwarf2out_die_ref_for_decl (tree decl, const char **sym,
die = die->die_parent;
/* For the containing CU DIE we compute a die_symbol in
compute_comp_unit_symbol. */
- gcc_assert (die->die_tag == DW_TAG_compile_unit
- && die->die_id.die_symbol != NULL);
- *sym = die->die_id.die_symbol;
- return true;
+ if (die->die_tag == DW_TAG_compile_unit)
+ {
+ gcc_assert (die->die_id.die_symbol != NULL);
+ *sym = die->die_id.die_symbol;
+ return true;
+ }
+ /* While we can gracefully handle running into say a type unit
+ we don't really want and consider this a bug. */
+ if (flag_checking)
+ gcc_unreachable ();
+ return false;
}
/* Add a reference of kind ATTR_KIND to a DIE at SYMBOL + OFFSET to DIE. */
@@ -32276,24 +32283,12 @@ dwarf2out_finish (const char *filename)
reset_dies (comp_unit_die ());
for (limbo_die_node *node = cu_die_list; node; node = node->next)
reset_dies (node->die);
-
- hash_table<comdat_type_hasher> comdat_type_table (100);
for (ctnode = comdat_type_list; ctnode != NULL; ctnode = ctnode->next)
{
- comdat_type_node **slot
- = comdat_type_table.find_slot (ctnode, INSERT);
-
- /* Don't reset types twice. */
- if (*slot != HTAB_EMPTY_ENTRY)
- continue;
-
/* Remove the pointer to the line table. */
remove_AT (ctnode->root_die, DW_AT_stmt_list);
-
if (debug_info_level >= DINFO_LEVEL_TERSE)
reset_dies (ctnode->root_die);
-
- *slot = ctnode;
}
/* Reset die CU symbol so we don't output it twice. */
diff --git a/gcc/except.cc b/gcc/except.cc
index 9277a9a..2080fcc 100644
--- a/gcc/except.cc
+++ b/gcc/except.cc
@@ -2167,6 +2167,9 @@ expand_builtin_eh_return_data_regno (tree exp)
return constm1_rtx;
}
+ if (!tree_fits_uhwi_p (which))
+ return constm1_rtx;
+
iwhich = tree_to_uhwi (which);
iwhich = EH_RETURN_DATA_REGNO (iwhich);
if (iwhich == INVALID_REGNUM)
diff --git a/gcc/expr.cc b/gcc/expr.cc
index 34f5ff9..fc5e998 100644
--- a/gcc/expr.cc
+++ b/gcc/expr.cc
@@ -5532,11 +5532,12 @@ emit_push_insn (rtx x, machine_mode mode, tree type, rtx size,
/* Loop over all the words allocated on the stack for this arg. */
/* We can do it by words, because any scalar bigger than a word
has a size a multiple of a word. */
+ tree word_mode_type = lang_hooks.types.type_for_mode (word_mode, 1);
for (i = num_words - 1; i >= not_stack; i--)
if (i >= not_stack + offset)
if (!emit_push_insn (operand_subword_force (x, i, mode),
- word_mode, NULL_TREE, NULL_RTX, align, 0, NULL_RTX,
- 0, args_addr,
+ word_mode, word_mode_type, NULL_RTX, align, 0,
+ NULL_RTX, 0, args_addr,
GEN_INT (args_offset + ((i - not_stack + skip)
* UNITS_PER_WORD)),
reg_parm_stack_space, alignment_pad, sibcall_p))
@@ -6060,6 +6061,7 @@ expand_assignment (tree to, tree from, bool nontemporal)
to_rtx = adjust_address (to_rtx, BLKmode, 0);
}
+ rtx stemp = NULL_RTX, old_to_rtx = NULL_RTX;
if (offset != 0)
{
machine_mode address_mode;
@@ -6069,9 +6071,22 @@ expand_assignment (tree to, tree from, bool nontemporal)
{
/* We can get constant negative offsets into arrays with broken
user code. Translate this to a trap instead of ICEing. */
- gcc_assert (TREE_CODE (offset) == INTEGER_CST);
- expand_builtin_trap ();
- to_rtx = gen_rtx_MEM (BLKmode, const0_rtx);
+ if (TREE_CODE (offset) == INTEGER_CST)
+ {
+ expand_builtin_trap ();
+ to_rtx = gen_rtx_MEM (BLKmode, const0_rtx);
+ }
+ /* Else spill for variable offset to the destination. We expect
+ to run into this only for hard registers. */
+ else
+ {
+ gcc_assert (VAR_P (tem) && DECL_HARD_REGISTER (tem));
+ stemp = assign_stack_temp (GET_MODE (to_rtx),
+ GET_MODE_SIZE (GET_MODE (to_rtx)));
+ emit_move_insn (stemp, to_rtx);
+ old_to_rtx = to_rtx;
+ to_rtx = stemp;
+ }
}
offset_rtx = expand_expr (offset, NULL_RTX, VOIDmode, EXPAND_SUM);
@@ -6304,6 +6319,9 @@ expand_assignment (tree to, tree from, bool nontemporal)
bitregion_start, bitregion_end,
mode1, from, get_alias_set (to),
nontemporal, reversep);
+ /* Move the temporary storage back to the non-MEM_P. */
+ if (stemp)
+ emit_move_insn (old_to_rtx, stemp);
}
if (result)
@@ -11037,6 +11055,62 @@ stmt_is_replaceable_p (gimple *stmt)
return false;
}
+/* A subroutine of expand_expr_real_1. Expand gimple assignment G,
+ which is known to set an SSA_NAME result. The other arguments are
+ as for expand_expr_real_1. */
+
+rtx
+expand_expr_real_gassign (gassign *g, rtx target, machine_mode tmode,
+ enum expand_modifier modifier, rtx *alt_rtl,
+ bool inner_reference_p)
+{
+ separate_ops ops;
+ rtx r;
+ location_t saved_loc = curr_insn_location ();
+ auto loc = gimple_location (g);
+ if (loc != UNKNOWN_LOCATION)
+ set_curr_insn_location (loc);
+ tree lhs = gimple_assign_lhs (g);
+ ops.code = gimple_assign_rhs_code (g);
+ ops.type = TREE_TYPE (lhs);
+ switch (get_gimple_rhs_class (ops.code))
+ {
+ case GIMPLE_TERNARY_RHS:
+ ops.op2 = gimple_assign_rhs3 (g);
+ /* Fallthru */
+ case GIMPLE_BINARY_RHS:
+ ops.op1 = gimple_assign_rhs2 (g);
+
+ /* Try to expand conditonal compare. */
+ if (targetm.gen_ccmp_first)
+ {
+ gcc_checking_assert (targetm.gen_ccmp_next != NULL);
+ r = expand_ccmp_expr (g, TYPE_MODE (ops.type));
+ if (r)
+ break;
+ }
+ /* Fallthru */
+ case GIMPLE_UNARY_RHS:
+ ops.op0 = gimple_assign_rhs1 (g);
+ ops.location = loc;
+ r = expand_expr_real_2 (&ops, target, tmode, modifier);
+ break;
+ case GIMPLE_SINGLE_RHS:
+ {
+ r = expand_expr_real (gimple_assign_rhs1 (g), target,
+ tmode, modifier, alt_rtl,
+ inner_reference_p);
+ break;
+ }
+ default:
+ gcc_unreachable ();
+ }
+ set_curr_insn_location (saved_loc);
+ if (REG_P (r) && !REG_EXPR (r))
+ set_reg_attrs_for_decl_rtl (lhs, r);
+ return r;
+}
+
rtx
expand_expr_real_1 (tree exp, rtx target, machine_mode tmode,
enum expand_modifier modifier, rtx *alt_rtl,
@@ -11200,51 +11274,8 @@ expand_expr_real_1 (tree exp, rtx target, machine_mode tmode,
&& stmt_is_replaceable_p (SSA_NAME_DEF_STMT (exp)))
g = SSA_NAME_DEF_STMT (exp);
if (g)
- {
- rtx r;
- location_t saved_loc = curr_insn_location ();
- loc = gimple_location (g);
- if (loc != UNKNOWN_LOCATION)
- set_curr_insn_location (loc);
- ops.code = gimple_assign_rhs_code (g);
- switch (get_gimple_rhs_class (ops.code))
- {
- case GIMPLE_TERNARY_RHS:
- ops.op2 = gimple_assign_rhs3 (g);
- /* Fallthru */
- case GIMPLE_BINARY_RHS:
- ops.op1 = gimple_assign_rhs2 (g);
-
- /* Try to expand conditonal compare. */
- if (targetm.gen_ccmp_first)
- {
- gcc_checking_assert (targetm.gen_ccmp_next != NULL);
- r = expand_ccmp_expr (g, mode);
- if (r)
- break;
- }
- /* Fallthru */
- case GIMPLE_UNARY_RHS:
- ops.op0 = gimple_assign_rhs1 (g);
- ops.type = TREE_TYPE (gimple_assign_lhs (g));
- ops.location = loc;
- r = expand_expr_real_2 (&ops, target, tmode, modifier);
- break;
- case GIMPLE_SINGLE_RHS:
- {
- r = expand_expr_real (gimple_assign_rhs1 (g), target,
- tmode, modifier, alt_rtl,
- inner_reference_p);
- break;
- }
- default:
- gcc_unreachable ();
- }
- set_curr_insn_location (saved_loc);
- if (REG_P (r) && !REG_EXPR (r))
- set_reg_attrs_for_decl_rtl (SSA_NAME_VAR (exp), r);
- return r;
- }
+ return expand_expr_real_gassign (as_a<gassign *> (g), target, tmode,
+ modifier, alt_rtl, inner_reference_p);
ssa_name = exp;
decl_rtl = get_rtx_for_ssa_name (ssa_name);
@@ -12389,6 +12420,10 @@ expand_expr_real_1 (tree exp, rtx target, machine_mode tmode,
/* If the input and output modes are both the same, we are done. */
if (mode == GET_MODE (op0))
;
+ /* Similarly if the output mode is BLKmode and input is a MEM,
+ adjust_address done below is all we need. */
+ else if (mode == BLKmode && MEM_P (op0))
+ ;
/* If neither mode is BLKmode, and both modes are the same size
then we can use gen_lowpart. */
else if (mode != BLKmode
diff --git a/gcc/expr.h b/gcc/expr.h
index f04f40d..64956f6 100644
--- a/gcc/expr.h
+++ b/gcc/expr.h
@@ -302,6 +302,9 @@ extern rtx expand_expr_real_1 (tree, rtx, machine_mode,
enum expand_modifier, rtx *, bool);
extern rtx expand_expr_real_2 (sepops, rtx, machine_mode,
enum expand_modifier);
+extern rtx expand_expr_real_gassign (gassign *, rtx, machine_mode,
+ enum expand_modifier modifier,
+ rtx * = nullptr, bool = false);
/* Generate code for computing expression EXP.
An rtx for the computed value is returned. The value is never null.
diff --git a/gcc/fold-const.cc b/gcc/fold-const.cc
index 385e4a6..80e211e 100644
--- a/gcc/fold-const.cc
+++ b/gcc/fold-const.cc
@@ -1343,6 +1343,29 @@ distributes_over_addition_p (tree_code op, int opno)
}
}
+/* OP is the INDEXth operand to CODE (counting from zero) and OTHER_OP
+ is the other operand. Try to use the value of OP to simplify the
+ operation in one step, without having to process individual elements. */
+static tree
+simplify_const_binop (tree_code code, tree op, tree other_op,
+ int index ATTRIBUTE_UNUSED)
+{
+ /* AND, IOR as well as XOR with a zerop can be simplified directly. */
+ if (TREE_CODE (op) == VECTOR_CST && TREE_CODE (other_op) == VECTOR_CST)
+ {
+ if (integer_zerop (other_op))
+ {
+ if (code == BIT_IOR_EXPR || code == BIT_XOR_EXPR)
+ return op;
+ else if (code == BIT_AND_EXPR)
+ return other_op;
+ }
+ }
+
+ return NULL_TREE;
+}
+
+
/* Combine two constants ARG1 and ARG2 under operation CODE to produce a new
constant. We assume ARG1 and ARG2 have the same data type, or at least
are the same kind of constant and the same machine mode. Return zero if
@@ -1646,6 +1669,14 @@ const_binop (enum tree_code code, tree arg1, tree arg2)
return build_complex (type, real, imag);
}
+ tree simplified;
+ if ((simplified = simplify_const_binop (code, arg1, arg2, 0)))
+ return simplified;
+
+ if (commutative_tree_code (code)
+ && (simplified = simplify_const_binop (code, arg2, arg1, 1)))
+ return simplified;
+
if (TREE_CODE (arg1) == VECTOR_CST
&& TREE_CODE (arg2) == VECTOR_CST
&& known_eq (TYPE_VECTOR_SUBPARTS (TREE_TYPE (arg1)),
@@ -8773,8 +8804,7 @@ native_interpret_int (tree type, const unsigned char *ptr, int len)
else
total_bytes = GET_MODE_SIZE (SCALAR_INT_TYPE_MODE (type));
- if (total_bytes > len
- || total_bytes * BITS_PER_UNIT > HOST_BITS_PER_DOUBLE_INT)
+ if (total_bytes > len)
return NULL_TREE;
wide_int result = wi::from_buffer (ptr, total_bytes);
@@ -9329,9 +9359,10 @@ fold_view_convert_vector_encoding (tree type, tree expr)
static tree
fold_view_convert_expr (tree type, tree expr)
{
- /* We support up to 1024-bit values (for GCN/RISC-V V128QImode). */
unsigned char buffer[128];
+ unsigned char *buf;
int len;
+ HOST_WIDE_INT l;
/* Check that the host and target are sane. */
if (CHAR_BIT != 8 || BITS_PER_UNIT != 8)
@@ -9341,11 +9372,23 @@ fold_view_convert_expr (tree type, tree expr)
if (tree res = fold_view_convert_vector_encoding (type, expr))
return res;
- len = native_encode_expr (expr, buffer, sizeof (buffer));
+ l = int_size_in_bytes (type);
+ if (l > (int) sizeof (buffer)
+ && l <= WIDE_INT_MAX_PRECISION / BITS_PER_UNIT)
+ {
+ buf = XALLOCAVEC (unsigned char, l);
+ len = l;
+ }
+ else
+ {
+ buf = buffer;
+ len = sizeof (buffer);
+ }
+ len = native_encode_expr (expr, buf, len);
if (len == 0)
return NULL_TREE;
- return native_interpret_expr (type, buffer, len);
+ return native_interpret_expr (type, buf, len);
}
/* Build an expression for the address of T. Folds away INDIRECT_REF
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 7f853a1..22ca08d 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,42 @@
+2024-01-28 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/113377
+ * trans-expr.cc (conv_dummy_value): Treat NULL actual argument to
+ optional dummy with the VALUE attribute as not present.
+ (gfc_conv_procedure_call): Likewise.
+
+2024-01-27 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/104908
+ * trans-array.cc (gfc_conv_array_ref): Restrict use of transformed
+ descriptor (sym->backend_decl) to the unlimited polymorphic case.
+
+2024-01-24 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/113377
+ * trans-expr.cc (conv_dummy_value): New.
+ (gfc_conv_procedure_call): Factor code for handling dummy arguments
+ with the VALUE attribute in the scalar case into conv_dummy_value().
+ Reuse and adjust for calling elemental procedures.
+
+2024-01-21 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/113377
+ * trans-expr.cc (gfc_conv_procedure_call): Fix handling of optional
+ scalar arguments of intrinsic type with the VALUE attribute.
+
+2024-01-20 Mikael Morin <mikael@gcc.gnu.org>
+
+ PR fortran/48776
+ PR fortran/111291
+ * parse.cc: Restore current interface to its previous value on error.
+
+2024-01-19 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/113471
+ * trans-array.cc (array_bound_check_elemental): Array bounds check
+ shall apply here to elemental dimensions of an array section only.
+
2024-01-13 Harald Anlauf <anlauf@gmx.de>
PR fortran/67277
diff --git a/gcc/fortran/parse.cc b/gcc/fortran/parse.cc
index 98a04e7..a4fda6e 100644
--- a/gcc/fortran/parse.cc
+++ b/gcc/fortran/parse.cc
@@ -4038,6 +4038,7 @@ loop:
default:
gfc_error ("Unexpected %s statement in INTERFACE block at %C",
gfc_ascii_statement (st));
+ current_interface = save;
reject_statement ();
gfc_free_namespace (gfc_current_ns);
goto loop;
diff --git a/gcc/fortran/trans-array.cc b/gcc/fortran/trans-array.cc
index 26e7ada..1e0d698 100644
--- a/gcc/fortran/trans-array.cc
+++ b/gcc/fortran/trans-array.cc
@@ -3600,7 +3600,7 @@ array_bound_check_elemental (gfc_se * se, gfc_ss * ss, gfc_expr * expr)
continue;
}
- if (ref->type == REF_ARRAY && ref->u.ar.dimen > 0)
+ if (ref->type == REF_ARRAY && ref->u.ar.type == AR_SECTION)
{
ar = &ref->u.ar;
for (dim = 0; dim < ar->dimen; dim++)
@@ -4063,7 +4063,10 @@ gfc_conv_array_ref (gfc_se * se, gfc_array_ref * ar, gfc_expr *expr,
}
decl = se->expr;
- if (IS_CLASS_ARRAY (sym) && sym->attr.dummy && ar->as->type != AS_DEFERRED)
+ if (UNLIMITED_POLY(sym)
+ && IS_CLASS_ARRAY (sym)
+ && sym->attr.dummy
+ && ar->as->type != AS_DEFERRED)
decl = sym->backend_decl;
cst_offset = offset = gfc_index_zero_node;
diff --git a/gcc/fortran/trans-expr.cc b/gcc/fortran/trans-expr.cc
index 9dd1f40..67abca9 100644
--- a/gcc/fortran/trans-expr.cc
+++ b/gcc/fortran/trans-expr.cc
@@ -6075,6 +6075,105 @@ conv_cond_temp (gfc_se * parmse, gfc_expr * e, tree cond)
}
+/* Helper function for the handling of (currently) scalar dummy variables
+ with the VALUE attribute. Argument parmse should already be set up. */
+static void
+conv_dummy_value (gfc_se * parmse, gfc_expr * e, gfc_symbol * fsym,
+ vec<tree, va_gc> *& optionalargs)
+{
+ tree tmp;
+
+ gcc_assert (fsym && fsym->attr.value && !fsym->attr.dimension);
+
+ /* Absent actual argument for optional scalar dummy. */
+ if ((e == NULL || e->expr_type == EXPR_NULL) && fsym->attr.optional)
+ {
+ /* For scalar arguments with VALUE attribute which are passed by
+ value, pass "0" and a hidden argument for the optional status. */
+ if (fsym->ts.type == BT_CHARACTER)
+ {
+ /* Pass a NULL pointer for an absent CHARACTER arg and a length of
+ zero. */
+ parmse->expr = null_pointer_node;
+ parmse->string_length = build_int_cst (gfc_charlen_type_node, 0);
+ }
+ else
+ parmse->expr = fold_convert (gfc_sym_type (fsym),
+ integer_zero_node);
+ vec_safe_push (optionalargs, boolean_false_node);
+
+ return;
+ }
+
+ /* gfortran argument passing conventions:
+ actual arguments to CHARACTER(len=1),VALUE
+ dummy arguments are actually passed by value.
+ Strings are truncated to length 1. */
+ if (gfc_length_one_character_type_p (&fsym->ts))
+ {
+ if (e->expr_type == EXPR_CONSTANT
+ && e->value.character.length > 1)
+ {
+ e->value.character.length = 1;
+ gfc_conv_expr (parmse, e);
+ }
+
+ tree slen1 = build_int_cst (gfc_charlen_type_node, 1);
+ gfc_conv_string_parameter (parmse);
+ parmse->expr = gfc_string_to_single_character (slen1, parmse->expr,
+ e->ts.kind);
+ /* Truncate resulting string to length 1. */
+ parmse->string_length = slen1;
+ }
+
+ if (fsym->attr.optional
+ && fsym->ts.type != BT_CLASS
+ && fsym->ts.type != BT_DERIVED)
+ {
+ /* F2018:15.5.2.12 Argument presence and
+ restrictions on arguments not present. */
+ if (e->expr_type == EXPR_VARIABLE
+ && e->rank == 0
+ && (gfc_expr_attr (e).allocatable
+ || gfc_expr_attr (e).pointer))
+ {
+ gfc_se argse;
+ tree cond;
+ gfc_init_se (&argse, NULL);
+ argse.want_pointer = 1;
+ gfc_conv_expr (&argse, e);
+ cond = fold_convert (TREE_TYPE (argse.expr), null_pointer_node);
+ cond = fold_build2_loc (input_location, NE_EXPR,
+ logical_type_node,
+ argse.expr, cond);
+ vec_safe_push (optionalargs,
+ fold_convert (boolean_type_node, cond));
+ /* Create "conditional temporary". */
+ conv_cond_temp (parmse, e, cond);
+ }
+ else if (e->expr_type != EXPR_VARIABLE
+ || !e->symtree->n.sym->attr.optional
+ || (e->ref != NULL && e->ref->type != REF_ARRAY))
+ vec_safe_push (optionalargs, boolean_true_node);
+ else
+ {
+ tmp = gfc_conv_expr_present (e->symtree->n.sym);
+ if (e->ts.type != BT_CHARACTER && !e->symtree->n.sym->attr.value)
+ parmse->expr
+ = fold_build3_loc (input_location, COND_EXPR,
+ TREE_TYPE (parmse->expr),
+ tmp, parmse->expr,
+ fold_convert (TREE_TYPE (parmse->expr),
+ integer_zero_node));
+
+ vec_safe_push (optionalargs,
+ fold_convert (boolean_type_node, tmp));
+ }
+ }
+}
+
+
+
/* Generate code for a procedure call. Note can return se->post != NULL.
If se->direct_byref is set then se->expr contains the return parameter.
Return nonzero, if the call has alternate specifiers.
@@ -6255,7 +6354,14 @@ gfc_conv_procedure_call (gfc_se * se, gfc_symbol * sym,
e->ts = temp_ts;
}
- if (e == NULL)
+ if (e == NULL
+ || (e->expr_type == EXPR_NULL
+ && fsym
+ && fsym->attr.value
+ && fsym->attr.optional
+ && !fsym->attr.dimension
+ && fsym->ts.type != BT_DERIVED
+ && fsym->ts.type != BT_CLASS))
{
if (se->ignore_optional)
{
@@ -6279,19 +6385,7 @@ gfc_conv_procedure_call (gfc_se * se, gfc_symbol * sym,
&& !fsym->attr.dimension && fsym->ts.type != BT_CLASS
&& !gfc_bt_struct (sym->ts.type))
{
- if (fsym->ts.type == BT_CHARACTER)
- {
- /* Pass a NULL pointer for an absent CHARACTER arg
- and a length of zero. */
- parmse.expr = null_pointer_node;
- parmse.string_length
- = build_int_cst (gfc_charlen_type_node,
- 0);
- }
- else
- parmse.expr = fold_convert (gfc_sym_type (fsym),
- integer_zero_node);
- vec_safe_push (optionalargs, boolean_false_node);
+ conv_dummy_value (&parmse, e, fsym, optionalargs);
}
else
{
@@ -6392,12 +6486,20 @@ gfc_conv_procedure_call (gfc_se * se, gfc_symbol * sym,
}
}
+ /* Scalar dummy arguments of intrinsic type with VALUE attribute. */
+ if (fsym
+ && fsym->attr.value
+ && fsym->ts.type != BT_DERIVED
+ && fsym->ts.type != BT_CLASS)
+ conv_dummy_value (&parmse, e, fsym, optionalargs);
+
/* If we are passing an absent array as optional dummy to an
elemental procedure, make sure that we pass NULL when the data
pointer is NULL. We need this extra conditional because of
scalarization which passes arrays elements to the procedure,
ignoring the fact that the array can be absent/unallocated/... */
- if (ss->info->can_be_null_ref && ss->info->type != GFC_SS_REFERENCE)
+ else if (ss->info->can_be_null_ref
+ && ss->info->type != GFC_SS_REFERENCE)
{
tree descriptor_data;
@@ -6487,76 +6589,8 @@ gfc_conv_procedure_call (gfc_se * se, gfc_symbol * sym,
}
else
{
- gfc_conv_expr (&parmse, e);
-
- /* ABI: actual arguments to CHARACTER(len=1),VALUE
- dummy arguments are actually passed by value.
- Strings are truncated to length 1. */
- if (gfc_length_one_character_type_p (&fsym->ts))
- {
- if (e->expr_type == EXPR_CONSTANT
- && e->value.character.length > 1)
- {
- e->value.character.length = 1;
- gfc_conv_expr (&parmse, e);
- }
-
- tree slen1 = build_int_cst (gfc_charlen_type_node, 1);
- gfc_conv_string_parameter (&parmse);
- parmse.expr
- = gfc_string_to_single_character (slen1,
- parmse.expr,
- e->ts.kind);
- /* Truncate resulting string to length 1. */
- parmse.string_length = slen1;
- }
-
- if (fsym->attr.optional
- && fsym->ts.type != BT_CLASS
- && fsym->ts.type != BT_DERIVED)
- {
- /* F2018:15.5.2.12 Argument presence and
- restrictions on arguments not present. */
- if (e->expr_type == EXPR_VARIABLE
- && (gfc_expr_attr (e).allocatable
- || gfc_expr_attr (e).pointer))
- {
- gfc_se argse;
- tree cond;
- gfc_init_se (&argse, NULL);
- argse.want_pointer = 1;
- gfc_conv_expr (&argse, e);
- cond = fold_convert (TREE_TYPE (argse.expr),
- null_pointer_node);
- cond = fold_build2_loc (input_location, NE_EXPR,
- logical_type_node,
- argse.expr, cond);
- vec_safe_push (optionalargs,
- fold_convert (boolean_type_node,
- cond));
- /* Create "conditional temporary". */
- conv_cond_temp (&parmse, e, cond);
- }
- else if (e->expr_type != EXPR_VARIABLE
- || !e->symtree->n.sym->attr.optional
- || e->ref != NULL)
- vec_safe_push (optionalargs, boolean_true_node);
- else
- {
- tmp = gfc_conv_expr_present (e->symtree->n.sym);
- if (!e->symtree->n.sym->attr.value)
- parmse.expr
- = fold_build3_loc (input_location, COND_EXPR,
- TREE_TYPE (parmse.expr),
- tmp, parmse.expr,
- fold_convert (TREE_TYPE (parmse.expr),
- integer_zero_node));
-
- vec_safe_push (optionalargs,
- fold_convert (boolean_type_node,
- tmp));
- }
- }
+ gfc_conv_expr (&parmse, e);
+ conv_dummy_value (&parmse, e, fsym, optionalargs);
}
}
@@ -7256,6 +7290,7 @@ gfc_conv_procedure_call (gfc_se * se, gfc_symbol * sym,
&& e->symtree->n.sym->attr.optional
&& (((e->rank != 0 && elemental_proc)
|| e->representation.length || e->ts.type == BT_CHARACTER
+ || (e->rank == 0 && e->symtree->n.sym->attr.value)
|| (e->rank != 0
&& (fsym == NULL
|| (fsym->as
diff --git a/gcc/fwprop.cc b/gcc/fwprop.cc
index 0c588f8..7872609 100644
--- a/gcc/fwprop.cc
+++ b/gcc/fwprop.cc
@@ -180,7 +180,7 @@ namespace
bool changed_mem_p () const { return result_flags & CHANGED_MEM; }
bool folded_to_constants_p () const;
- bool profitable_p () const;
+ bool likely_profitable_p () const;
bool check_mem (int, rtx) final override;
void note_simplification (int, uint16_t, rtx, rtx) final override;
@@ -323,7 +323,7 @@ fwprop_propagation::folded_to_constants_p () const
false if it would increase the complexity of the pattern too much. */
bool
-fwprop_propagation::profitable_p () const
+fwprop_propagation::likely_profitable_p () const
{
if (changed_mem_p ())
return true;
@@ -398,7 +398,7 @@ try_fwprop_subst_note (insn_info *use_insn, set_info *def,
}
else
{
- if (!prop.folded_to_constants_p () && !prop.profitable_p ())
+ if (!prop.folded_to_constants_p () && !prop.likely_profitable_p ())
{
if (dump_file && (dump_flags & TDF_DETAILS))
fprintf (dump_file, "cannot propagate from insn %d into"
@@ -449,7 +449,10 @@ try_fwprop_subst_pattern (obstack_watermark &attempt, insn_change &use_change,
if (prop.num_replacements == 0)
return false;
- if (!prop.profitable_p ())
+ if (!prop.likely_profitable_p ()
+ && (prop.changed_mem_p ()
+ || use_insn->is_asm ()
+ || !single_set (use_rtl)))
{
if (dump_file && (dump_flags & TDF_DETAILS))
fprintf (dump_file, "cannot propagate from insn %d into"
@@ -481,7 +484,8 @@ try_fwprop_subst_pattern (obstack_watermark &attempt, insn_change &use_change,
redo_changes (0);
auto new_cost = set_src_cost (SET_SRC (use_set),
GET_MODE (SET_DEST (use_set)), speed);
- if (new_cost > old_cost)
+ if (new_cost > old_cost
+ || (new_cost == old_cost && !prop.likely_profitable_p ()))
{
if (dump_file)
fprintf (dump_file, "change not profitable"
diff --git a/gcc/genopinit.cc b/gcc/genopinit.cc
index 88ccafa..d8682b2 100644
--- a/gcc/genopinit.cc
+++ b/gcc/genopinit.cc
@@ -367,11 +367,44 @@ main (int argc, const char **argv)
fprintf (s_file, " { %#08x, CODE_FOR_%s },\n", p->sort_num, p->name);
fprintf (s_file, "};\n\n");
- fprintf (s_file, "void\ninit_all_optabs (struct target_optabs *optabs)\n{\n");
- fprintf (s_file, " bool *ena = optabs->pat_enable;\n");
- for (i = 0; patterns.iterate (i, &p); ++i)
- fprintf (s_file, " ena[%u] = HAVE_%s;\n", i, p->name);
- fprintf (s_file, "}\n\n");
+ /* Some targets like riscv have a large number of patterns. In order to
+ prevent pathological situations in dataflow analysis split the init
+ function into separate ones that initialize 1000 patterns each. */
+
+ const int patterns_per_function = 1000;
+
+ if (patterns.length () > patterns_per_function)
+ {
+ unsigned num_init_functions
+ = patterns.length () / patterns_per_function + 1;
+ for (i = 0; i < num_init_functions; i++)
+ {
+ fprintf (s_file, "static void\ninit_optabs_%02d "
+ "(struct target_optabs *optabs)\n{\n", i);
+ fprintf (s_file, " bool *ena = optabs->pat_enable;\n");
+ unsigned start = i * patterns_per_function;
+ unsigned end = MIN (patterns.length (),
+ (i + 1) * patterns_per_function);
+ for (j = start; j < end; ++j)
+ fprintf (s_file, " ena[%u] = HAVE_%s;\n", j, patterns[j].name);
+ fprintf (s_file, "}\n\n");
+ }
+
+ fprintf (s_file, "void\ninit_all_optabs "
+ "(struct target_optabs *optabs)\n{\n");
+ for (i = 0; i < num_init_functions; ++i)
+ fprintf (s_file, " init_optabs_%02d (optabs);\n", i);
+ fprintf (s_file, "}\n\n");
+ }
+ else
+ {
+ fprintf (s_file, "void\ninit_all_optabs "
+ "(struct target_optabs *optabs)\n{\n");
+ fprintf (s_file, " bool *ena = optabs->pat_enable;\n");
+ for (i = 0; patterns.iterate (i, &p); ++i)
+ fprintf (s_file, " ena[%u] = HAVE_%s;\n", i, p->name);
+ fprintf (s_file, "}\n\n");
+ }
fprintf (s_file,
"/* Returns TRUE if the target supports any of the partial vector\n"
diff --git a/gcc/gimple-isel.cc b/gcc/gimple-isel.cc
index 7e2392e..54c1801 100644
--- a/gcc/gimple-isel.cc
+++ b/gcc/gimple-isel.cc
@@ -104,7 +104,8 @@ gimple_expand_vec_set_extract_expr (struct function *fun,
machine_mode outermode = TYPE_MODE (TREE_TYPE (view_op0));
machine_mode extract_mode = TYPE_MODE (TREE_TYPE (ref));
- if (auto_var_in_fn_p (view_op0, fun->decl)
+ if ((auto_var_in_fn_p (view_op0, fun->decl)
+ || (VAR_P (view_op0) && DECL_HARD_REGISTER (view_op0)))
&& !TREE_ADDRESSABLE (view_op0)
&& ((!is_extract && can_vec_set_var_idx_p (outermode))
|| (is_extract
diff --git a/gcc/gimple-lower-bitint.cc b/gcc/gimple-lower-bitint.cc
index e48125d..af16745 100644
--- a/gcc/gimple-lower-bitint.cc
+++ b/gcc/gimple-lower-bitint.cc
@@ -1250,7 +1250,7 @@ bitint_large_huge::handle_cast (tree lhs_type, tree rhs1, tree idx)
{
tree rhs_type = TREE_TYPE (rhs1);
gimple *g;
- if (TREE_CODE (rhs1) == SSA_NAME
+ if ((TREE_CODE (rhs1) == SSA_NAME || TREE_CODE (rhs1) == INTEGER_CST)
&& TREE_CODE (lhs_type) == BITINT_TYPE
&& TREE_CODE (rhs_type) == BITINT_TYPE
&& bitint_precision_kind (lhs_type) >= bitint_prec_large
@@ -2401,6 +2401,8 @@ bitint_large_huge::lower_mergeable_stmt (gimple *stmt, tree_code &cmp_code,
rhs1 = gimple_assign_rhs1 (store_operand
? SSA_NAME_DEF_STMT (store_operand)
: stmt);
+ if (TREE_CODE (rhs1) == VIEW_CONVERT_EXPR)
+ rhs1 = TREE_OPERAND (rhs1, 0);
/* Optimize mergeable ops ending with widening cast to _BitInt
(or followed by store). We can lower just the limbs of the
cast operand and widen afterwards. */
@@ -6100,17 +6102,27 @@ gimple_lower_bitint (void)
&& (TREE_CODE (rhs1) != SSA_NAME
|| !SSA_NAME_OCCURS_IN_ABNORMAL_PHI (rhs1)))
{
- if (TREE_CODE (TREE_TYPE (rhs1)) != BITINT_TYPE
- || (bitint_precision_kind (TREE_TYPE (rhs1))
- < bitint_prec_large))
- continue;
if (is_gimple_assign (use_stmt))
switch (gimple_assign_rhs_code (use_stmt))
{
- case MULT_EXPR:
case TRUNC_DIV_EXPR:
case TRUNC_MOD_EXPR:
case FLOAT_EXPR:
+ /* For division, modulo and casts to floating
+ point, avoid representing unsigned operands
+ using negative prec if they were sign-extended
+ from narrower precision. */
+ if (TYPE_UNSIGNED (TREE_TYPE (s))
+ && !TYPE_UNSIGNED (TREE_TYPE (rhs1))
+ && (TYPE_PRECISION (TREE_TYPE (s))
+ > TYPE_PRECISION (TREE_TYPE (rhs1))))
+ goto force_name;
+ /* FALLTHRU */
+ case MULT_EXPR:
+ if (TREE_CODE (TREE_TYPE (rhs1)) != BITINT_TYPE
+ || (bitint_precision_kind (TREE_TYPE (rhs1))
+ < bitint_prec_large))
+ continue;
/* Uses which use handle_operand_addr can't
deal with nested casts. */
if (TREE_CODE (rhs1) == SSA_NAME
@@ -6124,6 +6136,10 @@ gimple_lower_bitint (void)
default:
break;
}
+ if (TREE_CODE (TREE_TYPE (rhs1)) != BITINT_TYPE
+ || (bitint_precision_kind (TREE_TYPE (rhs1))
+ < bitint_prec_large))
+ continue;
if ((TYPE_PRECISION (TREE_TYPE (rhs1))
>= TYPE_PRECISION (TREE_TYPE (s)))
&& mergeable_op (use_stmt))
@@ -6249,7 +6265,8 @@ gimple_lower_bitint (void)
if (is_gimple_debug (use_stmt))
continue;
if (gimple_code (use_stmt) == GIMPLE_PHI
- || is_gimple_call (use_stmt))
+ || is_gimple_call (use_stmt)
+ || gimple_code (use_stmt) == GIMPLE_ASM)
{
optimizable_load = false;
break;
@@ -6343,22 +6360,33 @@ gimple_lower_bitint (void)
}
}
tree atype = NULL_TREE;
+ if (dump_file && (dump_flags & TDF_DETAILS))
+ fprintf (dump_file, "Mapping SSA_NAMEs to decls:\n");
EXECUTE_IF_SET_IN_BITMAP (large_huge.m_names, 0, i, bi)
{
tree s = ssa_name (i);
int p = var_to_partition (large_huge.m_map, s);
- if (large_huge.m_vars[p] != NULL_TREE)
- continue;
- if (atype == NULL_TREE
- || !tree_int_cst_equal (TYPE_SIZE (atype),
- TYPE_SIZE (TREE_TYPE (s))))
+ if (large_huge.m_vars[p] == NULL_TREE)
+ {
+ if (atype == NULL_TREE
+ || !tree_int_cst_equal (TYPE_SIZE (atype),
+ TYPE_SIZE (TREE_TYPE (s))))
+ {
+ unsigned HOST_WIDE_INT nelts
+ = tree_to_uhwi (TYPE_SIZE (TREE_TYPE (s))) / limb_prec;
+ atype = build_array_type_nelts (large_huge.m_limb_type,
+ nelts);
+ }
+ large_huge.m_vars[p] = create_tmp_var (atype, "bitint");
+ mark_addressable (large_huge.m_vars[p]);
+ }
+ if (dump_file && (dump_flags & TDF_DETAILS))
{
- unsigned HOST_WIDE_INT nelts
- = tree_to_uhwi (TYPE_SIZE (TREE_TYPE (s))) / limb_prec;
- atype = build_array_type_nelts (large_huge.m_limb_type, nelts);
+ print_generic_expr (dump_file, s, TDF_SLIM);
+ fprintf (dump_file, " -> ");
+ print_generic_expr (dump_file, large_huge.m_vars[p], TDF_SLIM);
+ fprintf (dump_file, "\n");
}
- large_huge.m_vars[p] = create_tmp_var (atype, "bitint");
- mark_addressable (large_huge.m_vars[p]);
}
}
diff --git a/gcc/gimple-range-phi.cc b/gcc/gimple-range-phi.cc
index 5aee761..01900a3 100644
--- a/gcc/gimple-range-phi.cc
+++ b/gcc/gimple-range-phi.cc
@@ -254,7 +254,7 @@ phi_group::dump (FILE *f)
// Construct a phi analyzer which uses range_query G to pick up values.
-phi_analyzer::phi_analyzer (range_query &g) : m_global (g)
+phi_analyzer::phi_analyzer (range_query &g) : m_global (g), m_phi_groups (vNULL)
{
m_work.create (0);
m_work.safe_grow (20);
@@ -273,6 +273,9 @@ phi_analyzer::~phi_analyzer ()
bitmap_obstack_release (&m_bitmaps);
m_tab.release ();
m_work.release ();
+ for (auto grp : m_phi_groups)
+ delete grp;
+ m_phi_groups.release ();
}
// Return the group, if any, that NAME is part of. Do no analysis.
@@ -458,6 +461,7 @@ phi_analyzer::process_phi (gphi *phi)
if (!cyc.range ().varying_p ())
{
g = new phi_group (cyc);
+ m_phi_groups.safe_push (g);
if (dump_file && (dump_flags & TDF_DETAILS))
{
fprintf (dump_file, "PHI ANALYZER : New ");
diff --git a/gcc/gimple-range-phi.h b/gcc/gimple-range-phi.h
index 04747ba..a40aece 100644
--- a/gcc/gimple-range-phi.h
+++ b/gcc/gimple-range-phi.h
@@ -87,6 +87,7 @@ protected:
bitmap m_simple; // Processed, not part of a group.
bitmap m_current; // Potential group currently being analyzed.
+ vec<phi_group *> m_phi_groups;
vec<phi_group *> m_tab;
bitmap_obstack m_bitmaps;
};
diff --git a/gcc/gimple-ssa-warn-restrict.cc b/gcc/gimple-ssa-warn-restrict.cc
index dacb3b1..a552ce8 100644
--- a/gcc/gimple-ssa-warn-restrict.cc
+++ b/gcc/gimple-ssa-warn-restrict.cc
@@ -391,7 +391,8 @@ builtin_memref::extend_offset_range (tree offset)
tree type;
if (is_gimple_assign (stmt)
&& (type = TREE_TYPE (gimple_assign_rhs1 (stmt)))
- && INTEGRAL_TYPE_P (type))
+ && INTEGRAL_TYPE_P (type)
+ && TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (offset)))
{
tree_code code = gimple_assign_rhs_code (stmt);
if (code == NOP_EXPR)
diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE
index b41ac99..c2a6032 100644
--- a/gcc/go/gofrontend/MERGE
+++ b/gcc/go/gofrontend/MERGE
@@ -1,4 +1,4 @@
-61b29a99dadf33c48a0a063f50f61e877fb419b8
+ddf3758e4a45ca2816fb68f3e4224501a3c4c438
The first line of this file holds the git revision number of the last
merge done from the gofrontend repository.
diff --git a/gcc/go/gofrontend/expressions.cc b/gcc/go/gofrontend/expressions.cc
index a09d33b..51ff020 100644
--- a/gcc/go/gofrontend/expressions.cc
+++ b/gcc/go/gofrontend/expressions.cc
@@ -1007,7 +1007,7 @@ Expression::make_type(Type* type, Location location)
Expression*
Var_expression::do_lower(Gogo* gogo, Named_object* function,
- Statement_inserter* inserter, int)
+ Statement_inserter* inserter)
{
if (this->variable_->is_variable())
{
@@ -1158,7 +1158,7 @@ Enclosed_var_expression::do_traverse(Traverse*)
Expression*
Enclosed_var_expression::do_lower(Gogo* gogo, Named_object* function,
- Statement_inserter* inserter, int)
+ Statement_inserter* inserter)
{
gogo->lower_expression(function, inserter, &this->reference_);
return this;
@@ -2097,7 +2097,7 @@ Unknown_expression::do_is_addressable() const
// Lower a reference to an unknown name.
Expression*
-Unknown_expression::do_lower(Gogo*, Named_object*, Statement_inserter*, int)
+Unknown_expression::do_lower(Gogo*, Named_object*, Statement_inserter*)
{
if (this->is_error_expression())
return Expression::make_error(this->location());
@@ -3642,7 +3642,7 @@ Const_expression::do_is_zero_value() const
// predeclared constant iota into an integer value.
Expression*
-Const_expression::do_lower(Gogo* gogo, Named_object*, Statement_inserter*, int)
+Const_expression::do_lower(Gogo* gogo, Named_object*, Statement_inserter*)
{
Location loc = this->location();
@@ -4120,7 +4120,7 @@ class Iota_expression : public Parser_expression
{ }
Expression*
- do_lower(Gogo*, Named_object*, Statement_inserter*, int)
+ do_lower(Gogo*, Named_object*, Statement_inserter*)
{ go_unreachable(); }
// There should only ever be one of these.
@@ -4171,7 +4171,7 @@ Type_conversion_expression::do_type()
Expression*
Type_conversion_expression::do_lower(Gogo* gogo, Named_object*,
- Statement_inserter* inserter, int)
+ Statement_inserter* inserter)
{
Type* type = this->type_;
Expression* val = this->expr_;
@@ -4997,7 +4997,7 @@ Unary_expression::check_operand_address_taken(Gogo*)
// instead.
Expression*
-Unary_expression::do_lower(Gogo* gogo, Named_object*, Statement_inserter*, int)
+Unary_expression::do_lower(Gogo* gogo, Named_object*, Statement_inserter*)
{
Location loc = this->location();
@@ -6677,7 +6677,7 @@ Binary_expression::eval_complex(Operator op, const Numeric_constant* left_nc,
Expression*
Binary_expression::do_lower(Gogo* gogo, Named_object*,
- Statement_inserter* inserter, int)
+ Statement_inserter* inserter)
{
Location location = this->location();
@@ -8955,7 +8955,7 @@ class Selector_expression : public Parser_expression
do_issue_nil_check();
Expression*
- do_lower(Gogo*, Named_object*, Statement_inserter*, int);
+ do_lower(Gogo*, Named_object*, Statement_inserter*);
Expression*
do_copy()
@@ -9030,7 +9030,7 @@ Selector_expression::do_issue_nil_check()
// Lower a selector expression to the resolved value.
Expression*
-Selector_expression::do_lower(Gogo*, Named_object*, Statement_inserter*, int)
+Selector_expression::do_lower(Gogo*, Named_object*, Statement_inserter*)
{
if (this->is_error_expression() || this->resolved_ == NULL)
return Expression::make_error(this->location());
@@ -9360,7 +9360,7 @@ Builtin_call_expression::do_set_recover_arg(Expression* arg)
Expression*
Builtin_call_expression::do_lower(Gogo* gogo, Named_object* function,
- Statement_inserter* inserter, int)
+ Statement_inserter* inserter)
{
if (this->is_error_expression())
return this;
@@ -12564,7 +12564,7 @@ Call_expression::do_discarding_value()
Expression*
Call_expression::do_lower(Gogo* gogo, Named_object*,
- Statement_inserter* inserter, int)
+ Statement_inserter* inserter)
{
if (this->lowered_ != NULL)
return this->lowered_;
@@ -14836,7 +14836,7 @@ Index_expression::do_issue_nil_check()
// expression into an array index, a string index, or a map index.
Expression*
-Index_expression::do_lower(Gogo*, Named_object*, Statement_inserter*, int)
+Index_expression::do_lower(Gogo*, Named_object*, Statement_inserter*)
{
if (this->is_error_expression())
return Expression::make_error(this->location());
@@ -16211,7 +16211,7 @@ Expression::make_map_index(Expression* map, Expression* index,
Expression*
Field_reference_expression::do_lower(Gogo* gogo, Named_object* function,
- Statement_inserter* inserter, int)
+ Statement_inserter* inserter)
{
Struct_type* struct_type = this->expr_->type()->struct_type();
if (struct_type == NULL)
@@ -18018,7 +18018,7 @@ class Composite_literal_key_expression : public Parser_expression
do_determine_type(Gogo*, const Type_context*);
Expression*
- do_lower(Gogo*, Named_object*, Statement_inserter*, int);
+ do_lower(Gogo*, Named_object*, Statement_inserter*);
Expression*
do_copy()
@@ -18084,7 +18084,7 @@ Composite_literal_key_expression::do_type()
Expression*
Composite_literal_key_expression::do_lower(Gogo*, Named_object*,
- Statement_inserter*, int)
+ Statement_inserter*)
{
if (this->is_error_expression())
return Expression::make_error(this->location());
@@ -18658,7 +18658,7 @@ Composite_literal_expression::do_check_types(Gogo* gogo)
Expression*
Composite_literal_expression::do_lower(Gogo* gogo, Named_object* function,
- Statement_inserter* inserter, int)
+ Statement_inserter* inserter)
{
if (this->is_error_expression() || this->type_->is_error())
return Expression::make_error(this->location());
diff --git a/gcc/go/gofrontend/expressions.h b/gcc/go/gofrontend/expressions.h
index 8763772..0eddb58 100644
--- a/gcc/go/gofrontend/expressions.h
+++ b/gcc/go/gofrontend/expressions.h
@@ -990,9 +990,8 @@ class Expression
// which could not be fully parsed into their final form. It
// returns the same Expression or a new one.
Expression*
- lower(Gogo* gogo, Named_object* function, Statement_inserter* inserter,
- int iota_value)
- { return this->do_lower(gogo, function, inserter, iota_value); }
+ lower(Gogo* gogo, Named_object* function, Statement_inserter* inserter)
+ { return this->do_lower(gogo, function, inserter); }
// Flatten an expression. This is called after order_evaluation.
// FUNCTION is the function we are in; it will be NULL for an
@@ -1162,7 +1161,7 @@ class Expression
// Return a lowered expression.
virtual Expression*
- do_lower(Gogo*, Named_object*, Statement_inserter*, int)
+ do_lower(Gogo*, Named_object*, Statement_inserter*)
{ return this; }
// Return a flattened expression.
@@ -1472,7 +1471,7 @@ class Parser_expression : public Expression
protected:
virtual Expression*
- do_lower(Gogo*, Named_object*, Statement_inserter*, int) = 0;
+ do_lower(Gogo*, Named_object*, Statement_inserter*) = 0;
Bexpression*
do_get_backend(Translate_context*)
@@ -1511,7 +1510,7 @@ class Const_expression : public Expression
do_traverse(Traverse*);
Expression*
- do_lower(Gogo*, Named_object*, Statement_inserter*, int);
+ do_lower(Gogo*, Named_object*, Statement_inserter*);
bool
do_is_constant() const
@@ -1599,7 +1598,7 @@ class Var_expression : public Expression
protected:
Expression*
- do_lower(Gogo*, Named_object*, Statement_inserter*, int);
+ do_lower(Gogo*, Named_object*, Statement_inserter*);
Type*
do_type();
@@ -1663,7 +1662,7 @@ class Enclosed_var_expression : public Expression
do_traverse(Traverse*);
Expression*
- do_lower(Gogo*, Named_object*, Statement_inserter*, int);
+ do_lower(Gogo*, Named_object*, Statement_inserter*);
Expression*
do_flatten(Gogo*, Named_object*, Statement_inserter*);
@@ -1953,7 +1952,7 @@ class Type_conversion_expression : public Expression
do_traverse(Traverse* traverse);
Expression*
- do_lower(Gogo*, Named_object*, Statement_inserter*, int);
+ do_lower(Gogo*, Named_object*, Statement_inserter*);
Expression*
do_flatten(Gogo*, Named_object*, Statement_inserter*);
@@ -2154,7 +2153,7 @@ class Unary_expression : public Expression
{ return Expression::traverse(&this->expr_, traverse); }
Expression*
- do_lower(Gogo*, Named_object*, Statement_inserter*, int);
+ do_lower(Gogo*, Named_object*, Statement_inserter*);
Expression*
do_flatten(Gogo*, Named_object*, Statement_inserter*);
@@ -2315,7 +2314,7 @@ class Binary_expression : public Expression
do_traverse(Traverse* traverse);
Expression*
- do_lower(Gogo*, Named_object*, Statement_inserter*, int);
+ do_lower(Gogo*, Named_object*, Statement_inserter*);
Expression*
do_flatten(Gogo*, Named_object*, Statement_inserter*);
@@ -2440,7 +2439,7 @@ class String_concat_expression : public Expression
{ return this->exprs_->traverse(traverse); }
Expression*
- do_lower(Gogo*, Named_object*, Statement_inserter*, int)
+ do_lower(Gogo*, Named_object*, Statement_inserter*)
{ return this; }
Expression*
@@ -2628,7 +2627,7 @@ class Call_expression : public Expression
do_traverse(Traverse*);
virtual Expression*
- do_lower(Gogo*, Named_object*, Statement_inserter*, int);
+ do_lower(Gogo*, Named_object*, Statement_inserter*);
virtual Expression*
do_flatten(Gogo*, Named_object*, Statement_inserter*);
@@ -2823,7 +2822,7 @@ class Builtin_call_expression : public Call_expression
protected:
// This overrides Call_expression::do_lower.
Expression*
- do_lower(Gogo*, Named_object*, Statement_inserter*, int);
+ do_lower(Gogo*, Named_object*, Statement_inserter*);
Expression*
do_flatten(Gogo*, Named_object*, Statement_inserter*);
@@ -3169,7 +3168,7 @@ class Unknown_expression : public Parser_expression
do_is_addressable() const;
Expression*
- do_lower(Gogo*, Named_object*, Statement_inserter*, int);
+ do_lower(Gogo*, Named_object*, Statement_inserter*);
Expression*
do_copy()
@@ -3238,7 +3237,7 @@ class Index_expression : public Parser_expression
do_is_addressable() const;
Expression*
- do_lower(Gogo*, Named_object*, Statement_inserter*, int);
+ do_lower(Gogo*, Named_object*, Statement_inserter*s);
Expression*
do_copy()
@@ -3739,7 +3738,7 @@ class Field_reference_expression : public Expression
{ return Expression::traverse(&this->expr_, traverse); }
Expression*
- do_lower(Gogo*, Named_object*, Statement_inserter*, int);
+ do_lower(Gogo*, Named_object*, Statement_inserter*);
Type*
do_type();
@@ -3965,7 +3964,7 @@ class Composite_literal_expression : public Parser_expression
do_check_types(Gogo*);
Expression*
- do_lower(Gogo*, Named_object*, Statement_inserter*, int);
+ do_lower(Gogo*, Named_object*, Statement_inserter*);
Expression*
do_copy();
diff --git a/gcc/go/gofrontend/gogo.cc b/gcc/go/gofrontend/gogo.cc
index 7a6b9e3..71988dc 100644
--- a/gcc/go/gofrontend/gogo.cc
+++ b/gcc/go/gofrontend/gogo.cc
@@ -2914,7 +2914,7 @@ class Lower_parse_tree : public Traverse
| traverse_functions
| traverse_statements
| traverse_expressions),
- gogo_(gogo), function_(function), iota_value_(-1), inserter_()
+ gogo_(gogo), function_(function), inserter_()
{ }
void
@@ -2941,8 +2941,6 @@ class Lower_parse_tree : public Traverse
Gogo* gogo_;
// The function we are traversing.
Named_object* function_;
- // Value to use for the predeclared constant iota.
- int iota_value_;
// Current statement inserter for use by expressions.
Statement_inserter inserter_;
};
@@ -3086,7 +3084,7 @@ Lower_parse_tree::expression(Expression** pexpr)
{
Expression* e = *pexpr;
Expression* enew = e->lower(this->gogo_, this->function_,
- &this->inserter_, this->iota_value_);
+ &this->inserter_);
if (enew == e)
break;
if (enew->traverse_subexpressions(this) == TRAVERSE_EXIT)
diff --git a/gcc/haifa-sched.cc b/gcc/haifa-sched.cc
index 49ee589..1bc610f 100644
--- a/gcc/haifa-sched.cc
+++ b/gcc/haifa-sched.cc
@@ -1560,8 +1560,7 @@ contributes_to_priority_p (dep_t dep)
}
/* Compute the number of nondebug deps in list LIST for INSN. */
-
-static int
+int
dep_list_size (rtx_insn *insn, sd_list_types_def list)
{
sd_iterator_def sd_it;
@@ -1571,6 +1570,11 @@ dep_list_size (rtx_insn *insn, sd_list_types_def list)
if (!MAY_HAVE_DEBUG_INSNS)
return sd_lists_size (insn, list);
+ /* TODO: We should split normal and debug insns into separate SD_LIST_*
+ sub-lists, and then we'll be able to use something like
+ sd_lists_size(insn, list & SD_LIST_NON_DEBUG)
+ instead of walking dependencies below. */
+
FOR_EACH_DEP (insn, list, sd_it, dep)
{
if (DEBUG_INSN_P (DEP_CON (dep)))
diff --git a/gcc/ipa-cp.cc b/gcc/ipa-cp.cc
index b1e2a3a..e85477d 100644
--- a/gcc/ipa-cp.cc
+++ b/gcc/ipa-cp.cc
@@ -2298,7 +2298,7 @@ ipcp_lattice<valtype>::add_value (valtype newval, cgraph_edge *cs,
return false;
}
- if (!same_lat_gen_level && values_count == opt_for_fn (cs->caller->decl,
+ if (!same_lat_gen_level && values_count >= opt_for_fn (cs->callee->decl,
param_ipa_cp_value_list_size))
{
/* We can only free sources, not the values themselves, because sources
diff --git a/gcc/ipa-param-manipulation.cc b/gcc/ipa-param-manipulation.cc
index 8772476..02f71a4 100644
--- a/gcc/ipa-param-manipulation.cc
+++ b/gcc/ipa-param-manipulation.cc
@@ -593,14 +593,65 @@ isra_get_ref_base_and_offset (tree expr, tree *base_p, unsigned *unit_offset_p)
return true;
}
+/* Remove all statements that use NAME directly or indirectly. KILLED_SSAS
+ contains the SSA_NAMEs that are already being or have been processed and new
+ ones need to be added to it. The function only has to process situations
+ handled by ssa_name_only_returned_p in ipa-sra.cc with the exception that it
+ can assume it must never reach a use in a return statement. */
+
+static void
+purge_all_uses (tree name, hash_set <tree> *killed_ssas)
+{
+ imm_use_iterator imm_iter;
+ gimple *stmt;
+ auto_vec <tree, 4> worklist;
+
+ worklist.safe_push (name);
+ while (!worklist.is_empty ())
+ {
+ tree cur_name = worklist.pop ();
+ FOR_EACH_IMM_USE_STMT (stmt, imm_iter, cur_name)
+ {
+ if (gimple_debug_bind_p (stmt))
+ {
+ /* When runing within tree-inline, we will never end up here but
+ adding the SSAs to killed_ssas will do the trick in this case
+ and the respective debug statements will get reset. */
+ gimple_debug_bind_reset_value (stmt);
+ update_stmt (stmt);
+ continue;
+ }
+
+ tree lhs = NULL_TREE;
+ if (is_gimple_assign (stmt))
+ lhs = gimple_assign_lhs (stmt);
+ else if (gimple_code (stmt) == GIMPLE_PHI)
+ lhs = gimple_phi_result (stmt);
+ gcc_assert (lhs
+ && (TREE_CODE (lhs) == SSA_NAME)
+ && !gimple_vdef (stmt));
+ if (!killed_ssas->add (lhs))
+ {
+ worklist.safe_push (lhs);
+ gimple_stmt_iterator gsi = gsi_for_stmt (stmt);
+ gsi_remove (&gsi, true);
+ }
+ }
+ }
+}
+
/* Modify actual arguments of a function call in statement currently belonging
to CS, and make it call CS->callee->decl. Return the new statement that
replaced the old one. When invoked, cfun and current_function_decl have to
- be set to the caller. */
+ be set to the caller. When called from within tree-inline, KILLED_SSAs has
+ to contain the pointer to killed_new_ssa_names within the copy_body_data
+ structure and SSAs discovered to be useless (if LHS is removed) will be
+ added to it, otherwise it needs to be NULL. */
gcall *
ipa_param_adjustments::modify_call (cgraph_edge *cs,
- bool update_references)
+ bool update_references,
+ hash_set <tree> *killed_ssas)
{
gcall *stmt = cs->call_stmt;
tree callee_decl = cs->callee->decl;
@@ -910,32 +961,20 @@ ipa_param_adjustments::modify_call (cgraph_edge *cs,
gcall *new_stmt = gimple_build_call_vec (callee_decl, vargs);
- tree ssa_to_remove = NULL;
+ hash_set <tree> *ssas_to_remove = NULL;
if (tree lhs = gimple_call_lhs (stmt))
{
if (!m_skip_return)
gimple_call_set_lhs (new_stmt, lhs);
else if (TREE_CODE (lhs) == SSA_NAME)
{
- /* LHS should now by a default-def SSA. Unfortunately default-def
- SSA_NAMEs need a backing variable (or at least some code examining
- SSAs assumes it is non-NULL). So we either have to re-use the
- decl we have at hand or introdice a new one. */
- tree repl = create_tmp_var (TREE_TYPE (lhs), "removed_return");
- repl = get_or_create_ssa_default_def (cfun, repl);
- SSA_NAME_IS_DEFAULT_DEF (repl) = true;
- imm_use_iterator ui;
- use_operand_p use_p;
- gimple *using_stmt;
- FOR_EACH_IMM_USE_STMT (using_stmt, ui, lhs)
+ if (!killed_ssas)
{
- FOR_EACH_IMM_USE_ON_STMT (use_p, ui)
- {
- SET_USE (use_p, repl);
- }
- update_stmt (using_stmt);
+ ssas_to_remove = new hash_set<tree> (8);
+ killed_ssas = ssas_to_remove;
}
- ssa_to_remove = lhs;
+ killed_ssas->add (lhs);
+ purge_all_uses (lhs, killed_ssas);
}
}
@@ -954,8 +993,11 @@ ipa_param_adjustments::modify_call (cgraph_edge *cs,
fprintf (dump_file, "\n");
}
gsi_replace (&gsi, new_stmt, true);
- if (ssa_to_remove)
- release_ssa_name (ssa_to_remove);
+ if (ssas_to_remove)
+ {
+ ipa_release_ssas_in_hash (ssas_to_remove);
+ delete ssas_to_remove;
+ }
if (update_references)
do
{
@@ -2552,4 +2594,30 @@ ipa_edge_modifications_finalize ()
ipa_edge_modifications = NULL;
}
+/* Helper used to sort a vector of SSA_NAMES. */
+static int
+compare_ssa_versions (const void *va, const void *vb)
+{
+ const_tree const a = *(const_tree const*)va;
+ const_tree const b = *(const_tree const*)vb;
+
+ if (SSA_NAME_VERSION (a) < SSA_NAME_VERSION (b))
+ return -1;
+ if (SSA_NAME_VERSION (a) > SSA_NAME_VERSION (b))
+ return 1;
+ return 0;
+}
+
+/* Call release_ssa_name on all elements in KILLED_SSAS in a defined order. */
+
+void
+ipa_release_ssas_in_hash (hash_set <tree> *killed_ssas)
+{
+ auto_vec<tree, 16> ssas_to_release;
+ for (tree sn : *killed_ssas)
+ ssas_to_release.safe_push (sn);
+ ssas_to_release.qsort (compare_ssa_versions);
+ for (tree sn : ssas_to_release)
+ release_ssa_name (sn);
+}
diff --git a/gcc/ipa-param-manipulation.h b/gcc/ipa-param-manipulation.h
index ddfed45..8dd5e5b 100644
--- a/gcc/ipa-param-manipulation.h
+++ b/gcc/ipa-param-manipulation.h
@@ -224,7 +224,8 @@ public:
/* Modify a call statement arguments (and possibly remove the return value)
as described in the data fields of this class. */
- gcall *modify_call (cgraph_edge *cs, bool update_references);
+ gcall *modify_call (cgraph_edge *cs, bool update_references,
+ hash_set <tree> *killed_ssas);
/* Return if the first parameter is left intact. */
bool first_param_intact_p ();
/* Build a function type corresponding to the modified call. */
@@ -442,6 +443,6 @@ void push_function_arg_decls (vec<tree> *args, tree fndecl);
void push_function_arg_types (vec<tree> *types, tree fntype);
void ipa_verify_edge_has_no_modifications (cgraph_edge *cs);
void ipa_edge_modifications_finalize ();
-
+void ipa_release_ssas_in_hash (hash_set <tree> *killed_ssas);
#endif /* IPA_PARAM_MANIPULATION_H */
diff --git a/gcc/iterator-utils.h b/gcc/iterator-utils.h
index a3f7dd5..af1463b 100644
--- a/gcc/iterator-utils.h
+++ b/gcc/iterator-utils.h
@@ -200,4 +200,77 @@ list_iterator<T, Next>::operator++ (int)
return ret;
}
+// An iterator that pre-computes the next value if we haven't already got to the
+// end. This is useful in cases where a standard iterator would get invalidated
+// (e.g. elements getting removed from a container) during the body of a loop.
+template<typename T>
+class safe_iterator
+{
+ T m_current;
+ const T m_end;
+ T m_next;
+
+ T get_next ()
+ {
+ if (m_current != m_end)
+ {
+ // FIXME: we should use std::next here but that would mean having
+ // #include <iterator> everywhere that iterator-utils.h is included.
+ //
+ // For now we just implement it directly.
+ T iter = m_current;
+ return ++iter;
+ }
+ return m_end;
+ }
+
+ void advance ()
+ {
+ m_current = m_next;
+ if (m_next != m_end)
+ ++m_next;
+ }
+
+public:
+ bool operator== (const safe_iterator &other) const
+ {
+ return m_current == other.m_current;
+ }
+
+ bool operator!= (const safe_iterator &other) const
+ {
+ return m_current != other.m_current;
+ }
+
+ typename T::value_type operator*() const { return *m_current; }
+
+ safe_iterator &operator++ ()
+ {
+ advance ();
+ return *this;
+ }
+
+ safe_iterator operator++ (int)
+ {
+ auto ret = *this;
+ advance ();
+ return ret;
+ }
+
+ safe_iterator (T iter, T end)
+ : m_current (iter), m_end (end), m_next (get_next ()) {}
+};
+
+// Convert a container RANGE into a container of safe_iterators.
+template<typename Container>
+inline
+iterator_range<safe_iterator<typename Container::const_iterator>>
+iterate_safely (Container range)
+{
+ return {
+ { range.begin (), range.end () },
+ { range.end (), range.end () }
+ };
+}
+
#endif
diff --git a/gcc/jit/ChangeLog b/gcc/jit/ChangeLog
index d233b7d..a7cb813 100644
--- a/gcc/jit/ChangeLog
+++ b/gcc/jit/ChangeLog
@@ -1,3 +1,16 @@
+2024-01-19 Antoni Boucher <bouanto@zoho.com>
+
+ * jit-builtins.cc (ensure_optimization_builtins_exist): Add
+ popcount builtins.
+
+2024-01-19 Antoni Boucher <bouanto@zoho.com>
+
+ * jit-recording.h (is_numeric_vector, vector_type::new_int): New
+ functions.
+ * libgccjit.cc (gcc_jit_context_new_unary_op,
+ gcc_jit_context_new_binary_op): add checks for
+ is_numeric_vector.
+
2024-01-12 Guillaume Gomez <guillaume1.gomez@gmail.com>
Antoni Boucher <bouanto@zoho.com>
diff --git a/gcc/jit/jit-builtins.cc b/gcc/jit/jit-builtins.cc
index bf82887..e0bb247 100644
--- a/gcc/jit/jit-builtins.cc
+++ b/gcc/jit/jit-builtins.cc
@@ -609,6 +609,9 @@ builtins_manager::ensure_optimization_builtins_exist ()
We can't loop through all of the builtin_data array, we don't
support all types yet. */
(void)get_builtin_function_by_id (BUILT_IN_TRAP);
+ (void)get_builtin_function_by_id (BUILT_IN_POPCOUNT);
+ (void)get_builtin_function_by_id (BUILT_IN_POPCOUNTL);
+ (void)get_builtin_function_by_id (BUILT_IN_POPCOUNTLL);
}
/* Playback support. */
diff --git a/gcc/jit/jit-recording.h b/gcc/jit/jit-recording.h
index cd2e0ad..ab5ba6c 100644
--- a/gcc/jit/jit-recording.h
+++ b/gcc/jit/jit-recording.h
@@ -571,6 +571,7 @@ public:
virtual bool is_int () const = 0;
virtual bool is_float () const = 0;
virtual bool is_bool () const = 0;
+ virtual bool is_numeric_vector () const { return false; }
virtual type *is_pointer () = 0;
virtual type *is_volatile () { return NULL; }
virtual type *is_restrict () { return NULL; }
@@ -705,9 +706,12 @@ public:
size_t get_size () final override { return m_other_type->get_size (); };
- bool is_int () const final override { return m_other_type->is_int (); }
+ bool is_int () const override { return m_other_type->is_int (); }
bool is_float () const final override { return m_other_type->is_float (); }
bool is_bool () const final override { return m_other_type->is_bool (); }
+ bool is_numeric_vector () const override {
+ return m_other_type->is_numeric_vector ();
+ }
type *is_pointer () final override { return m_other_type->is_pointer (); }
type *is_array () final override { return m_other_type->is_array (); }
struct_ *is_struct () final override { return m_other_type->is_struct (); }
@@ -830,6 +834,14 @@ public:
: decorated_type (other_type),
m_num_units (num_units) {}
+ bool is_int () const final override {
+ return false;
+ }
+
+ bool is_numeric_vector () const final override {
+ return true;
+ }
+
size_t get_num_units () const { return m_num_units; }
vector_type *dyn_cast_vector_type () final override { return this; }
diff --git a/gcc/jit/libgccjit.cc b/gcc/jit/libgccjit.cc
index 9616f38..bf0150f 100644
--- a/gcc/jit/libgccjit.cc
+++ b/gcc/jit/libgccjit.cc
@@ -2114,7 +2114,7 @@ gcc_jit_context_new_unary_op (gcc_jit_context *ctxt,
op);
RETURN_NULL_IF_FAIL (result_type, ctxt, loc, "NULL result_type");
RETURN_NULL_IF_FAIL_PRINTF3 (
- result_type->is_numeric (), ctxt, loc,
+ result_type->is_numeric () || result_type->is_numeric_vector (), ctxt, loc,
"gcc_jit_unary_op %s with operand %s "
"has non-numeric result_type: %s",
gcc::jit::unary_op_reproducer_strings[op],
@@ -2171,7 +2171,7 @@ gcc_jit_context_new_binary_op (gcc_jit_context *ctxt,
b->get_debug_string (),
b->get_type ()->get_debug_string ());
RETURN_NULL_IF_FAIL_PRINTF4 (
- result_type->is_numeric (), ctxt, loc,
+ result_type->is_numeric () || result_type->is_numeric_vector (), ctxt, loc,
"gcc_jit_binary_op %s with operands a: %s b: %s "
"has non-numeric result_type: %s",
gcc::jit::binary_op_reproducer_strings[op],
diff --git a/gcc/lra-constraints.cc b/gcc/lra-constraints.cc
index 3379b88..0ae81c1 100644
--- a/gcc/lra-constraints.cc
+++ b/gcc/lra-constraints.cc
@@ -4498,10 +4498,10 @@ curr_insn_transform (bool check_only_p)
registers for other pseudos referenced in the insn. The most
common case of this is a scratch register which will be
transformed to scratch back at the end of LRA. */
- && lra_get_regno_hard_regno (regno) >= 0
&& bitmap_single_bit_set_p (&lra_reg_info[regno].insn_bitmap))
{
- lra_change_class (regno, NO_REGS, " Change to", true);
+ if (lra_get_allocno_class (regno) != NO_REGS)
+ lra_change_class (regno, NO_REGS, " Change to", true);
reg_renumber[regno] = -1;
}
/* We can do an optional reload. If the pseudo got a hard
diff --git a/gcc/lto-section-names.h b/gcc/lto-section-names.h
index a743deb..1cdadf3 100644
--- a/gcc/lto-section-names.h
+++ b/gcc/lto-section-names.h
@@ -25,7 +25,11 @@ along with GCC; see the file COPYING3. If not see
name for the functions and static_initializers. For other types of
sections a '.' and the section type are appended. */
#define LTO_SECTION_NAME_PREFIX ".gnu.lto_"
+#if OBJECT_FORMAT_MACHO
+#define OFFLOAD_SECTION_NAME_PREFIX "__GNU_OFFLD_LTO,"
+#else
#define OFFLOAD_SECTION_NAME_PREFIX ".gnu.offload_lto_"
+#endif
/* Can be either OFFLOAD_SECTION_NAME_PREFIX when we stream IR for offload
compiler, or LTO_SECTION_NAME_PREFIX for LTO case. */
@@ -35,8 +39,14 @@ extern const char *section_name_prefix;
#define LTO_SEGMENT_NAME "__GNU_LTO"
+#if OBJECT_FORMAT_MACHO
+#define OFFLOAD_VAR_TABLE_SECTION_NAME "__GNU_OFFLOAD,__vars"
+#define OFFLOAD_FUNC_TABLE_SECTION_NAME "__GNU_OFFLOAD,__funcs"
+#define OFFLOAD_IND_FUNC_TABLE_SECTION_NAME "__GNU_OFFLOAD,__ind_fns"
+#else
#define OFFLOAD_VAR_TABLE_SECTION_NAME ".gnu.offload_vars"
#define OFFLOAD_FUNC_TABLE_SECTION_NAME ".gnu.offload_funcs"
#define OFFLOAD_IND_FUNC_TABLE_SECTION_NAME ".gnu.offload_ind_funcs"
+#endif
#endif /* GCC_LTO_SECTION_NAMES_H */
diff --git a/gcc/lto-streamer-in.cc b/gcc/lto-streamer-in.cc
index bef0743..ad0ca24 100644
--- a/gcc/lto-streamer-in.cc
+++ b/gcc/lto-streamer-in.cc
@@ -1746,6 +1746,11 @@ lto_read_tree_1 (class lto_input_block *ib, class data_in *data_in, tree expr)
dref_entry e = { expr, str, off };
dref_queue.safe_push (e);
}
+ /* When there's no early DIE to refer to but dwarf2out set up
+ things in a way to expect that fixup. This tends to happen
+ with -g1, see for example PR113488. */
+ else if (DECL_P (expr) && DECL_ABSTRACT_ORIGIN (expr) == expr)
+ DECL_ABSTRACT_ORIGIN (expr) = NULL_TREE;
}
}
diff --git a/gcc/m2/ChangeLog b/gcc/m2/ChangeLog
index c1904d8..9237324 100644
--- a/gcc/m2/ChangeLog
+++ b/gcc/m2/ChangeLog
@@ -1,3 +1,142 @@
+2024-01-26 Gaius Mulley <gaiusmod2@gmail.com>
+
+ * gm2-compiler/M2Check.mod (dumpIndice): New procedure.
+ (dumpIndex): New procedure.
+ (dumptInfo): New procedure.
+ (buildError4): Add comment and pass formal and actual to
+ MetaError4. Improve text describing error.
+ (buildError2): Generate different error descriptions for
+ the three error kinds.
+ (checkConstMeta): Add block comment. Add more meta checks
+ and call doCheckPair to complete string const checking.
+ Add tinfo parameter.
+ (checkConstEquivalence): Add tinfo parameter.
+ * gm2-compiler/M2GCCDeclare.mod (PrintVerboseFromList):
+ Print the length of a const string.
+ * gm2-compiler/M2GenGCC.mod (CodeParam): Remove parameters
+ op1, op2 and op3.
+ (doParam): Add paramtok parameter. Use paramtok instead rather
+ than CurrentQuadToken.
+ (CodeParam): Rewrite.
+ * gm2-compiler/M2Quads.mod (CheckProcedureParameters):
+ Add comments explaining that const strings are not checked
+ in M2Quads.mod.
+ (FailParameter): Use MetaErrorT2 with tokpos rather than
+ MetaError2.
+ (doBuildBinaryOp): Assign OldPos and OperatorPos before the
+ IF block.
+ * gm2-compiler/SymbolTable.mod (PutConstString): Add call to
+ InitWhereDeclaredTok.
+
+2024-01-25 Gaius Mulley <gaiusmod2@gmail.com>
+
+ * gm2-libs/libc.def (lseek): Change the second parameter
+ type to CSSIZE_T and make the return value optional.
+
+2024-01-24 Gaius Mulley <gaiusmod2@gmail.com>
+
+ PR modula2/113559
+ * gm2-libs/FIO.mod (SetPositionFromBeginning): Convert pos into
+ CSSIZE_T during call to lseek.
+ (SetPositionFromEnd): Convert pos into CSSIZE_T during call to
+ lseek.
+
+2024-01-23 H.J. Lu <hjl.tools@gmail.com>
+
+ PR bootstrap/113554
+ * mc/mc.flex (alloca): Don't redefine.
+ (handleDate): Replace (long *)0 with (time_t *)0 when calling
+ time.
+
+2024-01-19 Gaius Mulley <gaiusmod2@gmail.com>
+
+ * gm2-compiler/M2BasicBlock.mod (InitBasicBlocks): Rename
+ ForeachScopeBlockDo to ForeachScopeBlockDo3.
+ * gm2-compiler/M2Code.mod: Import ForeachScopeBlockDo2.
+ (OptimizeScopeBlock): Call ForeachScopeBlockDo3 for
+ procedures with three parameters and ForeachScopeBlockDo2
+ for two parameters.
+ (CodeBlock): Ditto.
+ * gm2-compiler/M2GCCDeclare.mod (DeclareTypesConstantsProcedures):
+ Rename ForeachScopeBlockDo to ForeachScopeBlockDo3.
+ * gm2-compiler/M2GenGCC.def (ConvertQuadsToTree): Remove Scope
+ parameter.
+ * gm2-compiler/M2GenGCC.mod (ConvertQuadsToTree): Remove Scope
+ parameter.
+ (MaybeDebugBuiltinMemcpy): Remove parameter tok.
+ (MaybeDebugBuiltinMemset): Remove.
+ (MakeCopyUse): Remove tokenno from call to
+ MaybeDebugBuiltinMemcpy.
+ (PerformFoldBecomes): Remove desloc and exprloc.
+ (checkArrayElements): Remove location. Remove virtpos
+ as a parameter to MaybeDebugBuiltinMemcpy.
+ (NoWalkProcedure): Add attribute unused.
+ (CheckElementSetTypes): Remove parameter p.
+ Remove CurrentQuadToken in call to MaybeDebugBuiltinMemcpy.
+ Remove NoWalkProcedure from call to CheckElementSetTypes.
+ Remove tokenno from call to MaybeDebugBuiltinMemcpy.
+ * gm2-compiler/M2Optimize.mod (RemoveProcedures): Replace
+ two parameter indirect procedure iterator with
+ ForeachScopeBlockDo2.
+ * gm2-compiler/M2SSA.mod: Remove ForeachScopeBlockDo.
+ * gm2-compiler/M2Scope.def (ForeachScopeBlockDo2): New
+ declaration.
+ (ForeachScopeBlockDo): Rename ...
+ (ForeachScopeBlockDo3): ... to this.
+ (ScopeProcedure2): New declaration.
+ * gm2-compiler/M2Scope.mod (ForeachScopeBlockDo2): New
+ procedure.
+ (ForeachScopeBlockDo): Rename ...
+ (ForeachScopeBlockDo3): ... to this.
+
+2024-01-18 Gaius Mulley <gaiusmod2@gmail.com>
+
+ PR modula2/111956
+ * Make-lang.in (host_mc_longreal): Remove.
+ * configure: Regenerate.
+ * configure.ac (M2C_LONGREAL_FLOAT128): Remove.
+ (M2C_LONGREAL_PPC64LE): Remove.
+ * gm2-compiler/M2Options.def (SetIBMLongDouble): New procedure.
+ (GetIBMLongDouble): New procedure function.
+ (SetIEEELongDouble): New procedure.
+ (GetIEEELongDouble): New procedure function.
+ * gm2-compiler/M2Options.mod (SetIBMLongDouble): New procedure.
+ (GetIBMLongDouble): New procedure function.
+ (SetIEEELongDouble): New procedure.
+ (GetIEEELongDouble): New procedure function.
+ (InitializeLongDoubleFlags): New procedure called during
+ module block initialization.
+ * gm2-gcc/m2configure.cc: Remove duplicate includes.
+ (m2configure_M2CLongRealFloat128): Remove.
+ (m2configure_M2CLongRealIBM128): Remove.
+ (m2configure_M2CLongRealLongDouble): Remove.
+ (m2configure_M2CLongRealLongDoublePPC64LE): Remove.
+ (m2configure_TargetIEEEQuadDefault): New function.
+ * gm2-gcc/m2configure.def (M2CLongRealFloat128): Remove.
+ (M2CLongRealIBM128): Remove.
+ (M2CLongRealLongDouble): Remove.
+ (M2CLongRealLongDoublePPC64LE): Remove.
+ (TargetIEEEQuadDefault): New function.
+ * gm2-gcc/m2configure.h (m2configure_M2CLongRealFloat128): Remove.
+ (m2configure_M2CLongRealIBM128): Remove.
+ (m2configure_M2CLongRealLongDouble): Remove.
+ (m2configure_M2CLongRealLongDoublePPC64LE): Remove.
+ (m2configure_TargetIEEEQuadDefault): New function.
+ * gm2-gcc/m2options.h (M2Options_SetIBMLongDouble): New prototype.
+ (M2Options_GetIBMLongDouble): New prototype.
+ (M2Options_SetIEEELongDouble): New prototype.
+ (M2Options_GetIEEELongDouble): New prototype.
+ * gm2-gcc/m2type.cc (build_m2_long_real_node): Re-implement using
+ results of M2Options_GetIBMLongDouble and M2Options_GetIEEELongDouble.
+ * gm2-lang.cc (gm2_langhook_handle_option): Add case
+ OPT_mabi_ibmlongdouble and call M2Options_SetIBMLongDouble.
+ Add case OPT_mabi_ieeelongdouble and call M2Options_SetIEEELongDouble.
+ * gm2config.aci.in: Regenerate.
+ * gm2spec.cc (lang_specific_driver): Remove block defined by
+ M2C_LONGREAL_PPC64LE.
+ Remove case OPT_mabi_ibmlongdouble.
+ Remove case OPT_mabi_ieeelongdouble.
+
2024-01-11 Gaius Mulley <gaiusmod2@gmail.com>
PR modula2/112946
diff --git a/gcc/m2/Make-lang.in b/gcc/m2/Make-lang.in
index d7bc736..45bfa93 100644
--- a/gcc/m2/Make-lang.in
+++ b/gcc/m2/Make-lang.in
@@ -98,9 +98,6 @@ GM2_PROG_DEP=gm2$(exeext) xgcc$(exeext) cc1gm2$(exeext)
include m2/config-make
-# Determine if float128 should represent the Modula-2 type LONGREAL.
-host_mc_longreal := $(if $(strip $(filter powerpc64le%,$(host))),--longreal=__float128)
-
LIBSTDCXX=../$(TARGET_SUBDIR)/libstdc++-v3/src/.libs/libstdc++.a
PGE=m2/pge$(exeext)
@@ -474,8 +471,7 @@ MC_ARGS= --olang=c++ \
-I$(srcdir)/m2/gm2-gcc \
--quiet \
$(MC_COPYRIGHT) \
- --gcc-config-system \
- $(host_mc_longreal)
+ --gcc-config-system
MCDEPS=m2/boot-bin/mc$(exeext)
diff --git a/gcc/m2/configure b/gcc/m2/configure
index f62f3d8..4653097 100755
--- a/gcc/m2/configure
+++ b/gcc/m2/configure
@@ -3646,24 +3646,6 @@ $as_echo "#define HAVE_OPENDIR 1" >>confdefs.h
fi
-case $target in #(
- powerpc64le*) :
-
-$as_echo "#define M2C_LONGREAL_FLOAT128 1" >>confdefs.h
- ;; #(
- *) :
- ;;
-esac
-
-case $target in #(
- powerpc64le*) :
-
-$as_echo "#define M2C_LONGREAL_PPC64LE 1" >>confdefs.h
- ;; #(
- *) :
- ;;
-esac
-
ac_config_headers="$ac_config_headers gm2config.aci"
cat >confcache <<\_ACEOF
diff --git a/gcc/m2/configure.ac b/gcc/m2/configure.ac
index efcca62..15be509 100644
--- a/gcc/m2/configure.ac
+++ b/gcc/m2/configure.ac
@@ -30,11 +30,5 @@ AC_CHECK_HEADERS(sys/types.h)
AC_HEADER_DIRENT
AC_CHECK_LIB([c],[opendir],[AC_DEFINE([HAVE_OPENDIR],[1],[found opendir])])
-AS_CASE([$target],[powerpc64le*],
- [AC_DEFINE([M2C_LONGREAL_FLOAT128],[1],[use __float128 for LONGREAL])])
-
-AS_CASE([$target],[powerpc64le*],
- [AC_DEFINE([M2C_LONGREAL_PPC64LE],[1],[target is ppc64le])])
-
AC_CONFIG_HEADERS(gm2config.aci, [echo timestamp > stamp-h])
AC_OUTPUT
diff --git a/gcc/m2/gm2-compiler/M2BasicBlock.mod b/gcc/m2/gm2-compiler/M2BasicBlock.mod
index 007fe77..f4b9cb0 100644
--- a/gcc/m2/gm2-compiler/M2BasicBlock.mod
+++ b/gcc/m2/gm2-compiler/M2BasicBlock.mod
@@ -37,8 +37,7 @@ FROM M2Quads IMPORT IsReferenced, IsConditional, IsUnConditional, IsCall,
GetNextQuad, GetQuad, QuadOperator,
SubQuad, DisplayQuadRange ;
-FROM M2Scope IMPORT ScopeBlock, ForeachScopeBlockDo ;
-FROM M2GenGCC IMPORT ConvertQuadsToTree ;
+FROM M2Scope IMPORT ScopeBlock, ForeachScopeBlockDo3 ;
CONST
@@ -68,7 +67,7 @@ VAR
PROCEDURE InitBasicBlocks (sb: ScopeBlock) : BasicBlock ;
BEGIN
HeadOfBasicBlock := NIL ;
- ForeachScopeBlockDo (sb, ConvertQuads2BasicBlock) ;
+ ForeachScopeBlockDo3 (sb, ConvertQuads2BasicBlock) ;
RETURN HeadOfBasicBlock
END InitBasicBlocks ;
diff --git a/gcc/m2/gm2-compiler/M2Check.mod b/gcc/m2/gm2-compiler/M2Check.mod
index d456081..a296766 100644
--- a/gcc/m2/gm2-compiler/M2Check.mod
+++ b/gcc/m2/gm2-compiler/M2Check.mod
@@ -33,8 +33,8 @@ IMPLEMENTATION MODULE M2Check ;
*)
FROM M2System IMPORT IsSystemType, IsGenericSystemType, IsSameSize, IsComplexN ;
-FROM M2Base IMPORT IsParameterCompatible, IsAssignmentCompatible, IsExpressionCompatible, IsComparisonCompatible, IsBaseType, IsMathType, ZType, CType, RType, IsComplexType ;
-FROM Indexing IMPORT Index, InitIndex, GetIndice, PutIndice, KillIndex, HighIndice, LowIndice, IncludeIndiceIntoIndex ;
+FROM M2Base IMPORT IsParameterCompatible, IsAssignmentCompatible, IsExpressionCompatible, IsComparisonCompatible, IsBaseType, IsMathType, ZType, CType, RType, IsComplexType, Char ;
+FROM Indexing IMPORT Index, InitIndex, GetIndice, PutIndice, KillIndex, HighIndice, LowIndice, IncludeIndiceIntoIndex, ForeachIndiceInIndexDo ;
FROM M2Error IMPORT Error, InternalError, NewError, ErrorString, ChainError ;
FROM M2MetaError IMPORT MetaErrorStringT2, MetaErrorStringT3, MetaErrorStringT4, MetaString2, MetaString3, MetaString4 ;
FROM StrLib IMPORT StrEqual ;
@@ -48,6 +48,7 @@ FROM SymbolConversion IMPORT Mod2Gcc ;
FROM DynamicStrings IMPORT String, InitString, KillString ;
FROM M2LexBuf IMPORT GetTokenNo ;
FROM Storage IMPORT ALLOCATE ;
+FROM SYSTEM IMPORT ADR ;
FROM libc IMPORT printf ;
@@ -102,6 +103,52 @@ VAR
(*
+ dumpIndice -
+*)
+
+PROCEDURE dumpIndice (ptr: pair) ;
+BEGIN
+ printf (" left (%d), right (%d), status ",
+ ptr^.left, ptr^.right);
+ CASE ptr^.pairStatus OF
+
+ true : printf ("true") |
+ false : printf ("false") |
+ unknown: printf ("unknown") |
+ visited: printf ("visited") |
+ unused : printf ("unused")
+
+ END ;
+ printf ("\n")
+END dumpIndice ;
+
+
+(*
+ dumpIndex -
+*)
+
+PROCEDURE dumpIndex (name: ARRAY OF CHAR; index: Index) ;
+BEGIN
+ printf ("status: %s\n", ADR (name)) ;
+ ForeachIndiceInIndexDo (index, dumpIndice)
+END dumpIndex ;
+
+
+(*
+ dumptInfo -
+*)
+
+PROCEDURE dumptInfo (t: tInfo) ;
+BEGIN
+ printf ("actual (%d), formal (%d), left (%d), right (%d), procedure (%d)\n",
+ t^.actual, t^.formal, t^.left, t^.right, t^.procedure) ;
+ dumpIndex ('visited', t^.visited) ;
+ dumpIndex ('resolved', t^.resolved) ;
+ dumpIndex ('unresolved', t^.unresolved)
+END dumptInfo ;
+
+
+(*
isKnown - returns BOOLEAN:TRUE if result is status:true or status:false.
*)
@@ -283,7 +330,8 @@ END firstTime ;
(*
- buildError4 -
+ buildError4 - generate a MetaString4 error. This is only used when checking
+ parameter compatibility.
*)
PROCEDURE buildError4 (tinfo: tInfo; left, right: CARDINAL) ;
@@ -300,7 +348,7 @@ BEGIN
of paramters passed to ParameterTypeCompatible. *)
s := MetaString4 (tinfo^.format,
tinfo^.procedure,
- tinfo^.left, tinfo^.right,
+ tinfo^.formal, tinfo^.actual,
tinfo^.nth) ;
ErrorString (tinfo^.error, s)
END ;
@@ -308,7 +356,8 @@ BEGIN
IF (left # tinfo^.left) OR (right # tinfo^.right)
THEN
tinfo^.error := ChainError (tinfo^.token, tinfo^.error) ;
- s := MetaString2 (InitString ("{%1Ead} and {%2ad} are incompatible in this context"), left, right) ;
+ s := MetaString2 (InitString ("{%1Ead} and {%2ad} are incompatible as formal and actual procedure parameters"),
+ left, right) ;
ErrorString (tinfo^.error, s)
END
END
@@ -316,7 +365,7 @@ END buildError4 ;
(*
- buildError2 -
+ buildError2 - generate a MetaString2 error. This is called by all three kinds of errors.
*)
PROCEDURE buildError2 (tinfo: tInfo; left, right: CARDINAL) ;
@@ -327,17 +376,26 @@ BEGIN
THEN
IF tinfo^.error = NIL
THEN
- (* need to create top level error message first. *)
+ (* Need to create top level error message first. *)
tinfo^.error := NewError (tinfo^.token) ;
s := MetaString2 (tinfo^.format,
tinfo^.left, tinfo^.right) ;
ErrorString (tinfo^.error, s)
END ;
- (* and also generate a sub error containing detail. *)
+ (* Also generate a sub error containing detail. *)
IF (left # tinfo^.left) OR (right # tinfo^.right)
THEN
tinfo^.error := ChainError (tinfo^.token, tinfo^.error) ;
- s := MetaString2 (InitString ("{%1Ead} and {%2ad} are incompatible in this context"), left, right) ;
+ CASE tinfo^.kind OF
+
+ parameter: s := MetaString2 (InitString ("{%1Ead} and {%2ad} are incompatible as formal and actual procedure parameters"),
+ left, right) |
+ assignment: s := MetaString2 (InitString ("{%1Ead} and {%2ad} are assignment incompatible"),
+ left, right) |
+ expression: s := MetaString2 (InitString ("{%1Ead} and {%2ad} are expression incompatible"),
+ left, right)
+
+ END ;
ErrorString (tinfo^.error, s)
END
END
@@ -548,11 +606,13 @@ END checkVarEquivalence ;
(*
- checkConstMeta -
+ checkConstMeta - performs a very course grained check against
+ obviously incompatible type kinds.
+ If left is a const string then it checks right against char.
*)
-PROCEDURE checkConstMeta (result: status;
- left, right: CARDINAL) : status ;
+PROCEDURE checkConstMeta (result: status; tinfo: tInfo;
+ left, right: CARDINAL) : status ;
VAR
typeRight: CARDINAL ;
BEGIN
@@ -566,9 +626,12 @@ BEGIN
IF typeRight = NulSym
THEN
RETURN result
- ELSIF IsSet (typeRight) OR IsEnumeration (typeRight)
+ ELSIF IsSet (typeRight) OR IsEnumeration (typeRight) OR IsProcedure (typeRight) OR
+ IsRecord (typeRight)
THEN
RETURN false
+ ELSE
+ RETURN doCheckPair (result, tinfo, Char, typeRight)
END
END ;
RETURN result
@@ -583,7 +646,7 @@ END checkConstMeta ;
early on. For example adding a string to an enum or set.
*)
-PROCEDURE checkConstEquivalence (result: status;
+PROCEDURE checkConstEquivalence (result: status; tinfo: tInfo;
left, right: CARDINAL) : status ;
BEGIN
IF isFalse (result)
@@ -595,10 +658,10 @@ BEGIN
RETURN true
ELSIF IsConst (left)
THEN
- RETURN checkConstMeta (result, left, right)
+ RETURN checkConstMeta (result, tinfo, left, right)
ELSIF IsConst (right)
THEN
- RETURN checkConstMeta (result, right, left)
+ RETURN checkConstMeta (result, tinfo, right, left)
END ;
RETURN result
END checkConstEquivalence ;
@@ -715,7 +778,7 @@ BEGIN
THEN
RETURN return (true, tinfo, left, right)
ELSE
- result := checkConstEquivalence (unknown, left, right) ;
+ result := checkConstEquivalence (unknown, tinfo, left, right) ;
IF NOT isKnown (result)
THEN
result := checkVarEquivalence (unknown, tinfo, left, right) ;
@@ -1320,10 +1383,15 @@ VAR
result : status ;
left, right: CARDINAL ;
BEGIN
+ IF debugging
+ THEN
+ dumptInfo (tinfo)
+ END ;
WHILE get (tinfo^.unresolved, left, right, unknown) DO
IF debugging
THEN
- printf ("doCheck (%d, %d)\n", left, right)
+ printf ("doCheck (%d, %d)\n", left, right) ;
+ dumptInfo (tinfo)
END ;
(*
IF in (tinfo^.visited, left, right)
@@ -1561,6 +1629,10 @@ BEGIN
tinfo^.strict := FALSE ;
tinfo^.isin := FALSE ;
include (tinfo^.unresolved, actual, formal, unknown) ;
+ IF debugging
+ THEN
+ dumptInfo (tinfo)
+ END ;
IF doCheck (tinfo)
THEN
deconstruct (tinfo) ;
diff --git a/gcc/m2/gm2-compiler/M2Code.mod b/gcc/m2/gm2-compiler/M2Code.mod
index 1c7ff83..010e1d0 100644
--- a/gcc/m2/gm2-compiler/M2Code.mod
+++ b/gcc/m2/gm2-compiler/M2Code.mod
@@ -61,7 +61,9 @@ FROM M2GCCDeclare IMPORT FoldConstants, StartDeclareScope,
DeclareProcedure, InitDeclarations,
DeclareModuleVariables, MarkExported ;
-FROM M2Scope IMPORT ScopeBlock, InitScopeBlock, KillScopeBlock, ForeachScopeBlockDo ;
+FROM M2Scope IMPORT ScopeBlock, InitScopeBlock, KillScopeBlock,
+ ForeachScopeBlockDo2, ForeachScopeBlockDo3 ;
+
FROM m2top IMPORT StartGlobalContext, EndGlobalContext, SetFlagUnitAtATime ;
FROM M2Error IMPORT FlushErrors, FlushWarnings ;
FROM M2Swig IMPORT GenerateSwigFile ;
@@ -402,15 +404,15 @@ BEGIN
InitOptimizeVariables ;
OptimTimes := 1 ;
Current := CountQuads () ;
- ForeachScopeBlockDo (sb, InitialDeclareAndOptimize) ;
- ForeachScopeBlockDo (sb, ScopeBlockVariableAnalysis) ;
+ ForeachScopeBlockDo3 (sb, InitialDeclareAndOptimize) ;
+ ForeachScopeBlockDo3 (sb, ScopeBlockVariableAnalysis) ;
REPEAT
- ForeachScopeBlockDo (sb, SecondDeclareAndOptimize) ;
+ ForeachScopeBlockDo3 (sb, SecondDeclareAndOptimize) ;
Previous := Current ;
Current := CountQuads () ;
INC (OptimTimes)
UNTIL (OptimTimes=MaxOptimTimes) OR (Current=Previous) ;
- ForeachScopeBlockDo (sb, LoopAnalysis)
+ ForeachScopeBlockDo3 (sb, LoopAnalysis)
END OptimizeScopeBlock ;
@@ -476,30 +478,30 @@ BEGIN
THEN
n := GetSymName(scope) ;
printf1('before coding procedure %a\n', n) ;
- ForeachScopeBlockDo(sb, DisplayQuadRange) ;
+ ForeachScopeBlockDo3 (sb, DisplayQuadRange) ;
printf0('===============\n')
END ;
- ForeachScopeBlockDo(sb, ConvertQuadsToTree)
+ ForeachScopeBlockDo2 (sb, ConvertQuadsToTree)
ELSIF IsModuleWithinProcedure(scope)
THEN
IF DisplayQuadruples
THEN
n := GetSymName(scope) ;
printf1('before coding module %a within procedure\n', n) ;
- ForeachScopeBlockDo(sb, DisplayQuadRange) ;
+ ForeachScopeBlockDo3 (sb, DisplayQuadRange) ;
printf0('===============\n')
END ;
- ForeachScopeBlockDo(sb, ConvertQuadsToTree) ;
+ ForeachScopeBlockDo2 (sb, ConvertQuadsToTree) ;
ForeachProcedureDo(scope, CodeBlock)
ELSE
IF DisplayQuadruples
THEN
n := GetSymName(scope) ;
printf1('before coding module %a\n', n) ;
- ForeachScopeBlockDo(sb, DisplayQuadRange) ;
+ ForeachScopeBlockDo3 (sb, DisplayQuadRange) ;
printf0('===============\n')
END ;
- ForeachScopeBlockDo(sb, ConvertQuadsToTree) ;
+ ForeachScopeBlockDo2 (sb, ConvertQuadsToTree) ;
IF WholeProgram
THEN
ForeachSourceModuleDo(CodeProcedures)
diff --git a/gcc/m2/gm2-compiler/M2GCCDeclare.mod b/gcc/m2/gm2-compiler/M2GCCDeclare.mod
index 594178f..dae5a6b 100644
--- a/gcc/m2/gm2-compiler/M2GCCDeclare.mod
+++ b/gcc/m2/gm2-compiler/M2GCCDeclare.mod
@@ -144,7 +144,7 @@ FROM M2System IMPORT IsPseudoSystemFunction, IsSystemType,
FROM M2Bitset IMPORT Bitset, Bitnum ;
FROM SymbolConversion IMPORT AddModGcc, Mod2Gcc, GccKnowsAbout, Poison, RemoveMod2Gcc ;
FROM M2GenGCC IMPORT ResolveConstantExpressions ;
-FROM M2Scope IMPORT ScopeBlock, InitScopeBlock, KillScopeBlock, ForeachScopeBlockDo ;
+FROM M2Scope IMPORT ScopeBlock, InitScopeBlock, KillScopeBlock, ForeachScopeBlockDo3 ;
FROM M2ALU IMPORT Addn, Sub, Equ, GreEqu, Gre, Less, PushInt, PushCard, ConvertToType,
PushIntegerTree, PopIntegerTree, PopRealTree, ConvertToInt, PopSetTree,
@@ -2865,7 +2865,7 @@ BEGIN
PushBinding (scope) ;
REPEAT
copy := DupGroup (copy) ;
- ForeachScopeBlockDo (sb, DeclareTypesConstantsProceduresInRange)
+ ForeachScopeBlockDo3 (sb, DeclareTypesConstantsProceduresInRange)
UNTIL EqualGroup (copy, GlobalGroup) ;
KillGroup (copy) ;
PopBinding (scope) ;
@@ -4060,6 +4060,7 @@ END PrintProcedure ;
PROCEDURE PrintVerboseFromList (l: List; i: CARDINAL) ;
VAR
+ len,
type,
low,
high,
@@ -4227,7 +4228,9 @@ BEGIN
ELSIF IsConstStringCnul (sym)
THEN
printf0(' a nul terminated C string')
- END
+ END ;
+ len := GetStringLength (sym) ;
+ printf1(' length %d', len)
ELSIF IsConstructor(sym)
THEN
printf0(' constant constructor ') ;
diff --git a/gcc/m2/gm2-compiler/M2GenGCC.def b/gcc/m2/gm2-compiler/M2GenGCC.def
index bb755a3f..3e4705e 100644
--- a/gcc/m2/gm2-compiler/M2GenGCC.def
+++ b/gcc/m2/gm2-compiler/M2GenGCC.def
@@ -45,7 +45,7 @@ EXPORT QUALIFIED ConvertQuadsToTree, ResolveConstantExpressions,
the GCC tree structure.
*)
-PROCEDURE ConvertQuadsToTree (Scope: CARDINAL; Start, End: CARDINAL) ;
+PROCEDURE ConvertQuadsToTree (Start, End: CARDINAL) ;
(*
diff --git a/gcc/m2/gm2-compiler/M2GenGCC.mod b/gcc/m2/gm2-compiler/M2GenGCC.mod
index 2261cb0..92ca39f 100644
--- a/gcc/m2/gm2-compiler/M2GenGCC.mod
+++ b/gcc/m2/gm2-compiler/M2GenGCC.mod
@@ -415,7 +415,7 @@ END IsExportedGcc ;
the GCC tree structure.
*)
-PROCEDURE ConvertQuadsToTree (Scope: CARDINAL; Start, End: CARDINAL) ;
+PROCEDURE ConvertQuadsToTree (Start, End: CARDINAL) ;
BEGIN
REPEAT
CodeStatement (Start) ;
@@ -520,7 +520,7 @@ BEGIN
IndrXOp : CodeIndrX (q, op1, op2, op3) |
XIndrOp : CodeXIndr (q) |
CallOp : CodeCall (CurrentQuadToken, op3) |
- ParamOp : CodeParam (q, op1, op2, op3) |
+ ParamOp : CodeParam (q) |
FunctValueOp : CodeFunctValue (location, op1) |
AddrOp : CodeAddr (q, op1, op3) |
SizeOp : CodeSize (op1, op3) |
@@ -1311,7 +1311,9 @@ END GetSizeOfHighFromUnbounded ;
(*
- MaybeDebugBuiltinAlloca -
+ MaybeDebugBuiltinAlloca - if DebugBuiltins is set
+ then call Builtins.alloca_trace
+ else call Builtins.alloca.
*)
PROCEDURE MaybeDebugBuiltinAlloca (location: location_t; tok: CARDINAL; high: Tree) : Tree ;
@@ -1339,10 +1341,12 @@ END MaybeDebugBuiltinAlloca ;
(*
- MaybeDebugBuiltinMemcpy -
+ MaybeDebugBuiltinMemcpy - if DebugBuiltins is set
+ then call memcpy
+ else call Builtins.memcpy.
*)
-PROCEDURE MaybeDebugBuiltinMemcpy (location: location_t; tok: CARDINAL; src, dest, nbytes: Tree) : Tree ;
+PROCEDURE MaybeDebugBuiltinMemcpy (location: location_t; src, dest, nbytes: Tree) : Tree ;
VAR
call,
func: Tree ;
@@ -1360,28 +1364,6 @@ END MaybeDebugBuiltinMemcpy ;
(*
- MaybeDebugBuiltinMemset -
-*)
-
-PROCEDURE MaybeDebugBuiltinMemset (location: location_t; tok: CARDINAL;
- ptr, bytevalue, nbytes: Tree) : Tree ;
-VAR
- call,
- func: Tree ;
-BEGIN
- IF DebugBuiltins
- THEN
- func := Mod2Gcc (Memset) ;
- call := BuildCall3 (location, func, GetPointerType (), ptr, bytevalue, nbytes) ;
- ELSE
- call := BuiltinMemSet (location, ptr, bytevalue, nbytes)
- END ;
- SetLastFunction (call) ;
- RETURN BuildFunctValue (location, call)
-END MaybeDebugBuiltinMemset ;
-
-
-(*
MakeCopyUse - make a copy of the unbounded array and alter all references
from the old unbounded array to the new unbounded array.
The parameter, param, contains a RECORD
@@ -1411,7 +1393,7 @@ BEGIN
Addr := GetAddressOfUnbounded (location, param) ;
NewArray := MaybeDebugBuiltinAlloca (location, tokenno, High) ;
- NewArray := MaybeDebugBuiltinMemcpy (location, tokenno, NewArray, Addr, High) ;
+ NewArray := MaybeDebugBuiltinMemcpy (location, NewArray, Addr, High) ;
(* now assign param.Addr := ADR(NewArray) *)
@@ -2394,14 +2376,14 @@ END FoldMakeAdr ;
procedure, op2. The number of the parameter is op1.
*)
-PROCEDURE doParam (quad: CARDINAL; op1, op2, op3: CARDINAL) ;
+PROCEDURE doParam (quad: CARDINAL; paramtok: CARDINAL; op1, op2, op3: CARDINAL) ;
VAR
location: location_t ;
BEGIN
- location := TokenToLocation (CurrentQuadToken) ;
- DeclareConstant (CurrentQuadToken, op3) ;
- DeclareConstructor (CurrentQuadToken, quad, op3) ;
- BuildParam (location, CheckConvertCoerceParameter (CurrentQuadToken, op1, op2, op3))
+ location := TokenToLocation (paramtok) ;
+ DeclareConstant (paramtok, op3) ;
+ DeclareConstructor (paramtok, quad, op3) ;
+ BuildParam (location, CheckConvertCoerceParameter (paramtok, op1, op2, op3))
END doParam ;
@@ -2451,7 +2433,7 @@ BEGIN
REPEAT
IF (op=ParamOp) AND (op1>0)
THEN
- doParam(n, op1, op2, op3)
+ doParam (tokenno, n, op1, op2, op3)
ELSIF op=CallOp
THEN
procedure := op3
@@ -2517,8 +2499,21 @@ END FoldBuiltinFunction ;
NOTE that we CAN ignore ModeOfAddr though
*)
-PROCEDURE CodeParam (quad: CARDINAL; nth, procedure, parameter: CARDINAL) ;
+PROCEDURE CodeParam (quad: CARDINAL) ;
+VAR
+ nopos,
+ procedure,
+ parameter,
+ parampos : CARDINAL ;
+ nth : CARDINAL ;
+ compatible,
+ overflow : BOOLEAN ;
+ op : QuadOperator ;
BEGIN
+ GetQuadOtok (quad, parampos, op,
+ nth, procedure, parameter, overflow,
+ nopos, nopos, nopos) ;
+ compatible := TRUE ;
IF nth=0
THEN
CodeBuiltinFunction (quad, nth, procedure, parameter)
@@ -2527,41 +2522,27 @@ BEGIN
THEN
IF (nth <= NoOfParam (procedure))
THEN
- IF IsVarParam (procedure, nth) AND
- (NOT ParameterTypeCompatible (CurrentQuadToken,
- 'parameter incompatibility when attempting to pass actual parameter {%2ad} to a {%kVAR} formal parameter {%3Ead} during call to procedure {%1ad}',
- procedure, GetNthParam (procedure, nth), parameter, nth, TRUE))
- THEN
-
- ELSIF (NOT IsVarParam (procedure, nth)) AND
- (NOT ParameterTypeCompatible (CurrentQuadToken,
- 'parameter incompatibility when attempting to pass actual parameter {%3Ead} to the {%4EN} formal parameter {%2ad} during call to procedure {%1ad}',
- procedure, GetNthParam (procedure, nth), parameter, nth, FALSE))
- THEN
- (* use the AssignmentTypeCompatible as the rules are for assignment for non var parameters. *)
- ELSE
- (* doParam (quad, nth, procedure, parameter) *) (* --fixme-- enable when M2Check works. *)
- END
+ compatible := ParameterTypeCompatible (parampos,
+ 'parameter incompatibility when attempting to pass actual parameter {%2ad} to a {%kVAR} formal parameter {%3Ead} during call to procedure {%1ad}',
+ procedure, GetNthParam (procedure, nth),
+ parameter, nth, IsVarParam (procedure, nth))
END
- ELSE
- (* doParam (quad, nth, procedure, parameter) *) (* --fixme-- enable when M2Check works. *)
END ;
- (* --fixme remove B EGIN *)
IF (nth <= NoOfParam (procedure)) AND
IsVarParam (procedure, nth) AND IsConst (parameter)
THEN
- MetaErrorT1 (CurrentQuadToken,
+ MetaErrorT1 (parampos,
'cannot pass a constant {%1Ead} as a VAR parameter', parameter)
ELSIF IsAModula2Type (parameter)
THEN
- MetaErrorT2 (CurrentQuadToken,
+ MetaErrorT2 (parampos,
'cannot pass a type {%1Ead} as a parameter to procedure {%2ad}',
parameter, procedure)
- ELSE
- doParam (quad, nth, procedure, parameter)
+ ELSIF compatible
+ THEN
+ doParam (quad, parampos, nth, procedure, parameter)
END
- (* --fixme remove E ND once M2Check works. *)
END
END CodeParam ;
@@ -2784,7 +2765,6 @@ VAR
exprpos, becomespos,
virtpos : CARDINAL ;
op : QuadOperator ;
- desloc, exprloc : location_t ;
BEGIN
GetQuadOtok (quad, becomespos, op,
des, op2, expr, overflowChecking,
@@ -3106,9 +3086,8 @@ END PrepareCopyString ;
PROCEDURE checkArrayElements (des, expr: CARDINAL; virtpos, despos, exprpos: CARDINAL) : BOOLEAN ;
VAR
- e1, e3 : Tree ;
- t1, t3 : CARDINAL ;
- location: location_t ;
+ e1, e3: Tree ;
+ t1, t3: CARDINAL ;
BEGIN
t1 := GetType (des) ;
t3 := GetType (expr) ;
@@ -3304,7 +3283,7 @@ BEGIN
expr, des)
END ;
AddStatement (location,
- MaybeDebugBuiltinMemcpy (location, virtpos,
+ MaybeDebugBuiltinMemcpy (location,
BuildAddr (location, Mod2Gcc (des), FALSE),
BuildAddr (location, exprt, FALSE),
length))
@@ -3319,7 +3298,7 @@ BEGIN
THEN
checkDeclare (des) ;
AddStatement (location,
- MaybeDebugBuiltinMemcpy (location, virtpos,
+ MaybeDebugBuiltinMemcpy (location,
BuildAddr(location, Mod2Gcc (des), FALSE),
BuildAddr(location, Mod2Gcc (expr), FALSE),
BuildSize(location, Mod2Gcc (des), FALSE)))
@@ -3624,7 +3603,7 @@ END CodeBinary ;
NoWalkProcedure -
*)
-PROCEDURE NoWalkProcedure (param: CARDINAL) ;
+PROCEDURE NoWalkProcedure (param: CARDINAL <* unused *>) ;
BEGIN
END NoWalkProcedure ;
@@ -3688,12 +3667,12 @@ END CheckBinaryExpressionTypes ;
(*
CheckElementSetTypes - returns TRUE if all expression checks pass.
- If the expression check fails quad is removed,
- the walk procedure (des) is called and NoChange is
- set to FALSE.
+ If the expression check fails quad is removed,
+ the walk procedure (des) is called and NoChange is
+ set to FALSE.
*)
-PROCEDURE CheckElementSetTypes (quad: CARDINAL; p: WalkAction) : BOOLEAN ;
+PROCEDURE CheckElementSetTypes (quad: CARDINAL) : BOOLEAN ;
VAR
lefttype,
righttype,
@@ -6472,7 +6451,7 @@ BEGIN
(* does not work t := BuildCoerce(Mod2Gcc(op1), Mod2Gcc(op2), Mod2Gcc(op3)) *)
checkDeclare (op1) ;
AddStatement (location,
- MaybeDebugBuiltinMemcpy(location, CurrentQuadToken,
+ MaybeDebugBuiltinMemcpy(location,
BuildAddr(location, Mod2Gcc(op1), FALSE),
BuildAddr(location, Mod2Gcc(op3), FALSE),
FindSize(CurrentQuadToken, op2)))
@@ -7371,7 +7350,7 @@ BEGIN
IF IsConst(op1) AND IsConst(op2)
THEN
InternalError ('should not get to here (if we do we should consider calling FoldIfIn)')
- ELSIF CheckElementSetTypes (quad, NoWalkProcedure)
+ ELSIF CheckElementSetTypes (quad)
THEN
IF IsConst(op1)
THEN
@@ -7438,7 +7417,7 @@ BEGIN
IF IsConst(op1) AND IsConst(op2)
THEN
InternalError ('should not get to here (if we do we should consider calling FoldIfIn)')
- ELSIF CheckElementSetTypes (quad, NoWalkProcedure)
+ ELSIF CheckElementSetTypes (quad)
THEN
IF IsConst(op1)
THEN
@@ -7576,7 +7555,7 @@ BEGIN
op3, op1)
END ;
AddStatement (location,
- MaybeDebugBuiltinMemcpy (location, tokenno,
+ MaybeDebugBuiltinMemcpy (location,
Mod2Gcc (op1),
BuildAddr (location, newstr, FALSE),
length))
diff --git a/gcc/m2/gm2-compiler/M2Optimize.mod b/gcc/m2/gm2-compiler/M2Optimize.mod
index 1a653c0..29fda9a 100644
--- a/gcc/m2/gm2-compiler/M2Optimize.mod
+++ b/gcc/m2/gm2-compiler/M2Optimize.mod
@@ -38,7 +38,8 @@ FROM NumberIO IMPORT WriteCard ;
FROM M2Error IMPORT InternalError ;
FROM M2Batch IMPORT GetModuleNo ;
FROM M2Quiet IMPORT qprintf1 ;
-FROM M2Scope IMPORT ScopeBlock, InitScopeBlock, KillScopeBlock, ForeachScopeBlockDo ;
+FROM M2Scope IMPORT ScopeBlock, InitScopeBlock, KillScopeBlock,
+ ForeachScopeBlockDo2, ForeachScopeBlockDo3 ;
FROM SymbolTable IMPORT GetSymName,
GetProcedureQuads, GetModuleQuads,
@@ -336,13 +337,13 @@ BEGIN
IF IsProcedure(scope)
THEN
PutProcedureReachable(scope) ;
- ForeachScopeBlockDo(sb, KnownReachable)
+ ForeachScopeBlockDo2 (sb, KnownReachable)
ELSIF IsModuleWithinProcedure(scope)
THEN
- ForeachScopeBlockDo(sb, KnownReachable) ;
+ ForeachScopeBlockDo2 (sb, KnownReachable) ;
ForeachProcedureDo(scope, CheckExportedReachable)
ELSE
- ForeachScopeBlockDo(sb, KnownReachable) ;
+ ForeachScopeBlockDo2 (sb, KnownReachable) ;
ForeachProcedureDo(scope, CheckExportedReachable)
END ;
ForeachInnerModuleDo(scope, RemoveProcedures) ;
@@ -351,8 +352,7 @@ BEGIN
END RemoveProcedures ;
-PROCEDURE KnownReachable (Scope: CARDINAL;
- Start, End: CARDINAL) ;
+PROCEDURE KnownReachable (Start, End: CARDINAL) ;
VAR
Op : QuadOperator ;
Op1, Op2, Op3: CARDINAL ;
diff --git a/gcc/m2/gm2-compiler/M2Options.def b/gcc/m2/gm2-compiler/M2Options.def
index a5ecb82..4e5f499 100644
--- a/gcc/m2/gm2-compiler/M2Options.def
+++ b/gcc/m2/gm2-compiler/M2Options.def
@@ -971,6 +971,38 @@ PROCEDURE SetDebugBuiltins (value: BOOLEAN) ;
(*
+ SetIBMLongDouble - enable/disable LONGREAL to map onto the
+ IBM long double 128 bit data type.
+ (Only available on the ppc).
+*)
+
+PROCEDURE SetIBMLongDouble (value: BOOLEAN) ;
+
+
+(*
+ GetIBMLongDouble - return the value of IBMLongDouble.
+*)
+
+PROCEDURE GetIBMLongDouble () : BOOLEAN ;
+
+
+(*
+ SetIEEELongDouble - enable/disable LONGREAL to map onto the
+ IEEE long double 128 bit data type.
+ (Only available on the ppc).
+*)
+
+PROCEDURE SetIEEELongDouble (value: BOOLEAN) ;
+
+
+(*
+ GetIEEELongDouble - return the value of IEEELongDouble.
+*)
+
+PROCEDURE GetIEEELongDouble () : BOOLEAN ;
+
+
+(*
FinaliseOptions - once all options have been parsed we set any inferred
values.
*)
diff --git a/gcc/m2/gm2-compiler/M2Options.mod b/gcc/m2/gm2-compiler/M2Options.mod
index 01562a1..ae49808 100644
--- a/gcc/m2/gm2-compiler/M2Options.mod
+++ b/gcc/m2/gm2-compiler/M2Options.mod
@@ -31,7 +31,8 @@ FROM FIO IMPORT StdErr ;
FROM libc IMPORT exit, printf ;
FROM Debug IMPORT Halt ;
FROM m2linemap IMPORT location_t ;
-FROM m2configure IMPORT FullPathCPP ;
+FROM m2configure IMPORT FullPathCPP, TargetIEEEQuadDefault ;
+FROM M2Error IMPORT InternalError ;
FROM DynamicStrings IMPORT String, Length, InitString, Mark, Slice, EqualArray,
@@ -74,6 +75,8 @@ VAR
MPFlag,
MDFlag,
MMDFlag,
+ IBMLongDouble,
+ IEEELongDouble,
UselistFlag,
CC1Quiet,
SeenSources : BOOLEAN ;
@@ -1594,6 +1597,79 @@ BEGIN
END SetDebugBuiltins ;
+(*
+ SetIBMLongDouble - enable/disable LONGREAL to map onto the
+ IBM long double 128 bit data type.
+ (Only available on the ppc).
+*)
+
+PROCEDURE SetIBMLongDouble (value: BOOLEAN) ;
+BEGIN
+ IBMLongDouble := value ;
+ IF value
+ THEN
+ IEEELongDouble := FALSE
+ END
+END SetIBMLongDouble ;
+
+
+(*
+ GetIBMLongDouble - return the value of IBMLongDouble.
+*)
+
+PROCEDURE GetIBMLongDouble () : BOOLEAN ;
+BEGIN
+ RETURN IBMLongDouble
+END GetIBMLongDouble ;
+
+
+(*
+ SetIEEELongDouble - enable/disable LONGREAL to map onto the
+ IEEE long double 128 bit data type.
+ (Only available on the ppc).
+*)
+
+PROCEDURE SetIEEELongDouble (value: BOOLEAN) ;
+BEGIN
+ IEEELongDouble := value ;
+ IF value
+ THEN
+ IBMLongDouble := FALSE
+ END
+END SetIEEELongDouble ;
+
+
+(*
+ GetIEEELongDouble - return the value of IEEELongDouble.
+*)
+
+PROCEDURE GetIEEELongDouble () : BOOLEAN ;
+BEGIN
+ RETURN IEEELongDouble
+END GetIEEELongDouble ;
+
+
+(*
+ InitializeLongDoubleFlags - initialize the long double related flags
+ with default values given during gcc configure.
+*)
+
+PROCEDURE InitializeLongDoubleFlags ;
+BEGIN
+ IBMLongDouble := FALSE ;
+ IEEELongDouble := FALSE ;
+ CASE TargetIEEEQuadDefault () OF
+
+ -1: |
+ 0: IBMLongDouble := TRUE |
+ 1: IEEELongDouble := TRUE
+
+ ELSE
+ InternalError ('unexpected value returned from TargetIEEEQuadDefault ()')
+ END
+END InitializeLongDoubleFlags ;
+
+
BEGIN
cflag := FALSE ; (* -c. *)
RuntimeModuleOverride := InitString (DefaultRuntimeModuleOverride) ;
@@ -1673,6 +1749,7 @@ BEGIN
MFarg := NIL ;
MTFlag := NIL ;
MQFlag := NIL ;
+ InitializeLongDoubleFlags ;
M2Prefix := InitString ('') ;
M2PathName := InitString ('')
END M2Options.
diff --git a/gcc/m2/gm2-compiler/M2Quads.mod b/gcc/m2/gm2-compiler/M2Quads.mod
index 45e2769..a666a4e 100644
--- a/gcc/m2/gm2-compiler/M2Quads.mod
+++ b/gcc/m2/gm2-compiler/M2Quads.mod
@@ -3606,7 +3606,6 @@ BEGIN
PopTrwtok (Des, w, destok) ;
MarkAsWrite (w) ;
CheckCompatibleWithBecomes (Des, Exp, destok, exptok) ;
- combinedtok := MakeVirtualTok (becomesTokNo, destok, exptok) ;
IF DebugTokPos
THEN
MetaErrorT1 (becomesTokNo, 'becomestok {%1Oad}', Des) ;
@@ -3629,7 +3628,7 @@ BEGIN
CheckBecomesMeta (Des, Exp, combinedtok, destok, exptok)
END ;
(* Simple assignment. *)
- MoveWithMode (becomesTokNo, Des, Exp, Array, destok, exptok, checkOverflow) ;
+ MoveWithMode (combinedtok, Des, Exp, Array, destok, exptok, checkOverflow) ;
IF checkTypes
THEN
(*
@@ -5428,13 +5427,14 @@ BEGIN
Actual, FormalI, Proc, i)
ELSIF IsConstString (Actual)
THEN
- IF (GetStringLength (Actual) = 0) (* if = 0 then it maybe unknown at this time *)
+ IF (GetStringLength (Actual) = 0) (* If = 0 then it maybe unknown at this time. *)
THEN
- (* dont check this yet *)
+ (* We dont check this yet, it is checked in M2GenGCC.mod:CodeParam
+ after the string has been created. *)
ELSIF IsArray(GetDType(FormalI)) AND (GetSType(GetDType(FormalI))=Char)
THEN
- (* allow string literals to be passed to ARRAY [0..n] OF CHAR *)
- ELSIF (GetStringLength(Actual) = 1) (* if = 1 then it maybe treated as a char *)
+ (* Allow string literals to be passed to ARRAY [0..n] OF CHAR. *)
+ ELSIF (GetStringLength(Actual) = 1) (* If = 1 then it maybe treated as a char. *)
THEN
CheckParameter (paramtok, Actual, Dim, FormalI, Proc, i, NIL)
ELSIF NOT IsUnboundedParam(Proc, i)
@@ -5864,8 +5864,9 @@ VAR
ExpectType: CARDINAL ;
s, s1, s2 : String ;
BEGIN
- MetaError2 ('parameter mismatch between the {%2N} parameter of procedure {%1Ead}',
- ProcedureSym, ParameterNo) ;
+ MetaErrorT2 (tokpos,
+ 'parameter mismatch between the {%2N} parameter of procedure {%1Ead}',
+ ProcedureSym, ParameterNo) ;
s := InitString ('{%kPROCEDURE} {%1Eau} (') ;
IF NoOfParam(ProcedureSym)>=ParameterNo
THEN
@@ -5905,7 +5906,13 @@ BEGIN
s := ConCat (s, Mark (InitString ('){%1Tau:% : {%1Tau}} ;'))) ;
MetaErrorStringT1 (First, Dup (s), ProcedureSym) ;
MetaErrorStringT1 (tokpos, s, ProcedureSym) ;
- MetaError1 ('item being passed is {%1EDda} {%1Dad} of type {%1Dtsd}', Given)
+ IF GetLType (Given) = NulSym
+ THEN
+ MetaError1 ('item being passed is {%1EDda} {%1Dad}', Given)
+ ELSE
+ MetaError1 ('item being passed is {%1EDda} {%1Dad} of type {%1Dts}',
+ Given)
+ END
END FailParameter ;
@@ -12461,6 +12468,8 @@ BEGIN
ELSE
(* CheckForGenericNulSet(e1, e2, t1, t2) *)
END ;
+ OldPos := OperatorPos ;
+ OperatorPos := MakeVirtualTok (OperatorPos, leftpos, rightpos) ;
IF (Operator = PlusTok) AND IsConstString(left) AND IsConstString(right)
THEN
(* handle special addition for constant strings *)
@@ -12469,8 +12478,6 @@ BEGIN
value := MakeConstLitString (OperatorPos, makekey (string (s))) ;
s := KillString (s)
ELSE
- OldPos := OperatorPos ;
- OperatorPos := MakeVirtualTok (OperatorPos, leftpos, rightpos) ;
IF checkTypes
THEN
BuildRange (InitTypesExpressionCheck (OperatorPos, left, right, FALSE, FALSE))
diff --git a/gcc/m2/gm2-compiler/M2SSA.mod b/gcc/m2/gm2-compiler/M2SSA.mod
index c984c62..e59428c 100644
--- a/gcc/m2/gm2-compiler/M2SSA.mod
+++ b/gcc/m2/gm2-compiler/M2SSA.mod
@@ -31,7 +31,7 @@ FROM NumberIO IMPORT WriteCard ;
FROM M2Error IMPORT InternalError ;
FROM M2Batch IMPORT GetModuleNo ;
FROM M2Quiet IMPORT qprintf1 ;
-FROM M2Scope IMPORT ScopeBlock, InitScopeBlock, KillScopeBlock, ForeachScopeBlockDo ;
+FROM M2Scope IMPORT ScopeBlock, InitScopeBlock, KillScopeBlock ;
FROM M2StackWord IMPORT StackOfWord, InitStackWord, KillStackWord, PushWord, PopWord, PeepWord ;
FROM M2Options IMPORT CompilerDebugging ;
FROM Lists IMPORT InitList, KillList, List, IncludeItemIntoList, IsItemInList ;
diff --git a/gcc/m2/gm2-compiler/M2Scope.def b/gcc/m2/gm2-compiler/M2Scope.def
index bdb063d..917229f 100644
--- a/gcc/m2/gm2-compiler/M2Scope.def
+++ b/gcc/m2/gm2-compiler/M2Scope.def
@@ -31,13 +31,10 @@ DEFINITION MODULE M2Scope ;
which were generated within a scope.
*)
-EXPORT QUALIFIED ScopeBlock, ScopeProcedure,
- InitScopeBlock, KillScopeBlock,
- ForeachScopeBlockDo ;
-
TYPE
ScopeBlock ;
- ScopeProcedure = PROCEDURE (CARDINAL, CARDINAL, CARDINAL) ;
+ ScopeProcedure2 = PROCEDURE (CARDINAL, CARDINAL) ;
+ ScopeProcedure3 = PROCEDURE (CARDINAL, CARDINAL, CARDINAL) ;
(*
@@ -55,11 +52,19 @@ PROCEDURE KillScopeBlock (VAR sb: ScopeBlock) ;
(*
- ForeachScopeBlockDo - calls a procedure, p, for each block of contigeous quadruples
- defining an outer scope, sb.
+ ForeachScopeBlockDo2 - calls a procedure p for each block of contigeous quadruples
+ defining an outer scope sb.
+*)
+
+PROCEDURE ForeachScopeBlockDo2 (sb: ScopeBlock; p: ScopeProcedure2) ;
+
+
+(*
+ ForeachScopeBlockDo3 - calls a procedure p for each block of contigeous quadruples
+ defining an outer scope sb.
*)
-PROCEDURE ForeachScopeBlockDo (sb: ScopeBlock; p: ScopeProcedure) ;
+PROCEDURE ForeachScopeBlockDo3 (sb: ScopeBlock; p: ScopeProcedure3) ;
END M2Scope.
diff --git a/gcc/m2/gm2-compiler/M2Scope.mod b/gcc/m2/gm2-compiler/M2Scope.mod
index 570bb04..f157ad4 100644
--- a/gcc/m2/gm2-compiler/M2Scope.mod
+++ b/gcc/m2/gm2-compiler/M2Scope.mod
@@ -410,10 +410,44 @@ END KillScopeBlock ;
(*
- ForeachScopeBlockDo -
+ ForeachScopeBlockDo2 - calls a procedure p for each block of contigeous quadruples
+ defining an outer scope sb.
*)
-PROCEDURE ForeachScopeBlockDo (sb: ScopeBlock; p: ScopeProcedure) ;
+PROCEDURE ForeachScopeBlockDo2 (sb: ScopeBlock; p: ScopeProcedure2) ;
+BEGIN
+ IF DisplayQuadruples
+ THEN
+ printf0 ("ForeachScopeBlockDo\n")
+ END ;
+ WHILE sb#NIL DO
+ WITH sb^ DO
+ IF DisplayQuadruples
+ THEN
+ DisplayScope (sb)
+ END ;
+ enter (sb) ;
+ IF (low # 0) AND (high # 0)
+ THEN
+ p (low, high)
+ END ;
+ leave (sb)
+ END ;
+ sb := sb^.next
+ END ;
+ IF DisplayQuadruples
+ THEN
+ printf0 ("end ForeachScopeBlockDo\n\n")
+ END ;
+END ForeachScopeBlockDo2 ;
+
+
+(*
+ ForeachScopeBlockDo3 - calls a procedure p for each block of contigeous quadruples
+ defining an outer scope sb.
+*)
+
+PROCEDURE ForeachScopeBlockDo3 (sb: ScopeBlock; p: ScopeProcedure3) ;
BEGIN
IF DisplayQuadruples
THEN
@@ -438,7 +472,7 @@ BEGIN
THEN
printf0 ("end ForeachScopeBlockDo\n\n")
END ;
-END ForeachScopeBlockDo ;
+END ForeachScopeBlockDo3 ;
(*
diff --git a/gcc/m2/gm2-compiler/SymbolTable.mod b/gcc/m2/gm2-compiler/SymbolTable.mod
index e219980..d939d58 100644
--- a/gcc/m2/gm2-compiler/SymbolTable.mod
+++ b/gcc/m2/gm2-compiler/SymbolTable.mod
@@ -5373,6 +5373,7 @@ BEGIN
ConstStringSym: ConstString.Length := LengthKey (contents) ;
ConstString.Contents := contents ;
+ InitWhereDeclaredTok (tok, ConstString.At) ;
InitWhereFirstUsedTok (tok, ConstString.At) |
ConstVarSym : (* ok altering this to ConstString *)
diff --git a/gcc/m2/gm2-gcc/m2configure.cc b/gcc/m2/gm2-gcc/m2configure.cc
index feb2810..9e0e82f 100644
--- a/gcc/m2/gm2-gcc/m2configure.cc
+++ b/gcc/m2/gm2-gcc/m2configure.cc
@@ -23,10 +23,6 @@ along with GNU Modula-2; see the file COPYING3. If not see
#include "system.h"
#include "libiberty.h"
-#include "config.h"
-#include "system.h"
-#include "libiberty.h"
-
#include "gcc-consolidation.h"
#include "../gm2-lang.h"
@@ -100,50 +96,17 @@ m2configure_FullPathCPP (void)
return NULL;
}
-/* Return true if M2C_LONGREAL_FLOAT128 is defined. */
-
-bool
-m2configure_M2CLongRealFloat128 (void)
-{
-#if defined(M2C_LONGREAL_FLOAT128)
- return true;
-#else
- return false;
-#endif
-}
-
-/* Return true if M2C_LONGREAL_IBM128 is defined. */
-
-bool
-m2configure_M2CLongRealIBM128 (void)
-{
-#if defined(M2C_LONGREAL_IBM128)
- return true;
-#else
- return false;
-#endif
-}
-
-/* Return true if M2C_LONGREAL_LONGDOUBLE is defined. */
-
-bool
-m2configure_M2CLongRealLongDouble (void)
-{
-#if defined(M2C_LONGREAL_LONGDOUBLE)
- return true;
-#else
- return false;
-#endif
-}
-
-/* Return true if the target is ppc64le. */
+/* Return the value of TARGET_IEEEQUAD_DEFAULT. If it is undefined
+ -1 is returned. A value of 0 indicates the default target long
+ double uses the IBM 128 representation. A value of 1 indicates
+ the default target long double (LONGREAL) is __float128. */
-bool
-m2configure_M2CLongRealLongDoublePPC64LE (void)
+int
+m2configure_TargetIEEEQuadDefault (void)
{
-#if defined(M2C_LONGREAL_PPC64LE)
- return true;
+#ifdef TARGET_IEEEQUAD_DEFAULT
+ return TARGET_IEEEQUAD_DEFAULT;
#else
- return false;
+ return -1;
#endif
}
diff --git a/gcc/m2/gm2-gcc/m2configure.def b/gcc/m2/gm2-gcc/m2configure.def
index 0c038b9..9e32049 100644
--- a/gcc/m2/gm2-gcc/m2configure.def
+++ b/gcc/m2/gm2-gcc/m2configure.def
@@ -41,38 +41,15 @@ PROCEDURE FullPathCPP () : ADDRESS ;
(*
- M2CLongRealFloat128 - return true if M2C_LONGREAL_FLOAT128
- is defined.
- Only one of M2CLongRealFloat128,
- M2CLongRealIBM128,
- M2CLongRealLongDouble will be set true.
+ TargetIEEEQuadDefault - return the value of TARGET_IEEEQUAD_DEFAULT.
+ If it is undefined -1 is returned.
+ A value of 0 indicates the default target long
+ double uses the IBM 128 representation.
+ A value of 1 indicates the default target long
+ double (LONGREAL) is __float128.
*)
-PROCEDURE M2CLongRealFloat128 () : BOOLEAN ;
-
-
-(*
- M2CLongRealIBM128 - return true if M2C_LONGREAL_IBM128
- is defined.
-*)
-
-PROCEDURE M2CLongRealIBM128 () : BOOLEAN ;
-
-
-(*
- M2CLongRealLongDouble - return true if M2C_LONGREAL_LONGDOUBLE
- is defined. This is true if the LONGREAL
- maps onto the default gcc long double type.
-*)
-
-PROCEDURE M2CLongRealLongDouble () : BOOLEAN ;
-
-
-(*
- M2CLongRealLongDoublePPC64LE - return true if the target is ppc64le.
-*)
-
-PROCEDURE M2CLongRealLongDoublePPC64LE () : BOOLEAN ;
+PROCEDURE TargetIEEEQuadDefault () : INTEGER ;
END m2configure.
diff --git a/gcc/m2/gm2-gcc/m2configure.h b/gcc/m2/gm2-gcc/m2configure.h
index a825600..dc4c116 100644
--- a/gcc/m2/gm2-gcc/m2configure.h
+++ b/gcc/m2/gm2-gcc/m2configure.h
@@ -41,17 +41,8 @@ along with GNU Modula-2; see the file COPYING3. If not see
EXTERN char *
m2configure_FullPathCPP (void);
-EXTERN bool
-m2configure_M2CLongRealFloat128 (void);
-
-EXTERN bool
-m2configure_M2CLongRealIBM128 (void);
-
-EXTERN bool
-m2configure_M2CLongRealLongDouble (void);
-
-EXTERN bool
-m2configure_M2CLongRealLongDoublePPC64LE (void);
+EXTERN int
+m2configure_TargetIEEEQuadDefault (void);
#undef EXTERN
#endif /* m2configure_h. */
diff --git a/gcc/m2/gm2-gcc/m2options.h b/gcc/m2/gm2-gcc/m2options.h
index 3d46dc8..01256a9 100644
--- a/gcc/m2/gm2-gcc/m2options.h
+++ b/gcc/m2/gm2-gcc/m2options.h
@@ -148,6 +148,10 @@ EXTERN char *M2Options_GetM2PathName (void);
EXTERN int M2Options_SetUninitVariableChecking (bool value, const char *arg);
EXTERN void M2Options_SetCaseEnumChecking (bool value);
EXTERN void M2Options_SetDebugBuiltins (bool value);
+EXTERN void M2Options_SetIBMLongDouble (bool value);
+EXTERN bool M2Options_GetIBMLongDouble (void);
+EXTERN void M2Options_SetIEEELongDouble (bool value);
+EXTERN bool M2Options_GetIEEELongDouble (void);
#undef EXTERN
#endif /* m2options_h. */
diff --git a/gcc/m2/gm2-gcc/m2type.cc b/gcc/m2/gm2-gcc/m2type.cc
index e00987a..571923c 100644
--- a/gcc/m2/gm2-gcc/m2type.cc
+++ b/gcc/m2/gm2-gcc/m2type.cc
@@ -1441,22 +1441,20 @@ build_m2_real_node (void)
static tree
build_m2_long_real_node (void)
{
- tree c;
+ tree longreal;
/* Define `LONGREAL'. */
-
- if (m2configure_M2CLongRealFloat128 ())
- c = float128_type_node;
- else if (m2configure_M2CLongRealIBM128 ())
+ if (M2Options_GetIBMLongDouble ())
{
- c = make_node (REAL_TYPE);
- TYPE_PRECISION (c) = LONG_DOUBLE_TYPE_SIZE;
+ longreal = make_node (REAL_TYPE);
+ TYPE_PRECISION (longreal) = LONG_DOUBLE_TYPE_SIZE;
}
+ else if (M2Options_GetIEEELongDouble ())
+ longreal = float128_type_node;
else
- c = long_double_type_node;
-
- layout_type (c);
- return c;
+ longreal = long_double_type_node;
+ layout_type (longreal);
+ return longreal;
}
static tree
diff --git a/gcc/m2/gm2-lang.cc b/gcc/m2/gm2-lang.cc
index cfebfc6..86124df 100644
--- a/gcc/m2/gm2-lang.cc
+++ b/gcc/m2/gm2-lang.cc
@@ -639,6 +639,16 @@ gm2_langhook_handle_option (
case OPT_fm2_whole_program:
M2Options_SetWholeProgram (value);
return 1;
+#ifdef OPT_mabi_ibmlongdouble
+ case OPT_mabi_ibmlongdouble:
+ M2Options_SetIBMLongDouble (value);
+ return 1;
+#endif
+#ifdef OPT_mabi_ieeelongdouble
+ case OPT_mabi_ieeelongdouble:
+ M2Options_SetIEEELongDouble (value);
+ return 1;
+#endif
case OPT_flocation_:
if (strcmp (arg, "builtins") == 0)
{
diff --git a/gcc/m2/gm2-libs/FIO.mod b/gcc/m2/gm2-libs/FIO.mod
index 7e0aebe..6755d3d 100644
--- a/gcc/m2/gm2-libs/FIO.mod
+++ b/gcc/m2/gm2-libs/FIO.mod
@@ -36,7 +36,7 @@ IMPLEMENTATION MODULE FIO ;
provides a simple buffered file input/output library.
*)
-FROM SYSTEM IMPORT ADR, TSIZE, WORD ;
+FROM SYSTEM IMPORT ADR, TSIZE, WORD, CSSIZE_T ;
FROM ASCII IMPORT nl, nul, tab ;
FROM StrLib IMPORT StrLen, StrConCat, StrCopy ;
FROM Storage IMPORT ALLOCATE, DEALLOCATE ;
@@ -1448,7 +1448,7 @@ BEGIN
filled := 0
END
END ;
- offset := lseek(unixfd, pos, SEEK_SET) ;
+ offset := lseek (unixfd, VAL (CSSIZE_T, pos), SEEK_SET) ;
IF (offset>=0) AND (pos=offset)
THEN
abspos := pos
@@ -1497,7 +1497,7 @@ BEGIN
filled := 0
END
END ;
- offset := lseek(unixfd, pos, SEEK_END) ;
+ offset := lseek (unixfd, VAL (CSSIZE_T, pos), SEEK_END) ;
IF offset>=0
THEN
abspos := offset ;
diff --git a/gcc/m2/gm2-libs/libc.def b/gcc/m2/gm2-libs/libc.def
index 4a389f5..f28f8b5 100644
--- a/gcc/m2/gm2-libs/libc.def
+++ b/gcc/m2/gm2-libs/libc.def
@@ -227,7 +227,7 @@ PROCEDURE creat (filename: ADDRESS; mode: CARDINAL) : INTEGER;
off_t lseek(int fildes, off_t offset, int whence);
*)
-PROCEDURE lseek (fd: INTEGER; offset: LONGINT; whence: INTEGER) : LONGINT ;
+PROCEDURE lseek (fd: INTEGER; offset: CSSIZE_T; whence: INTEGER) : [ CSSIZE_T ] ;
(*
diff --git a/gcc/m2/gm2config.aci.in b/gcc/m2/gm2config.aci.in
index 5228ef0..cb9f505 100644
--- a/gcc/m2/gm2config.aci.in
+++ b/gcc/m2/gm2config.aci.in
@@ -48,12 +48,6 @@
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
-/* use __float128 for LONGREAL */
-#undef M2C_LONGREAL_FLOAT128
-
-/* target is ppc64le */
-#undef M2C_LONGREAL_PPC64LE
-
/* Define to the address where bug reports for this package should be sent. */
#undef PACKAGE_BUGREPORT
diff --git a/gcc/m2/gm2spec.cc b/gcc/m2/gm2spec.cc
index 6769ecc..a4faf88 100644
--- a/gcc/m2/gm2spec.cc
+++ b/gcc/m2/gm2spec.cc
@@ -475,15 +475,6 @@ lang_specific_driver (struct cl_decoded_option **in_decoded_options,
/* True if we should set up include paths and library paths. */
bool allow_libraries = true;
-#ifdef M2C_LONGREAL_PPC64LE
- /* Should we add -mabi=ieeelongdouble by default? */
-#ifdef M2C_LONGREAL_FLOAT128
- bool need_default_mabi = true;
-#else
- bool need_default_mabi = false;
-#endif
-#endif
-
#if defined(DEBUG_ARG)
printf ("argc = %d\n", argc);
fprintf (stderr, "Incoming:");
@@ -589,16 +580,6 @@ lang_specific_driver (struct cl_decoded_option **in_decoded_options,
args[i] |= SKIPOPT; /* We will add the option if it is needed. */
push_back_Ipath (decoded_options[i].arg);
break;
-#if defined(OPT_mabi_ibmlongdouble)
- case OPT_mabi_ibmlongdouble:
- need_default_mabi = false; /* User has specified a -mabi. */
- break;
-#endif
-#if defined(OPT_mabi_ieeelongdouble)
- case OPT_mabi_ieeelongdouble:
- need_default_mabi = true; /* User has specified a -mabi. */
- break;
-#endif
case OPT_nostdlib:
case OPT_nostdlib__:
case OPT_nodefaultlibs:
@@ -868,11 +849,6 @@ lang_specific_driver (struct cl_decoded_option **in_decoded_options,
if (need_plugin)
append_option (OPT_fplugin_, "m2rte", 1);
-#ifdef M2C_LONGREAL_PPC64LE
- if (need_default_mabi)
- append_option (OPT_mabi_ieeelongdouble, NULL, 1);
-#endif
-
if (linking)
{
if (allow_libraries)
diff --git a/gcc/m2/mc/mc.flex b/gcc/m2/mc/mc.flex
index bd37d5a..7c841bf 100644
--- a/gcc/m2/mc/mc.flex
+++ b/gcc/m2/mc/mc.flex
@@ -28,9 +28,11 @@ along with GNU Modula-2; see the file COPYING3. If not see
#include <time.h>
#include <ctype.h>
+#ifndef alloca
#ifdef __GNUC__
#define alloca __builtin_alloca
#endif
+#endif
#if !defined(TRUE)
# define TRUE (1==1)
@@ -330,7 +332,7 @@ handleColumn (void)
static void
handleDate (void)
{
- time_t clock = time ((long *)0);
+ time_t clock = time ((time_t *)0);
char *sdate = ctime (&clock);
char *s = (char *)alloca (strlen (sdate)+2+1);
char *p = strchr(sdate, '\n');
diff --git a/gcc/objc/ChangeLog b/gcc/objc/ChangeLog
index 7e61c71..2a4231d 100644
--- a/gcc/objc/ChangeLog
+++ b/gcc/objc/ChangeLog
@@ -1,3 +1,24 @@
+2024-01-28 Iain Sandoe <iain@sandoe.co.uk>
+
+ * objc-next-runtime-abi-02.cc (build_v2_address_table): Prevent
+ over-alignment of Objective-C metadata by setting DECL_USER_ALIGN
+ on relevant variables.
+ (build_v2_protocol_list_address_table): Likewise.
+ (generate_v2_protocol_list): Likewise.
+ (generate_v2_meth_descriptor_table): Likewise.
+ (generate_v2_meth_type_list): Likewise.
+ (generate_v2_property_table): Likewise.
+ (generate_v2_dispatch_table): Likewise.
+ (generate_v2_ivars_list): Likewise.
+ (generate_v2_class_structs): Likewise.
+ (build_ehtype): Likewise.
+ * objc-runtime-shared-support.cc (generate_strings): Likewise.
+
+2024-01-18 Iain Sandoe <iain@sandoe.co.uk>
+
+ * objc-act.cc (objc_init): Initialize interface and class
+ name hash maps before the preprocessor uses them.
+
2024-01-12 Iain Sandoe <iain@sandoe.co.uk>
* objc-next-runtime-abi-02.cc
diff --git a/gcc/objc/objc-act.cc b/gcc/objc/objc-act.cc
index 1431348..cec64c4 100644
--- a/gcc/objc/objc-act.cc
+++ b/gcc/objc/objc-act.cc
@@ -345,6 +345,11 @@ bool
objc_init (void)
{
bool ok;
+
+ /* Set up stuff used by the preprocessor as well as FE parser. */
+ interface_hash_init ();
+ hash_init ();
+
#ifdef OBJCPLUS
if (cxx_init () == false)
#else
@@ -374,8 +379,6 @@ objc_init (void)
/* Set up stuff used by FE parser and all runtimes. */
errbuf = XNEWVEC (char, 1024 * 10);
- interface_hash_init ();
- hash_init ();
objc_encoding_init ();
/* ... and then check flags and set-up for the selected runtime ... */
if (flag_next_runtime && flag_objc_abi >= 2)
diff --git a/gcc/objc/objc-next-runtime-abi-02.cc b/gcc/objc/objc-next-runtime-abi-02.cc
index a622f4c..b3de6d7 100644
--- a/gcc/objc/objc-next-runtime-abi-02.cc
+++ b/gcc/objc/objc-next-runtime-abi-02.cc
@@ -2249,6 +2249,7 @@ build_v2_address_table (vec<tree, va_gc> *src, const char *nam, tree attr)
DECL_PRESERVE_P (decl) = 1;
expr = objc_build_constructor (type, initlist);
OBJCMETA (decl, objc_meta, attr);
+ DECL_USER_ALIGN (decl) = 1;
finish_var_decl (decl, expr);
}
@@ -2323,8 +2324,9 @@ build_v2_protocol_list_address_table (void)
decl = create_global_decl (objc_protocol_type, buf, /*is def=*/true);
expr = convert (objc_protocol_type, build_fold_addr_expr (ref->refdecl));
OBJCMETA (decl, objc_meta, meta_label_protocollist);
- finish_var_decl (decl, expr);
DECL_PRESERVE_P (decl) = 1;
+ DECL_USER_ALIGN (decl) = 1;
+ finish_var_decl (decl, expr);
}
/* TODO: delete the vec. */
@@ -2402,6 +2404,7 @@ generate_v2_protocol_list (tree i_or_p, tree klass_ctxt)
/* ObjC2 puts all these in the base section. */
OBJCMETA (refs_decl, objc_meta, meta_base);
DECL_PRESERVE_P (refs_decl) = 1;
+ DECL_USER_ALIGN (refs_decl) = 1;
finish_var_decl (refs_decl,
objc_build_constructor (TREE_TYPE (refs_decl),initlist));
return refs_decl;
@@ -2510,6 +2513,7 @@ generate_v2_meth_descriptor_table (tree chain, tree protocol,
CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, initlist);
/* Get into the right section. */
OBJCMETA (decl, objc_meta, attr);
+ DECL_USER_ALIGN (decl) = 1;
finish_var_decl (decl, objc_build_constructor (method_list_template, v));
return decl;
}
@@ -2528,13 +2532,14 @@ generate_v2_meth_type_list (vec<tree>& all_meths, tree protocol,
IDENTIFIER_POINTER (PROTOCOL_NAME (protocol)));
tree decl = start_var_decl (list_type, nam);
free (nam);
- OBJCMETA (decl, objc_meta, meta_base);
vec<constructor_elt, va_gc> *v = NULL;
for (unsigned i = 0; i < size; ++i)
CONSTRUCTOR_APPEND_ELT (v, NULL_TREE,
add_objc_string (METHOD_ENCODING (all_meths[i]),
meth_var_types));
+ OBJCMETA (decl, objc_meta, meta_base);
+ DECL_USER_ALIGN (decl) = 1;
finish_var_decl (decl, objc_build_constructor (list_type, v));
return decl;
}
@@ -2657,6 +2662,7 @@ generate_v2_property_table (tree context, tree klass_ctxt)
CONSTRUCTOR_APPEND_ELT (inits, NULL_TREE, initlist);
OBJCMETA (decl, objc_meta, meta_base);
+ DECL_USER_ALIGN (decl) = 1;
finish_var_decl (decl, objc_build_constructor (TREE_TYPE (decl), inits));
return decl;
}
@@ -2868,6 +2874,7 @@ generate_v2_dispatch_table (tree chain, const char *name, tree attr)
CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, initlist);
OBJCMETA (decl, objc_meta, attr);
+ DECL_USER_ALIGN (decl) = 1;
finish_var_decl (decl,
objc_build_constructor (TREE_TYPE (decl), v));
return decl;
@@ -3165,6 +3172,7 @@ generate_v2_ivars_list (tree chain, const char *name, tree attr, tree templ)
build_int_cst (integer_type_node, size));
CONSTRUCTOR_APPEND_ELT (inits, NULL_TREE, initlist);
OBJCMETA (decl, objc_meta, attr);
+ DECL_USER_ALIGN (decl) = 1;
finish_var_decl (decl, objc_build_constructor (TREE_TYPE (decl), inits));
generating_instance_variables = 0;
return decl;
@@ -3432,7 +3440,6 @@ generate_v2_class_structs (struct imp_entry *impent)
decl = start_var_decl (objc_v2_class_ro_template,
newabi_append_ro (IDENTIFIER_POINTER
(DECL_NAME (metaclass_decl))));
-
/* TODO: ivarLayout needs t be built. */
initlist =
build_v2_class_ro_t_initializer (TREE_TYPE (decl), name_expr,
@@ -3442,6 +3449,7 @@ generate_v2_class_structs (struct imp_entry *impent)
class_ivars, NULL_TREE);
/* The ROs sit in the default const section. */
OBJCMETA (decl, objc_meta, meta_base);
+ DECL_USER_ALIGN (decl) = 1;
finish_var_decl (decl, initlist);
/* static struct class_t _OBJC_METACLASS_Foo = { ... }; */
@@ -3453,6 +3461,7 @@ generate_v2_class_structs (struct imp_entry *impent)
build_fold_addr_expr (UOBJC_V2_CACHE_decl),
build_fold_addr_expr (UOBJC_V2_VTABLE_decl));
/* The class section attributes are set when they are created. */
+ DECL_USER_ALIGN (metaclass_decl) = 1;
finish_var_decl (metaclass_decl, initlist);
impent->meta_decl = metaclass_decl;
@@ -3532,6 +3541,7 @@ generate_v2_class_structs (struct imp_entry *impent)
inst_ivars, props);
/* The ROs sit in the default const section. */
OBJCMETA (decl, objc_meta, meta_base);
+ DECL_USER_ALIGN (decl) = 1;
finish_var_decl (decl, initlist);
/* static struct class_t _OBJC_CLASS_Foo = { ... }; */
@@ -3543,6 +3553,7 @@ generate_v2_class_structs (struct imp_entry *impent)
build_fold_addr_expr (UOBJC_V2_VTABLE_decl));
/* The class section attributes are set when they are created. */
+ DECL_USER_ALIGN (class_decl) = 1;
finish_var_decl (class_decl, initlist);
impent->class_decl = class_decl;
@@ -3717,6 +3728,7 @@ build_ehtype (tree name, const char *eh_name, bool weak)
DECL_WEAK (ehtype_decl) = 1;
inits = objc2_build_ehtype_initializer (name_expr, class_name_expr);
OBJCMETA (ehtype_decl, objc_meta, meta_ehtype);
+ DECL_USER_ALIGN (ehtype_decl) = 1;
finish_var_decl (ehtype_decl, inits);
return ehtype_decl;
}
diff --git a/gcc/objc/objc-runtime-shared-support.cc b/gcc/objc/objc-runtime-shared-support.cc
index 49dac5e..21a8822 100644
--- a/gcc/objc/objc-runtime-shared-support.cc
+++ b/gcc/objc/objc-runtime-shared-support.cc
@@ -684,6 +684,7 @@ generate_strings (void)
decl = TREE_PURPOSE (chain);
string_expr = my_build_string (IDENTIFIER_LENGTH (string) + 1,
IDENTIFIER_POINTER (string));
+ DECL_USER_ALIGN (decl) = 1;
finish_var_decl (decl, string_expr);
}
@@ -693,6 +694,7 @@ generate_strings (void)
decl = TREE_PURPOSE (chain);
string_expr = my_build_string (IDENTIFIER_LENGTH (string) + 1,
IDENTIFIER_POINTER (string));
+ DECL_USER_ALIGN (decl) = 1;
finish_var_decl (decl, string_expr);
}
@@ -702,6 +704,7 @@ generate_strings (void)
decl = TREE_PURPOSE (chain);
string_expr = my_build_string (IDENTIFIER_LENGTH (string) + 1,
IDENTIFIER_POINTER (string));
+ DECL_USER_ALIGN (decl) = 1;
finish_var_decl (decl, string_expr);
}
@@ -711,6 +714,7 @@ generate_strings (void)
decl = TREE_PURPOSE (chain);
string_expr = my_build_string (IDENTIFIER_LENGTH (string) + 1,
IDENTIFIER_POINTER (string));
+ DECL_USER_ALIGN (decl) = 1;
finish_var_decl (decl, string_expr);
}
}
diff --git a/gcc/rtl-ssa.h b/gcc/rtl-ssa.h
index f0cf656..1733763 100644
--- a/gcc/rtl-ssa.h
+++ b/gcc/rtl-ssa.h
@@ -50,6 +50,7 @@
#include "mux-utils.h"
#include "rtlanal.h"
#include "cfgbuild.h"
+#include "hash-set.h"
// Provides the global crtl->ssa.
#include "memmodel.h"
diff --git a/gcc/rtl-ssa/accesses.cc b/gcc/rtl-ssa/accesses.cc
index ce4a8b8..3f1304f 100644
--- a/gcc/rtl-ssa/accesses.cc
+++ b/gcc/rtl-ssa/accesses.cc
@@ -1466,6 +1466,16 @@ function_info::create_set (obstack_watermark &watermark,
return set;
}
+use_info *
+function_info::create_use (obstack_watermark &watermark,
+ insn_info *insn,
+ set_info *set)
+{
+ auto use = change_alloc<use_info> (watermark, insn, set->resource (), set);
+ use->m_is_temp = true;
+ return use;
+}
+
// Return true if ACCESS1 can represent ACCESS2 and if ACCESS2 can
// represent ACCESS1.
static bool
diff --git a/gcc/rtl-ssa/accesses.h b/gcc/rtl-ssa/accesses.h
index 6a3ecd3..c57b8a8 100644
--- a/gcc/rtl-ssa/accesses.h
+++ b/gcc/rtl-ssa/accesses.h
@@ -357,6 +357,10 @@ public:
// next_use () && next_use ()->is_in_any_insn () ? next_use () : nullptr
use_info *next_any_insn_use () const;
+ // Return the next use by a debug instruction, or null if none.
+ // This is only valid if if is_in_debug_insn ().
+ use_info *next_debug_insn_use () const;
+
// Return the previous use by a phi node in the list, or null if none.
//
// This is only valid if is_in_phi (). It is equivalent to:
@@ -458,6 +462,8 @@ using reverse_use_iterator = list_iterator<use_info, &use_info::prev_use>;
// of use in the same definition.
using nondebug_insn_use_iterator
= list_iterator<use_info, &use_info::next_nondebug_insn_use>;
+using debug_insn_use_iterator
+ = list_iterator<use_info, &use_info::next_debug_insn_use>;
using any_insn_use_iterator
= list_iterator<use_info, &use_info::next_any_insn_use>;
using phi_use_iterator = list_iterator<use_info, &use_info::prev_phi_use>;
@@ -680,6 +686,10 @@ public:
use_info *first_nondebug_insn_use () const;
use_info *last_nondebug_insn_use () const;
+ // Return the first use of the set by debug instructions, or null if
+ // there is no such use.
+ use_info *first_debug_insn_use () const;
+
// Return the first use of the set by any kind of instruction, or null
// if there are no such uses. The uses are in the order described above.
use_info *first_any_insn_use () const;
@@ -731,6 +741,9 @@ public:
// List the uses of the set by nondebug instructions, in reverse postorder.
iterator_range<nondebug_insn_use_iterator> nondebug_insn_uses () const;
+ // List the uses of the set by debug instructions, in reverse postorder.
+ iterator_range<debug_insn_use_iterator> debug_insn_uses () const;
+
// Return nondebug_insn_uses () in reverse order.
iterator_range<reverse_use_iterator> reverse_nondebug_insn_uses () const;
diff --git a/gcc/rtl-ssa/changes.cc b/gcc/rtl-ssa/changes.cc
index 2fac45a..11639e8 100644
--- a/gcc/rtl-ssa/changes.cc
+++ b/gcc/rtl-ssa/changes.cc
@@ -427,9 +427,11 @@ update_insn_in_place (insn_change &change)
// pending clobbers into actual definitions.
//
// POS gives the final position of INSN, which hasn't yet been moved into
-// place.
+// place. Keep track of any newly-created set_infos being added with this
+// change by adding them to NEW_SETS.
void
-function_info::finalize_new_accesses (insn_change &change, insn_info *pos)
+function_info::finalize_new_accesses (insn_change &change, insn_info *pos,
+ hash_set<def_info *> &new_sets)
{
insn_info *insn = change.insn ();
@@ -465,6 +467,12 @@ function_info::finalize_new_accesses (insn_change &change, insn_info *pos)
// later in case we see a second write to the same resource.
def_info *perm_def = allocate<set_info> (change.insn (),
def->resource ());
+
+ // Keep track of the new set so we remember to add it to the
+ // def chain later.
+ if (new_sets.add (perm_def))
+ gcc_unreachable (); // We shouldn't see duplicates here.
+
def->set_last_def (perm_def);
def = perm_def;
}
@@ -609,15 +617,27 @@ function_info::finalize_new_accesses (insn_change &change, insn_info *pos)
m_temp_uses[i] = use = allocate<use_info> (*use);
use->m_is_temp = false;
set_info *def = use->def ();
- // Handle cases in which the value was previously not used
- // within the block.
- if (def && def->m_is_temp)
+ if (!def || !def->m_is_temp)
+ continue;
+
+ if (auto phi = dyn_cast<phi_info *> (def))
{
- phi_info *phi = as_a<phi_info *> (def);
+ // Handle cases in which the value was previously not used
+ // within the block.
gcc_assert (phi->is_degenerate ());
phi = create_degenerate_phi (phi->ebb (), phi->input_value (0));
use->set_def (phi);
}
+ else
+ {
+ // The temporary def may also be a set added with this change, in
+ // which case the permanent set is stored in the last_def link,
+ // and we need to update the use to refer to the permanent set.
+ gcc_assert (is_a<set_info *> (def));
+ auto perm_set = as_a<set_info *> (def->last_def ());
+ gcc_assert (!perm_set->is_temporary ());
+ use->set_def (perm_set);
+ }
}
}
@@ -631,9 +651,12 @@ function_info::finalize_new_accesses (insn_change &change, insn_info *pos)
}
// Copy information from CHANGE to its underlying insn_info, given that
-// the insn_info has already been placed appropriately.
+// the insn_info has already been placed appropriately. NEW_SETS contains the
+// new set_infos that are being added as part of this change (as opposed to
+// being moved or repurposed from existing instructions).
void
-function_info::apply_changes_to_insn (insn_change &change)
+function_info::apply_changes_to_insn (insn_change &change,
+ hash_set<def_info *> &new_sets)
{
insn_info *insn = change.insn ();
if (change.is_deletion ())
@@ -645,10 +668,11 @@ function_info::apply_changes_to_insn (insn_change &change)
// Copy the cost.
insn->set_cost (change.new_cost);
- // Add all clobbers. Sets and call clobbers never move relative to
- // other definitions, so are OK as-is.
+ // Add all clobbers and newly-created sets. Existing sets and call
+ // clobbers never move relative to other definitions, so are OK as-is.
for (def_info *def : change.new_defs)
- if (is_a<clobber_info *> (def) && !def->is_call_clobber ())
+ if ((is_a<clobber_info *> (def) && !def->is_call_clobber ())
+ || (is_a<set_info *> (def) && new_sets.contains (def)))
add_def (def);
// Add all uses, now that their position is final.
@@ -775,15 +799,31 @@ function_info::change_insns (array_slice<insn_change *> changes)
placeholder = add_placeholder_after (after);
following_insn = placeholder;
}
-
- // Finalize the new list of accesses for the change. Don't install
- // them yet, so that we still have access to the old lists below.
- finalize_new_accesses (change,
- placeholder ? placeholder : insn);
}
placeholders[i] = placeholder;
}
+ // We need to keep track of newly-added sets as these need adding to
+ // the def chain later.
+ hash_set<def_info *> new_sets;
+
+ // Finalize the new list of accesses for each change. Don't install them yet,
+ // so that we still have access to the old lists below.
+ //
+ // Note that we do this forwards instead of in the backwards loop above so
+ // that any new defs being inserted are processed before new uses of those
+ // defs, so that the (initially) temporary uses referring to temporary defs
+ // can be easily updated to become permanent uses referring to permanent defs.
+ for (unsigned i = 0; i < changes.size (); i++)
+ {
+ insn_change &change = *changes[i];
+ insn_info *placeholder = placeholders[i];
+ if (!change.is_deletion ())
+ finalize_new_accesses (change,
+ placeholder ? placeholder : change.insn (),
+ new_sets);
+ }
+
// Remove all definitions that are no longer needed. After the above,
// the only uses of such definitions should be dead phis and now-redundant
// live-out uses.
@@ -836,7 +876,7 @@ function_info::change_insns (array_slice<insn_change *> changes)
// Apply the changes to the underlying insn_infos.
for (insn_change *change : changes)
- apply_changes_to_insn (*change);
+ apply_changes_to_insn (*change, new_sets);
// Now that the insns and accesses are up to date, add any REG_UNUSED notes.
for (insn_change *change : changes)
diff --git a/gcc/rtl-ssa/functions.h b/gcc/rtl-ssa/functions.h
index 58d0b50..f5aca64 100644
--- a/gcc/rtl-ssa/functions.h
+++ b/gcc/rtl-ssa/functions.h
@@ -73,6 +73,13 @@ public:
insn_info *insn,
resource_info resource);
+ // Create a temporary use of SET as part of a change to INSN.
+ // SET can be a pre-existing definition or one that is being created
+ // as part of the same change group.
+ use_info *create_use (obstack_watermark &watermark,
+ insn_info *insn,
+ set_info *set);
+
// Create a temporary insn with code INSN_CODE and pattern PAT.
insn_info *create_insn (obstack_watermark &watermark,
rtx_code insn_code,
@@ -294,8 +301,10 @@ private:
void process_uses_of_deleted_def (set_info *);
insn_info *add_placeholder_after (insn_info *);
void possibly_queue_changes (insn_change &);
- void finalize_new_accesses (insn_change &, insn_info *);
- void apply_changes_to_insn (insn_change &);
+ void finalize_new_accesses (insn_change &, insn_info *,
+ hash_set<def_info *> &);
+ void apply_changes_to_insn (insn_change &,
+ hash_set<def_info *> &);
void init_function_data ();
void calculate_potential_phi_regs (build_info &);
diff --git a/gcc/rtl-ssa/member-fns.inl b/gcc/rtl-ssa/member-fns.inl
index 8e1c17c..e4825ad 100644
--- a/gcc/rtl-ssa/member-fns.inl
+++ b/gcc/rtl-ssa/member-fns.inl
@@ -120,6 +120,15 @@ use_info::next_any_insn_use () const
}
inline use_info *
+use_info::next_debug_insn_use () const
+{
+ if (auto use = next_use ())
+ if (use->is_in_debug_insn ())
+ return use;
+ return nullptr;
+}
+
+inline use_info *
use_info::prev_phi_use () const
{
// This is used less often than next_nondebug_insn_use, so it doesn't
@@ -213,6 +222,20 @@ set_info::last_nondebug_insn_use () const
}
inline use_info *
+set_info::first_debug_insn_use () const
+{
+ use_info *use;
+ if (has_nondebug_insn_uses ())
+ use = last_nondebug_insn_use ()->next_use ();
+ else
+ use = first_use ();
+
+ if (use && use->is_in_debug_insn ())
+ return use;
+ return nullptr;
+}
+
+inline use_info *
set_info::first_any_insn_use () const
{
if (m_first_use && m_first_use->is_in_any_insn ())
@@ -310,6 +333,12 @@ set_info::nondebug_insn_uses () const
return { first_nondebug_insn_use (), nullptr };
}
+inline iterator_range<debug_insn_use_iterator>
+set_info::debug_insn_uses () const
+{
+ return { first_debug_insn_use (), nullptr };
+}
+
inline iterator_range<reverse_use_iterator>
set_info::reverse_nondebug_insn_uses () const
{
diff --git a/gcc/rust/ChangeLog b/gcc/rust/ChangeLog
index c093556..a834a8f 100644
--- a/gcc/rust/ChangeLog
+++ b/gcc/rust/ChangeLog
@@ -1,3 +1,10 @@
+2024-01-18 Arthur Cohen <arthur.cohen@embecosm.com>
+
+ * backend/rust-compile-base.cc (HIRCompileBase::resolve_method_address):
+ Cast size_t value to unsigned long.
+ * expand/rust-proc-macro.cc (load_macros): Likewise.
+ * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): Likewise.
+
2024-01-16 Owen Avery <powerboat9.gamer@gmail.com>
* hir/tree/rust-hir-pattern.h
diff --git a/gcc/sched-deps.cc b/gcc/sched-deps.cc
index 0615007..5034e66 100644
--- a/gcc/sched-deps.cc
+++ b/gcc/sched-deps.cc
@@ -4791,7 +4791,7 @@ find_inc (struct mem_inc_info *mii, bool backwards)
sd_iterator_def sd_it;
dep_t dep;
sd_list_types_def mem_deps = backwards ? SD_LIST_HARD_BACK : SD_LIST_FORW;
- int n_mem_deps = sd_lists_size (mii->mem_insn, mem_deps);
+ int n_mem_deps = dep_list_size (mii->mem_insn, mem_deps);
sd_it = sd_iterator_start (mii->mem_insn, mem_deps);
while (sd_iterator_cond (&sd_it, &dep))
@@ -4808,12 +4808,12 @@ find_inc (struct mem_inc_info *mii, bool backwards)
if (backwards)
{
inc_cand = pro;
- n_inc_deps = sd_lists_size (inc_cand, SD_LIST_BACK);
+ n_inc_deps = dep_list_size (inc_cand, SD_LIST_BACK);
}
else
{
inc_cand = con;
- n_inc_deps = sd_lists_size (inc_cand, SD_LIST_FORW);
+ n_inc_deps = dep_list_size (inc_cand, SD_LIST_FORW);
}
/* In the FOR_EACH_DEP loop below we will create additional n_inc_deps
diff --git a/gcc/sched-int.h b/gcc/sched-int.h
index ab784fe..4df0920 100644
--- a/gcc/sched-int.h
+++ b/gcc/sched-int.h
@@ -1677,6 +1677,8 @@ extern void sd_copy_back_deps (rtx_insn *, rtx_insn *, bool);
extern void sd_delete_dep (sd_iterator_def);
extern void sd_debug_lists (rtx, sd_list_types_def);
+extern int dep_list_size (rtx_insn *, sd_list_types_def);
+
/* Macros and declarations for scheduling fusion. */
#define FUSION_MAX_PRIORITY (INT_MAX)
extern bool sched_fusion;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 352222c..512d3ce 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,1241 @@
+2024-01-29 Alexandre Oliva <oliva@adacore.com>
+
+ * lib/target-supports.exp (check_effective_target_shared):
+ Check for a static-only libc.
+
+2024-01-29 Alexandre Oliva <oliva@adacore.com>
+
+ * c-c++-common/dfp/pr36800.c: Drop dg-do overrider.
+ * c-c++-common/dfp/pr39034.c: Likewise.
+ * c-c++-common/dfp/pr39035.c: Likewise.
+ * gcc.dg/dfp/bid-non-canonical-d32-1.c: Likewise.
+ * gcc.dg/dfp/bid-non-canonical-d32-2.c: Likewise.
+ * gcc.dg/dfp/bid-non-canonical-d64-1.c: Likewise.
+ * gcc.dg/dfp/bid-non-canonical-d64-2.c: Likewise.
+ * gcc.dg/dfp/builtin-snan-1.c: Likewise.
+ * gcc.dg/dfp/builtin-tgmath-dfp.c: Likewise.
+ * gcc.dg/dfp/c23-float-dfp-4.c: Likewise.
+ * gcc.dg/dfp/c23-float-dfp-5.c: Likewise.
+ * gcc.dg/dfp/c23-float-dfp-6.c: Likewise.
+ * gcc.dg/dfp/c23-float-dfp-7.c: Likewise.
+ * gcc.dg/dfp/pr108068.c: Likewise.
+ * gcc.dg/dfp/pr97439.c: Likewise.
+ * g++.dg/compat/decimal/pass-1_main.C: Require dfprt.
+ * g++.dg/compat/decimal/pass-2_main.C: Likewise.
+ * g++.dg/compat/decimal/pass-3_main.C: Likewise.
+ * g++.dg/compat/decimal/pass-4_main.C: Likewise.
+ * g++.dg/compat/decimal/pass-5_main.C: Likewise.
+ * g++.dg/compat/decimal/pass-6_main.C: Likewise.
+ * g++.dg/compat/decimal/return-1_main.C: Likewise.
+ * g++.dg/compat/decimal/return-2_main.C: Likewise.
+ * g++.dg/compat/decimal/return-3_main.C: Likewise.
+ * g++.dg/compat/decimal/return-4_main.C: Likewise.
+ * g++.dg/compat/decimal/return-5_main.C: Likewise.
+ * g++.dg/compat/decimal/return-6_main.C: Likewise.
+ * g++.dg/eh/dfp-1.C: Likewise.
+ * g++.dg/eh/dfp-2.C: Likewise.
+ * g++.dg/eh/dfp-saves-aarch64.C: Likewise.
+ * gcc.c-torture/execute/pr80692.c: Likewise.
+ * gcc.dg/dfp/bid-non-canonical-d128-1.c: Likewise.
+ * gcc.dg/dfp/bid-non-canonical-d128-2.c: Likewise.
+ * gcc.dg/dfp/bid-non-canonical-d128-3.c: Likewise.
+ * gcc.dg/dfp/bid-non-canonical-d128-4.c: Likewise.
+
+2024-01-29 Jose E. Marchesi <jose.marchesi@oracle.com>
+
+ * gcc.target/bpf/naked-1.c: Update test to not expect an exit
+ instruction in naked function.
+ * gcc.target/bpf/naked-2.c: New test.
+
+2024-01-29 Patrick O'Neill <patrick@rivosinc.com>
+
+ * gcc.target/riscv/rvv/vsetvl/pr113429.c: Add
+ require-effective-target rv64 and riscv_v
+
+2024-01-29 Jason Merrill <jason@redhat.com>
+
+ PR c++/113544
+ * g++.dg/cpp1y/lambda-generic-nested3.C: New test.
+
+2024-01-29 Matthieu Longo <matthieu.longo@arm.com>
+
+ PR target/108933
+ * gcc.target/arm/rev16.c: Moved to...
+ * gcc.target/arm/rev16_1.c: ...here.
+ * gcc.target/arm/rev16_2.c: New test to check that rev16 is emitted.
+
+2024-01-29 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/113622
+ * gcc.target/i386/pr113622-2.c: New testcase.
+ * gcc.target/i386/pr113622-3.c: Likewise.
+
+2024-01-29 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/113622
+ * gcc.target/i386/pr113622-1.c: New testcase.
+
+2024-01-29 Alex Coplan <alex.coplan@arm.com>
+
+ PR target/113616
+ * gcc.c-torture/compile/pr113616.c: New test.
+
+2024-01-29 H.J. Lu <hjl.tools@gmail.com>
+
+ PR target/38534
+ * gcc.target/i386/pr38534-5.c: New file.
+ * gcc.target/i386/pr38534-6.c: Likewise.
+
+2024-01-29 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
+
+ PR target/112950
+ * gcc.target/aarch64/sve/acle/general/dupq_5.c: Remove include directive
+ and instead use #pragma GCC for including arm_sve.h.
+
+2024-01-29 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR target/113281
+ * gcc.dg/vect/pr113281-1.c: New test.
+ * gcc.dg/vect/pr113281-2.c: Likewise.
+ * gcc.dg/vect/pr113281-3.c: Likewise.
+ * gcc.dg/vect/pr113281-4.c: Likewise.
+ * gcc.dg/vect/pr113281-5.c: Likewise.
+
+2024-01-29 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/110603
+ * gcc.c-torture/compile/pr110603.c: New test.
+
+2024-01-29 Andrew Pinski <quic_apinski@quicinc.com>
+
+ PR testsuite/109705
+ * lib/target-supports.exp (check_effective_target_vect_long_mult):
+ Fix powerpc*-*-* checks by considering ilp32.
+
+2024-01-28 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/113377
+ * gfortran.dg/optional_absent_11.f90: New test.
+
+2024-01-28 Iain Sandoe <iain@sandoe.co.uk>
+
+ * obj-c++.dg/encode-10.mm: Remove unneeded '-lobjc' option addition.
+ * obj-c++.dg/encode-9.mm: Likewise.
+
+2024-01-28 Iain Sandoe <iain@sandoe.co.uk>
+
+ * jit.dg/jit.exp: Filter error output to remove per-run
+ variable content.
+
+2024-01-27 Jose E. Marchesi <jose.marchesi@oracle.com>
+
+ * gcc.target/bpf/helper-skb-ancestor-cgroup-id.c: Add constant
+ version of kernel helper static pointer.
+
+2024-01-27 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/104908
+ * gfortran.dg/pr104908.f90: New test.
+
+2024-01-27 H.J. Lu <hjl.tools@gmail.com>
+
+ PR target/38534
+ * gcc.target/i386/pr38534-1.c: New file.
+ * gcc.target/i386/pr38534-2.c: Likewise.
+ * gcc.target/i386/pr38534-3.c: Likewise.
+ * gcc.target/i386/pr38534-4.c: Likewise.
+ * gcc.target/i386/stack-check-17.c: Updated.
+
+2024-01-27 H.J. Lu <hjl.tools@gmail.com>
+
+ PR target/103503
+ PR target/113312
+ * gcc.dg/torture/no-callee-saved-run-1a.c: New file.
+ * gcc.dg/torture/no-callee-saved-run-1b.c: Likewise.
+ * gcc.target/i386/no-callee-saved-1.c: Likewise.
+ * gcc.target/i386/no-callee-saved-2.c: Likewise.
+ * gcc.target/i386/no-callee-saved-3.c: Likewise.
+ * gcc.target/i386/no-callee-saved-4.c: Likewise.
+ * gcc.target/i386/no-callee-saved-5.c: Likewise.
+ * gcc.target/i386/no-callee-saved-6.c: Likewise.
+ * gcc.target/i386/no-callee-saved-7.c: Likewise.
+ * gcc.target/i386/no-callee-saved-8.c: Likewise.
+ * gcc.target/i386/no-callee-saved-9.c: Likewise.
+ * gcc.target/i386/no-callee-saved-10.c: Likewise.
+ * gcc.target/i386/no-callee-saved-11.c: Likewise.
+ * gcc.target/i386/no-callee-saved-12.c: Likewise.
+ * gcc.target/i386/no-callee-saved-13.c: Likewise.
+ * gcc.target/i386/no-callee-saved-14.c: Likewise.
+ * gcc.target/i386/no-callee-saved-15.c: Likewise.
+ * gcc.target/i386/no-callee-saved-16.c: Likewise.
+ * gcc.target/i386/no-callee-saved-17.c: Likewise.
+ * gcc.target/i386/no-callee-saved-18.c: Likewise.
+
+2024-01-27 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/113614
+ * gcc.dg/torture/bitint-54.c: New test.
+
+2024-01-27 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/113568
+ * gcc.dg/bitint-78.c: New test.
+
+2024-01-27 Lewis Hyatt <lhyatt@gmail.com>
+
+ PR preprocessor/105608
+ * g++.dg/pch/line-map-1.C: New test.
+ * g++.dg/pch/line-map-1.Hs: New test.
+ * g++.dg/pch/line-map-2.C: New test.
+ * g++.dg/pch/line-map-2.Hs: New test.
+ * g++.dg/pch/line-map-3.C: New test.
+ * g++.dg/pch/line-map-3.Hs: New test.
+
+2024-01-26 Hans-Peter Nilsson <hp@axis.com>
+
+ * g++.dg/Wattributes-3.C: Adjust expected warning.
+ * gcc.dg/fail_always_inline.c: Ditto.
+
+2024-01-26 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ PR c++/113580
+ * g++.dg/modules/pr113580_a.C: New test.
+ * g++.dg/modules/pr113580_b.C: New test.
+
+2024-01-26 Maciej W. Rozycki <macro@embecosm.com>
+
+ * gcc.target/riscv/cset-sext-rtl.c: New file.
+ * gcc.target/riscv/cset-sext-rtl32.c: New file.
+ * gcc.target/riscv/cset-sext-sfb-rtl.c: New file.
+ * gcc.target/riscv/cset-sext-sfb-rtl32.c: New file.
+ * gcc.target/riscv/cset-sext-thead-rtl.c: New file.
+ * gcc.target/riscv/cset-sext-ventana-rtl.c: New file.
+ * gcc.target/riscv/cset-sext-zicond-rtl.c: New file.
+ * gcc.target/riscv/cset-sext-zicond-rtl32.c: New file.
+
+2024-01-26 Maciej W. Rozycki <macro@embecosm.com>
+
+ * gcc.target/riscv/pr105314-rtl.c: New file.
+ * gcc.target/riscv/pr105314-rtl32.c: New file.
+
+2024-01-26 Maciej W. Rozycki <macro@embecosm.com>
+
+ * gcc.target/riscv/pr105314.c: Scan the RTL "ce1" pass too.
+
+2024-01-26 Maciej W. Rozycki <macro@embecosm.com>
+
+ * gcc.target/riscv/pr105314.c: Replace `dg-options' command with
+ `dg-skip-if'. Also reject "bne" with `dg-final'.
+
+2024-01-26 Gaius Mulley <gaiusmod2@gmail.com>
+
+ * gm2/pim/fail/badpointer4.mod: New test.
+ * gm2/pim/fail/strconst.def: New test.
+
+2024-01-26 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ PR c++/112899
+ * g++.dg/modules/init-4_a.C: New test.
+ * g++.dg/modules/init-4_b.C: New test.
+ * g++.dg/modules/init-6_a.H: New test.
+ * g++.dg/modules/init-6_b.C: New test.
+
+2024-01-26 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/113602
+ * gcc.dg/pr113602.c: New testcase.
+
+2024-01-26 Jiahao Xu <xujiahao@loongson.cn>
+
+ * gcc.target/loongarch/vect-extract.c: New test.
+
+2024-01-26 Jiahao Xu <xujiahao@loongson.cn>
+
+ * gcc.target/loongarch/short-circuit.c: New test.
+
+2024-01-26 chenxiaolong <chenxiaolong@loongson.cn>
+
+ * gcc.dg/signbit-2.c: Added additional "-mlsx" compilation options.
+ * gfortran.dg/graphite/vect-pr40979.f90: Dito.
+ * gfortran.dg/vect/fast-math-mgrid-resid.f: Dito.
+
+2024-01-26 Li Wei <liwei@loongson.cn>
+
+ * gcc.target/loongarch/invariant-recip.c: New test.
+
+2024-01-26 Andrew Pinski <quic_apinski@quicinc.com>
+
+ PR testsuite/109705
+ * gcc.dg/vect/pr25413a.c: Expect 1 vectorized loops for !vect_long_mult
+ and 2 for vect_long_mult.
+
+2024-01-26 Juzhe-Zhong <juzhe.zhong@rivai.ai>
+
+ PR target/113469
+ * gcc.target/riscv/rvv/autovec/pr113469.c: New test.
+
+2024-01-25 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/113599
+ * g++.dg/expr/ptrmem11.C: New test.
+
+2024-01-25 Jason Merrill <jason@redhat.com>
+
+ PR c++/113598
+ * g++.dg/cpp0x/initlist-pmf2.C: New test.
+
+2024-01-25 Jason Merrill <jason@redhat.com>
+
+ PR c++/109227
+ * g++.dg/coroutines/co-await-initlist2.C: New test.
+
+2024-01-25 Gaius Mulley <gaiusmod2@gmail.com>
+
+ * gm2/pim/fail/badpointer.mod: New test.
+ * gm2/pim/fail/badpointer2.mod: New test.
+ * gm2/pim/fail/badpointer3.mod: New test.
+ * gm2/projects/pim/run/pass/pegfive/pegfive.mod: New test.
+ * gm2/projects/pim/run/pass/pegfive/projects-pim-run-pass-pegfive.exp: New test.
+
+2024-01-25 Robin Dapp <rdapp.gcc@gmail.com>
+
+ * gcc.target/riscv/rvv/autovec/pr112971.c: New test.
+
+2024-01-25 Robin Dapp <rdapp@ventanamicro.com>
+
+ PR testsuite/113558
+ * gcc.dg/vect/no-scevccp-outer-7.c: Add target check.
+ * gcc.dg/vect/vect-outer-4c-big-array.c: Ditto.
+ * gcc.dg/vect/vect-reduc-dot-s16a.c: Ditto.
+ * gcc.dg/vect/vect-reduc-dot-s8a.c: Ditto.
+ * gcc.dg/vect/vect-reduc-dot-s8b.c: Ditto.
+ * gcc.dg/vect/vect-reduc-dot-u16b.c: Ditto.
+ * gcc.dg/vect/vect-reduc-dot-u8a.c: Ditto.
+ * gcc.dg/vect/vect-reduc-dot-u8b.c: Ditto.
+ * gcc.dg/vect/vect-reduc-pattern-1a.c: Ditto.
+ * gcc.dg/vect/vect-reduc-pattern-1b-big-array.c: Ditto.
+ * gcc.dg/vect/vect-reduc-pattern-1c-big-array.c: Ditto.
+ * gcc.dg/vect/vect-reduc-pattern-2a.c: Ditto.
+ * gcc.dg/vect/vect-reduc-pattern-2b-big-array.c: Ditto.
+ * gcc.dg/vect/wrapv-vect-reduc-dot-s8b.c: Ditto.
+
+2024-01-25 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/112969
+ * c-c++-common/analyzer/compound-assignment-5.c (test_3): Remove
+ xfails, reorder tests.
+ * c-c++-common/analyzer/compound-assignment-pr112969.c: New test.
+ * gcc.dg/plugin/infoleak-pr112969.c: New test.
+ * gcc.dg/plugin/plugin.exp: Add infoleak-pr112969.c to
+ analyzer_kernel_plugin.c tests.
+
+2024-01-25 Mary Bennett <mary.bennett@embecosm.com>
+
+ * gcc.target/riscv/cv-simd-abs-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-abs-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-add-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-add-div2-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-add-div4-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-add-div8-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-add-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-add-sc-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-add-sc-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-and-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-and-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-and-sc-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-and-sc-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-avg-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-avg-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-avg-sc-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-avg-sc-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-avgu-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-avgu-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-avgu-sc-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-avgu-sc-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-cmpeq-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-cmpeq-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-cmpeq-sc-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-cmpeq-sc-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-cmpge-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-cmpge-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-cmpge-sc-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-cmpge-sc-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-cmpgeu-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-cmpgeu-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-cmpgeu-sc-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-cmpgeu-sc-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-cmpgt-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-cmpgt-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-cmpgt-sc-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-cmpgt-sc-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-cmpgtu-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-cmpgtu-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-cmpgtu-sc-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-cmpgtu-sc-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-cmple-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-cmple-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-cmple-sc-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-cmple-sc-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-cmpleu-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-cmpleu-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-cmpleu-sc-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-cmpleu-sc-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-cmplt-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-cmplt-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-cmplt-sc-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-cmplt-sc-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-cmpltu-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-cmpltu-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-cmpltu-sc-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-cmpltu-sc-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-cmpne-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-cmpne-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-cmpne-sc-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-cmpne-sc-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-cplxconj-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-cplxmul-i-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-cplxmul-i-div2-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-cplxmul-i-div4-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-cplxmul-i-div8-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-cplxmul-r-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-cplxmul-r-div2-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-cplxmul-r-div4-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-cplxmul-r-div8-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-dotsp-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-dotsp-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-dotsp-sc-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-dotsp-sc-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-dotup-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-dotup-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-dotup-sc-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-dotup-sc-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-dotusp-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-dotusp-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-dotusp-sc-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-dotusp-sc-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-extract-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-extract-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-extractu-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-extractu-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-insert-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-insert-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-march-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-max-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-max-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-max-sc-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-max-sc-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-maxu-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-maxu-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-maxu-sc-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-maxu-sc-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-min-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-min-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-min-sc-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-min-sc-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-minu-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-minu-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-minu-sc-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-minu-sc-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-neg-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-neg-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-or-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-or-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-or-sc-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-or-sc-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-pack-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-pack-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-packhi-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-packlo-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-sdotsp-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-sdotsp-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-sdotsp-sc-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-sdotsp-sc-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-sdotup-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-sdotup-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-sdotup-sc-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-sdotup-sc-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-sdotusp-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-sdotusp-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-sdotusp-sc-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-sdotusp-sc-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-shuffle-sci-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-shuffle2-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-shuffle2-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-shufflei0-sci-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-shufflei1-sci-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-shufflei2-sci-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-shufflei3-sci-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-sll-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-sll-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-sll-sc-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-sll-sc-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-sra-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-sra-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-sra-sc-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-sra-sc-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-srl-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-srl-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-srl-sc-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-srl-sc-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-sub-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-sub-div2-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-sub-div4-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-sub-div8-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-sub-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-sub-sc-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-sub-sc-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-subrotmj-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-subrotmj-div2-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-subrotmj-div4-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-subrotmj-div8-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-xor-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-xor-h-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-xor-sc-b-compile-1.c: New test.
+ * gcc.target/riscv/cv-simd-xor-sc-h-compile-1.c: New test.
+ * lib/target-supports.exp: Add proc for XCVsimd extension.
+
+2024-01-25 Yanzhang Wang <yanzhang.wang@intel.com>
+
+ PR target/113538
+ * gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul1-7.c: Fix the asm
+ check.
+ * gcc.target/riscv/rvv/base/abi-call-args-1-run.c: Ditto.
+ * gcc.target/riscv/rvv/base/abi-call-args-1.c: Ditto.
+ * gcc.target/riscv/rvv/base/abi-call-args-2-run.c: Ditto.
+ * gcc.target/riscv/rvv/base/abi-call-args-2.c: Ditto.
+ * gcc.target/riscv/rvv/base/abi-call-args-3-run.c: Ditto.
+ * gcc.target/riscv/rvv/base/abi-call-args-3.c: Ditto.
+ * gcc.target/riscv/rvv/base/abi-call-args-4-run.c: Ditto.
+ * gcc.target/riscv/rvv/base/abi-call-args-4.c: Ditto.
+ * gcc.target/riscv/rvv/base/abi-call-error-1.c: Ditto.
+ * gcc.target/riscv/rvv/base/abi-call-return-run.c: Ditto.
+ * gcc.target/riscv/rvv/base/abi-call-return.c: Ditto.
+ * gcc.target/riscv/rvv/base/abi-call-variant_cc.c: Ditto.
+ * gcc.target/riscv/rvv/base/abi-callee-saved-1-fixed-1.c: Ditto.
+ * gcc.target/riscv/rvv/base/abi-callee-saved-1-fixed-2.c: Ditto.
+ * gcc.target/riscv/rvv/base/abi-callee-saved-1-save-restore.c: Ditto.
+ * gcc.target/riscv/rvv/base/abi-callee-saved-1-zcmp.c: Ditto.
+ * gcc.target/riscv/rvv/base/abi-callee-saved-1.c: Ditto.
+ * gcc.target/riscv/rvv/base/abi-callee-saved-2-save-restore.c: Ditto.
+ * gcc.target/riscv/rvv/base/abi-callee-saved-2-zcmp.c: Ditto.
+ * gcc.target/riscv/rvv/base/abi-callee-saved-2.c: Ditto.
+ * gcc.target/riscv/rvv/base/float-point-dynamic-frm-69.c: Ditto.
+ * gcc.target/riscv/rvv/base/float-point-dynamic-frm-70.c: Ditto.
+ * gcc.target/riscv/rvv/base/float-point-dynamic-frm-71.c: Ditto.
+ * gcc.target/riscv/rvv/base/misc_vreinterpret_vbool_vint.c: Ditto.
+ * gcc.target/riscv/rvv/base/overloaded_rv32_vadd.c: Ditto.
+ * gcc.target/riscv/rvv/base/overloaded_rv32_vfadd.c: Ditto.
+ * gcc.target/riscv/rvv/base/overloaded_rv32_vget_vset.c: Ditto.
+ * gcc.target/riscv/rvv/base/overloaded_rv32_vloxseg2ei16.c: Ditto.
+ * gcc.target/riscv/rvv/base/overloaded_rv32_vreinterpret.c: Ditto.
+ * gcc.target/riscv/rvv/base/overloaded_rv64_vadd.c: Ditto.
+ * gcc.target/riscv/rvv/base/overloaded_rv64_vfadd.c: Ditto.
+ * gcc.target/riscv/rvv/base/overloaded_rv64_vget_vset.c: Ditto.
+ * gcc.target/riscv/rvv/base/overloaded_rv64_vloxseg2ei16.c: Ditto.
+ * gcc.target/riscv/rvv/base/overloaded_rv64_vreinterpret.c: Ditto.
+ * gcc.target/riscv/rvv/base/spill-10.c: Ditto.
+ * gcc.target/riscv/rvv/base/spill-11.c: Ditto.
+ * gcc.target/riscv/rvv/base/spill-9.c: Ditto.
+ * gcc.target/riscv/rvv/base/tuple_vundefined.c: Ditto.
+ * gcc.target/riscv/rvv/base/vcreate.c: Ditto.
+ * gcc.target/riscv/rvv/base/vlmul_ext-1.c: Ditto.
+ * gcc.target/riscv/rvv/base/zvfh-over-zvfhmin.c: Ditto.
+ * gcc.target/riscv/rvv/base/zvfhmin-intrinsic.c: Ditto.
+ * lib/target-supports.exp: Remove the flag.
+
+2024-01-25 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/113574
+ * gcc.dg/torture/bitint-52.c: New test.
+
+2024-01-25 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR target/113572
+ * gcc.target/aarch64/sve/pr113572.c: New test.
+
+2024-01-25 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR target/113550
+ * gcc.target/aarch64/pr113550.c: New test.
+
+2024-01-25 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR target/113485
+ * gcc.target/aarch64/pr113485.c: New test.
+ * gcc.target/aarch64/pr113573.c: Likewise.
+
+2024-01-25 Andrew Pinski <quic_apinski@quicinc.com>
+
+ PR testsuite/113548
+ * gcc.dg/vect/slp-reduc-10a.c: Use `__SIZETYPE__` instead of `unsigned long`.
+ * gcc.dg/vect/slp-reduc-10b.c: Likewise.
+ * gcc.dg/vect/slp-reduc-10c.c: Likewise.
+ * gcc.dg/vect/slp-reduc-10d.c: Likewise.
+ * gcc.dg/vect/slp-reduc-10e.c: Likewise.
+ * gcc.dg/vect/vect-cond-arith-2.c: Likewise.
+ * gcc.dg/vect/vect-ifcvt-19.c: Likewise.
+
+2024-01-25 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/113576
+ * gcc.dg/vect/pr113576.c: New testcase.
+
+2024-01-25 Haochen Gui <guihaoc@gcc.gnu.org>
+
+ * gcc.target/powerpc/block-cmp-1.c: Exclude m32 and mpowerpc64.
+ * gcc.target/powerpc/block-cmp-4.c: Likewise.
+ * gcc.target/powerpc/block-cmp-8.c: New.
+
+2024-01-25 liuhongt <hongtao.liu@intel.com>
+
+ * c-c++-common/hwasan/alloca-outside-caught.c: Adjust
+ testcase.
+ * c-c++-common/hwasan/hwasan-poison-optimisation.c: Ditto.
+ * c-c++-common/hwasan/vararray-outside-caught.c: Ditto.
+
+2024-01-25 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ PR c++/113405
+ * g++.dg/modules/concept-9.h: New test.
+ * g++.dg/modules/concept-9_a.C: New test.
+ * g++.dg/modules/concept-9_b.C: New test.
+ * g++.dg/modules/concept-10_a.H: New test.
+ * g++.dg/modules/concept-10_b.C: New test.
+
+2024-01-25 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ PR c++/100707
+ * g++.dg/modules/indirect-1_b.C: Adjust to handle namespaces not
+ being attached to the module they were imported from.
+ * g++.dg/modules/indirect-1_c.C: Likewise.
+ * g++.dg/modules/indirect-2_b.C: Likewise.
+ * g++.dg/modules/indirect-2_c.C: Likewise.
+ * g++.dg/modules/indirect-3_b.C: Likewise.
+ * g++.dg/modules/indirect-3_c.C: Likewise.
+ * g++.dg/modules/indirect-4_b.C: Likewise.
+ * g++.dg/modules/indirect-4_c.C: Likewise.
+ * g++.dg/modules/namespace-5_a.C: New test.
+ * g++.dg/modules/namespace-5_b.C: New test.
+ * g++.dg/modules/namespace-5_c.C: New test.
+
+2024-01-25 Haochen Jiang <haochen.jiang@intel.com>
+
+ * gcc.target/i386/adx-check.h: Include stdio.h when DEBUG
+ is defined.
+ * gcc.target/i386/avx512fp16-vscalefph-1b.c: Do not define
+ DEBUG.
+ * gcc.target/i386/avx512fp16vl-vaddph-1b.c: Ditto.
+ * gcc.target/i386/avx512fp16vl-vcmpph-1b.c: Ditto.
+ * gcc.target/i386/avx512fp16vl-vdivph-1b.c: Ditto.
+ * gcc.target/i386/avx512fp16vl-vfpclassph-1b.c: Ditto.
+ * gcc.target/i386/avx512fp16vl-vgetexpph-1b.c: Ditto.
+ * gcc.target/i386/avx512fp16vl-vgetmantph-1b.c: Ditto.
+ * gcc.target/i386/avx512fp16vl-vmaxph-1b.c: Ditto.
+ * gcc.target/i386/avx512fp16vl-vminph-1b.c: Ditto.
+ * gcc.target/i386/avx512fp16vl-vmulph-1b.c: Ditto.
+ * gcc.target/i386/avx512fp16vl-vrcpph-1b.c: Ditto.
+ * gcc.target/i386/avx512fp16vl-vreduceph-1b.c: Ditto.
+ * gcc.target/i386/avx512fp16vl-vrndscaleph-1b.c: Ditto.
+ * gcc.target/i386/avx512fp16vl-vrsqrtph-1b.c: Ditto.
+ * gcc.target/i386/avx512fp16vl-vscalefph-1b.c: Ditto.
+ * gcc.target/i386/avx512fp16vl-vsqrtph-1b.c: Ditto.
+ * gcc.target/i386/avx512fp16vl-vsubph-1b.c: Ditto.
+ * gcc.target/i386/readeflags-1.c: Include stdio.h when DEBUG
+ is defined.
+ * gcc.target/i386/rtm-check.h: Ditto.
+ * gcc.target/i386/sha-check.h: Ditto.
+ * gcc.target/i386/writeeflags-1.c: Ditto.
+
+2024-01-25 Andrew Pinski <quic_apinski@quicinc.com>
+
+ * lib/target-supports.exp (check_effective_target_vect_long_mult): Fix
+ small typo for aarch64*-*-*.
+
+2024-01-24 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/113529
+ * g++.dg/cpp2a/spaceship-sfinae3.C: New test.
+
+2024-01-24 Jason Merrill <jason@redhat.com>
+
+ PR c++/113347
+ * g++.dg/eh/return3.C: New test.
+
+2024-01-24 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/113377
+ * gfortran.dg/optional_absent_10.f90: New test.
+
+2024-01-24 Andrew Pinski <quic_apinski@quicinc.com>
+
+ PR testsuite/109705
+ * lib/target-supports.exp (check_effective_target_vect_long_mult):
+ Fix aarch64*-*-* checks.
+
+2024-01-24 Martin Jambor <mjambor@suse.cz>
+
+ PR ipa/108007
+ PR ipa/112616
+ * gcc.dg/ipa/pr108007.c: New test.
+ * gcc.dg/ipa/pr112616.c: Likewise.
+
+2024-01-24 Andrew Pinski <quic_apinski@quicinc.com>
+
+ PR target/113486
+ * gcc.target/aarch64/builtin_apply-1.c: New test.
+
+2024-01-24 Monk Chiang <monk.chiang@sifive.com>
+
+ * gcc.target/riscv/sfb.c: New test.
+ * gcc.target/riscv/pr113095.c: New test.
+
+2024-01-24 Tamar Christina <tamar.christina@arm.com>
+
+ PR target/109636
+ * gcc.target/aarch64/sve/pr109636_1.c: New test.
+ * gcc.target/aarch64/sve/pr109636_2.c: New test.
+ * gcc.target/aarch64/sve2/pr109636_1.c: New test.
+
+2024-01-24 Tamar Christina <tamar.christina@arm.com>
+
+ PR tree-optimization/113552
+ * gcc.target/aarch64/pr113552.c: New test.
+ * gcc.target/aarch64/simd_pcs_attribute-3.c: Remove bogus check.
+
+2024-01-24 Martin Jambor <mjambor@suse.cz>
+
+ PR ipa/113490
+ * gcc.dg/ipa/pr113490.c: New test.
+
+2024-01-24 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/112977
+ * gcc.dg/plugin/plugin.exp: Add taint-pr112977.c.
+ * gcc.dg/plugin/taint-pr112977.c: New test.
+
+2024-01-24 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/112927
+ * gcc.dg/plugin/analyzer_kernel_plugin.c
+ (class known_function___check_object_size): New.
+ (kernel_analyzer_init_cb): Register it.
+ * gcc.dg/plugin/plugin.exp: Add taint-pr112927.c.
+ * gcc.dg/plugin/taint-pr112927.c: New test.
+
+2024-01-24 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ PR target/113556
+ * gcc.dg/vect/vect-simd-clone-16c.c: Don't wildcard x86_64 in
+ target specs. Allow any i?86 target instead of i686 only.
+ * gcc.dg/vect/vect-simd-clone-16d.c: Likewise.
+ * gcc.dg/vect/vect-simd-clone-17c.c: Likewise.
+ * gcc.dg/vect/vect-simd-clone-17d.c: Likewise.
+ * gcc.dg/vect/vect-simd-clone-18c.c: Likewise.
+ * gcc.dg/vect/vect-simd-clone-18d.c: Likewise.
+
+2024-01-24 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * gcc.target/i386/pr80833-1.c: Add -mno-stackrealign to dg-options.
+
+2024-01-24 Tamar Christina <tamar.christina@arm.com>
+
+ PR tree-optimization/113364
+ * gcc.dg/vect/vect-early-break_107-pr113364.c: New test.
+
+2024-01-24 Patrick O'Neill <patrick@rivosinc.com>
+
+ PR target/113429
+ * gcc.target/riscv/rvv/vsetvl/pr113429.c: New test.
+
+2024-01-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
+
+ PR target/113495
+ * gcc.target/riscv/rvv/vsetvl/avl_single-107.c: Adapt test.
+
+2024-01-23 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ * g++.dg/modules/pr113292_c.C: Require TLS.
+
+2024-01-23 Marek Polacek <polacek@redhat.com>
+
+ PR c++/113256
+ PR c++/111607
+ PR c++/109640
+ * g++.dg/warn/Wdangling-reference14.C: New test.
+ * g++.dg/warn/Wdangling-reference15.C: New test.
+ * g++.dg/warn/Wdangling-reference16.C: New test.
+
+2024-01-23 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/113518
+ * gcc.dg/bitint-77.c: New test.
+
+2024-01-23 Andrew Pinski <quic_apinski@quicinc.com>
+ Richard Sandiford <richard.sandiford@arm.com>
+
+ PR target/100942
+ * gcc.target/aarch64/ccmp_3.c: New test.
+ * gcc.target/aarch64/ccmp_4.c: New test.
+ * gcc.target/aarch64/ccmp_5.c: New test.
+
+2024-01-23 Alex Coplan <alex.coplan@arm.com>
+
+ PR target/113089
+ * gcc.c-torture/compile/pr113089.c: New test.
+
+2024-01-23 Alex Coplan <alex.coplan@arm.com>
+
+ PR target/113356
+ * gcc.target/aarch64/pr113356.C: New test.
+
+2024-01-23 Xi Ruoyao <xry111@xry111.site>
+
+ * g++.target/loongarch/got-load.C (dg-options): Add
+ -fno-stack-protector.
+
+2024-01-23 H.J. Lu <(no_default)>
+
+ PR rtl-optimization/113255
+ * gcc.dg/torture/pr113255.c (dg-additional-options): Add only
+ if not ia32.
+
+2024-01-23 Alex Coplan <alex.coplan@arm.com>
+
+ PR target/113114
+ * gcc.c-torture/compile/pr113114.c: New test.
+ * gcc.target/aarch64/pr113114.c: New test.
+
+2024-01-23 Richard Biener <rguenther@suse.de>
+
+ PR debug/107058
+ * c-c++-common/pr107058.c: New testcase.
+
+2024-01-23 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ PR c++/112820
+ PR c++/102607
+ * g++.dg/modules/debug-2_a.C: New test.
+ * g++.dg/modules/debug-2_b.C: New test.
+ * g++.dg/modules/debug-2_c.C: New test.
+ * g++.dg/modules/debug-3_a.C: New test.
+ * g++.dg/modules/debug-3_b.C: New test.
+
+2024-01-23 Xi Ruoyao <xry111@xry111.site>
+
+ * gcc.target/loongarch/explicit-relocs-auto-tls-ld-gd.c: Check
+ for la.tls.ld and la.tls.gd.
+
+2024-01-23 Richard Biener <rguenther@suse.de>
+
+ PR rtl-optimization/113255
+ * gcc.dg/torture/pr113255.c: New testcase.
+
+2024-01-23 Richard Biener <rguenther@suse.de>
+
+ PR debug/112718
+ * gcc.dg/debug/pr112718.c: New testcase.
+
+2024-01-22 Marek Polacek <polacek@redhat.com>
+
+ PR c++/109642
+ * g++.dg/warn/Wdangling-reference17.C: Additional testing.
+
+2024-01-22 John David Anglin <danglin@gcc.gnu.org>
+
+ PR debug/113382
+ * gcc.dg/debug/btf/btf-bitfields-3.c: Add -gno-strict-dwarf
+ option to dg-options.
+ * gcc.dg/debug/btf/btf-enum-1.c: Likewise.
+ * gcc.dg/debug/btf/btf-enum-small.c: Likewise.
+ * gcc.dg/debug/btf/btf-enum64-1.c: Likewise.
+
+2024-01-22 Juzhe-Zhong <juzhe.zhong@rivai.ai>
+
+ * gcc.target/riscv/rvv/vsetvl/attribute-2.c: New test.
+ * gcc.target/riscv/rvv/vsetvl/attribute-3.c: New test.
+
+2024-01-22 Juzhe-Zhong <juzhe.zhong@rivai.ai>
+
+ PR target/109092
+ * gcc.target/riscv/rvv/base/pr109092.c: New test.
+
+2024-01-22 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/113373
+ * gcc.dg/vect/vect-early-break_104-pr113373.c: New testcase.
+
+2024-01-22 Juzhe-Zhong <juzhe.zhong@rivai.ai>
+
+ * gcc.target/riscv/rvv/vsetvl/attribute-1.c: New test.
+
+2024-01-22 xuli <xuli1@eswincomputing.com>
+
+ PR target/113420
+ * gcc.target/riscv/rvv/base/pr113420-1.c: New test.
+ * gcc.target/riscv/rvv/base/pr113420-2.c: New test.
+
+2024-01-22 Jeff Law <jlaw@ventanamicro.com>
+
+ * gcc.target/sh/pr59533-1.c: Adjust expected output.
+
+2024-01-21 Mary Bennett <mary.bennett@embecosm.com>
+
+ * gcc.target/riscv/cv-alu-fail-compile.c: Change warning to error.
+
+2024-01-21 Co-authored-by: Thorsten Otto <admin@tho-otto.de>
+
+ PR target/82420
+ * gcc.target/m68k/pr82420.c: New test.
+
+2024-01-21 Roger Sayle <roger@nextmovesoftware.com>
+ Richard Biener <rguenther@suse.de>
+
+ PR rtl-optimization/111267
+ * gcc.target/i386/pr111267.c: New test case.
+
+2024-01-21 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/113377
+ * gfortran.dg/optional_absent_9.f90: New test.
+
+2024-01-21 Martin Uecker <uecker@tugraz.at>
+
+ PR c/113492
+ * gcc.dg/pr113492.c: New test.
+
+2024-01-20 John David Anglin <danglin@gcc.gnu.org>
+
+ * gcc.dg/ipa/iinline-4.c: Remove dg-final xfail for
+ 32-bit hppa*-*-*.
+ * gcc.dg/ipa/inline-5.c: Likewise.
+ * gcc.dg/ipa/ipcp-cstagg-7.c: Likewise.
+ * gcc.dg/tree-ssa/vector-4.c: Likewise.
+
+2024-01-20 John David Anglin <danglin@gcc.gnu.org>
+
+ * gcc.dg/tree-ssa/slsr-13.c: xfail scan-tree-dump-times
+ checks on hppa*64*-*-*.
+
+2024-01-20 John David Anglin <danglin@gcc.gnu.org>
+
+ * gcc.dg/torture/pr110422.c: Require target lra.
+
+2024-01-20 Marek Polacek <polacek@redhat.com>
+
+ PR c++/111410
+ * g++.dg/warn/Wdangling-reference17.C: New test.
+
+2024-01-20 Andrew Pinski <quic_apinski@quicinc.com>
+
+ PR ipa/110705
+ * gcc.c-torture/compile/pr110705-1.c: New test.
+
+2024-01-20 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/113462
+ * gcc.dg/bitint-76.c: New test.
+
+2024-01-20 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/113491
+ * gcc.dg/torture/bitint-51.c: New test.
+
+2024-01-19 Mikael Pettersson <mikpelinux@gmail.com>
+
+ PR target/110934
+ * gcc.target/m68k/pr110934.c: New test.
+
+2024-01-19 Mikael Pettersson <mikpelinux@gmail.com>
+
+ PR target/108640
+ * gcc.target/m68k/pr108640.c: New test.
+
+2024-01-19 Antoni Boucher <bouanto@zoho.com>
+
+ * jit.dg/all-non-failing-tests.h: New test.
+ * jit.dg/test-popcount.c: New test.
+
+2024-01-19 Antoni Boucher <bouanto@zoho.com>
+
+ * jit.dg/test-reflection.c: Add check to make sure
+ gcc_jit_type_is_integral returns 0 on a vector type.
+
+2024-01-19 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/113471
+ * gfortran.dg/bounds_check_24.f90: New test.
+
+2024-01-19 Jason Merrill <jason@redhat.com>
+
+ PR c++/113498
+ * g++.dg/cpp2a/concepts-using4.C: New test.
+
+2024-01-19 Jason Merrill <jason@redhat.com>
+
+ PR c++/112632
+ PR c++/112594
+ PR c++/111357
+ PR c++/104594
+ PR c++/67898
+ * g++.dg/cpp0x/alias-decl-nontype1.C: New test.
+ * g++.dg/cpp2a/concepts-narrowing1.C: New test.
+ * g++.dg/cpp2a/nontype-class63.C: New test.
+ * g++.dg/cpp2a/nontype-class63a.C: New test.
+
+2024-01-19 John David Anglin <danglin@gcc.gnu.org>
+
+ * gcc.dg/torture/pr47917.c: Limit dg-xfail-run-if for
+ hpux11.[012]* to -O0.
+
+2024-01-19 John David Anglin <danglin@gcc.gnu.org>
+
+ * gcc.dg/pthread-init-2.c: Change dg-options for hpux
+ to define _HPUX_SOURCE.
+
+2024-01-19 John David Anglin <danglin@gcc.gnu.org>
+
+ * gcc.dg/pr84877.c: Only xfail on 32-bit hppa*-*-*.
+
+2024-01-19 John David Anglin <danglin@gcc.gnu.org>
+
+ PR analyzer/112705
+ * gcc.dg/analyzer/pr94688.c: Skip on hppa*64*-*-*.
+
+2024-01-19 Kito Cheng <kito.cheng@sifive.com>
+
+ * gcc.target/riscv/arch-27.c: Update scan message.
+ * gcc.target/riscv/arch-28.c: Ditto.
+ * gcc.target/riscv/attribute-10.c: Ditto.
+ * gcc.target/riscv/rvv/base/big_endian-2.c: Ditto.
+ * gcc.target/riscv/rvv/base/zvl-unimplemented-1.c: Ditto.
+ * gcc.target/riscv/rvv/base/zvl-unimplemented-2.c: Ditto.
+
+2024-01-19 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/113464
+ * gcc.dg/bitint-75.c: New test.
+
+2024-01-19 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/113463
+ * gcc.dg/bitint-74.c: New test.
+
+2024-01-19 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/113459
+ * gcc.dg/bitint-73.c: New test.
+
+2024-01-19 Kito Cheng <kito.cheng@sifive.com>
+
+ * gcc.target/riscv/arch-23.c: Update test.
+ * gcc.target/riscv/arch-27.c: Ditto.
+ * gcc.target/riscv/arch-28.c: Ditto.
+ * gcc.target/riscv/attribute-10.c: Ditto.
+
+2024-01-19 Kito Cheng <kito.cheng@sifive.com>
+
+ * gcc.target/riscv/arch-33.c: New.
+ * gcc.target/riscv/arch-34.c: New.
+
+2024-01-19 liuhongt <hongtao.liu@intel.com>
+
+ * gcc.target/i386/part-vect-copysignhf.c: Remove
+ -ftree-vectorize from dg-options.
+
+2024-01-19 liuhongt <hongtao.liu@intel.com>
+
+ PR testsuite/113437
+ * gcc.dg/tree-ssa/pr95906.c: Scan either MAX_EXPR or
+ VEC_COND_EXPR.
+
+2024-01-18 John David Anglin <danglin@gcc.gnu.org>
+
+ * gcc.dg/pic-2.c: Skip on hppa*64*-*-*.
+
+2024-01-18 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/111361
+ * c-c++-common/analyzer/strlen-pr111361.c: New test.
+ * c-c++-common/analyzer/strncpy-1.c (test_zero_fill): Remove fixed
+ xfail.
+ * c-c++-common/analyzer/strncpy-pr111361.c: New test.
+
+2024-01-18 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/112811
+ * c-c++-common/analyzer/strlen-pr112811.c: New test.
+
+2024-01-18 H.J. Lu <(no_default)>
+
+ * lib/hwasan-dg.exp (hwasan_init): Always set target_hwasan_flags.
+
+2024-01-18 Jun Sha (Joshua) <cooper.joshua@linux.alibaba.com>
+ Jin Ma <jinma@linux.alibaba.com>
+ Xianmiao Qu <cooper.qu@linux.alibaba.com>
+ Christoph Müllner <christoph.muellner@vrull.eu>
+
+ * gcc.target/riscv/rvv/xtheadvector/vlb-vsb.c: New test.
+ * gcc.target/riscv/rvv/xtheadvector/vlbu-vsb.c: New test.
+ * gcc.target/riscv/rvv/xtheadvector/vlh-vsh.c: New test.
+ * gcc.target/riscv/rvv/xtheadvector/vlhu-vsh.c: New test.
+ * gcc.target/riscv/rvv/xtheadvector/vlw-vsw.c: New test.
+ * gcc.target/riscv/rvv/xtheadvector/vlwu-vsw.c: New test.
+
+2024-01-18 Jun Sha (Joshua) <cooper.joshua@linux.alibaba.com>
+ Jin Ma <jinma@linux.alibaba.com>
+ Xianmiao Qu <cooper.qu@linux.alibaba.com>
+ Christoph Müllner <christoph.muellner@vrull.eu>
+
+ * gcc.target/riscv/rvv/base/pragma-1.c: Add XTheadVector.
+ * gcc.target/riscv/rvv/base/abi-1.c: Exclude XTheadVector.
+ * lib/target-supports.exp: Add target for XTheadVector.
+
+2024-01-18 Jun Sha (Joshua) <cooper.joshua@linux.alibaba.com>
+ Jin Ma <jinma@linux.alibaba.com>
+ Xianmiao Qu <cooper.qu@linux.alibaba.com>
+ Christoph Müllner <christoph.muellner@vrull.eu>
+
+ * gcc.target/riscv/rvv/xtheadvector/prefix.c: New test.
+
+2024-01-18 Jun Sha (Joshua) <cooper.joshua@linux.alibaba.com>
+ Jin Ma <jinma@linux.alibaba.com>
+ Xianmiao Qu <cooper.qu@linux.alibaba.com>
+ Christoph Müllner <christoph.muellner@vrull.eu>
+
+ * gcc.target/riscv/predef-__riscv_th_v_intrinsic.c: New test.
+ * gcc.target/riscv/rvv/xtheadvector.c: New test.
+
+2024-01-18 Marek Polacek <polacek@redhat.com>
+
+ PR c++/113389
+ * g++.dg/cpp23/explicit-obj-diagnostics10.C: New test.
+
+2024-01-18 Iain Sandoe <iain@sandoe.co.uk>
+
+ * jit.dg/test-ggc-bugfix.c: Add libSystem for Darwin.
+
+2024-01-18 Iain Sandoe <iain@sandoe.co.uk>
+
+ * jit.dg/test-always_inline-attribute.c: Handle Darwin in
+ jit-verify-assembler-output.
+ * jit.dg/test-noinline-attribute.c: Likewise.
+ * jit.dg/test-setting-alignment.c: Likewise.
+ * jit.dg/test-used-attribute.c: Likewise.
+ * jit.dg/test-variable-attribute.c: Likewise.
+ * jit.dg/test-weak-attribute.c: Likewise.
+
+2024-01-18 Iain Sandoe <iain@sandoe.co.uk>
+
+ * jit.dg/jit.exp: Accept target clauses in jit-verify-assembler
+ handling.
+
+2024-01-18 Iain Sandoe <iain@sandoe.co.uk>
+
+ * jit.dg/test-link-section-assembler.c: Accept any whitespace
+ between the .section directive and its arguments.
+
+2024-01-18 Iain Sandoe <iain@sandoe.co.uk>
+
+ * jit.dg/test-alias-attribute.c: Require target alias
+ support.
+
+2024-01-18 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR target/105522
+ * gcc.dg/pr105522.c: New file.
+
+2024-01-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR bootstrap/113445
+ * gcc.dg/pr113445.c: New test.
+
+2024-01-18 Martin Jambor <mjambor@suse.cz>
+
+ PR tree-optimization/110422
+ * gcc.dg/torture/pr110422.c: New test.
+
+2024-01-18 H.J. Lu <hjl.tools@gmail.com>
+
+ * lib/hwasan-dg.exp (check_effective_target_hwaddress_exec):
+ Return 1 if Intel LAM_U57 is enabled.
+ (hwasan_init): Add -mlam=u57 on x86-64.
+
+2024-01-18 Juzhe-Zhong <juzhe.zhong@rivai.ai>
+
+ * gcc.target/riscv/rvv/autovec/cmp/cmp_vi-1.c: New test.
+ * gcc.target/riscv/rvv/autovec/cmp/cmp_vi-2.c: New test.
+ * gcc.target/riscv/rvv/autovec/cmp/cmp_vi-3.c: New test.
+ * gcc.target/riscv/rvv/autovec/cmp/cmp_vi-4.c: New test.
+ * gcc.target/riscv/rvv/autovec/cmp/cmp_vi-5.c: New test.
+ * gcc.target/riscv/rvv/autovec/cmp/cmp_vi-6.c: New test.
+ * gcc.target/riscv/rvv/autovec/cmp/cmp_vi-7.c: New test.
+ * gcc.target/riscv/rvv/autovec/cmp/cmp_vi-8.c: New test.
+ * gcc.target/riscv/rvv/autovec/cmp/cmp_vi-9.c: New test.
+ * gcc.target/riscv/rvv/autovec/cmp/macro.h: New test.
+
+2024-01-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/113122
+ * gcc.target/i386/pr113122-1.c: New test.
+ * gcc.target/i386/pr113122-2.c: New test.
+ * gcc.target/i386/pr113122-3.c: New test.
+ * gcc.target/i386/pr113122-4.c: New test.
+
+2024-01-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/112774
+ PR testsuite/113446
+ * gcc.dg/tree-ssa/scev-16.c: Move test ...
+ * gcc.dg/vect/pr112774.c: ... here. Add PR comment line, use
+ dg-additional-options instead of dg-options and drop
+ -fdump-tree-vect-details.
+
+2024-01-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR testsuite/113452
+ * gcc.target/i386/sse4_1-stv-1.c: Add -fno-tree-vectorize to
+ dg-options.
+
+2024-01-18 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/113431
+ * gcc.dg/vect/pr113431.c: New testcase.
+
+2024-01-18 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/113374
+ * gcc.dg/vect/vect-early-break_106-pr113374.c: New testcase.
+
+2024-01-18 Juzhe-Zhong <juzhe.zhong@rivai.ai>
+
+ * gcc.dg/vect/bb-slp-subgroups-3.c: Add !vect128.
+
+2024-01-18 chenxiaolong <chenxiaolong@loongson.cn>
+
+ * gcc.dg/tree-ssa/gen-vect-2.c: Added detection of compilation
+ behavior and "-mlsx" option on LoongArch.
+ * gcc.dg/tree-ssa/gen-vect-25.c: Dito.
+
+2024-01-18 Lulu Cheng <chenglulu@loongson.cn>
+
+ * g++.target/loongarch/got-load.C: New test.
+
+2024-01-18 Juzhe-Zhong <juzhe.zhong@rivai.ai>
+
+ * gcc.dg/vect/bb-slp-43.c: Add vect128.
+
+2024-01-18 Kewen Lin <linkw@linux.ibm.com>
+
+ PR testsuite/111850
+ * gcc.target/powerpc/fold-vec-extract-char.p7.c: Update the
+ checking count of addi to 6.
+
+2024-01-18 Juzhe-Zhong <juzhe.zhong@rivai.ai>
+
+ PR target/113429
+ * gcc.target/riscv/rvv/vsetvl/vlmax_conflict-4.c: Adapt test.
+ * gcc.target/riscv/rvv/vsetvl/vlmax_conflict-5.c: Ditto.
+
2024-01-17 Nathaniel Shead <nathanieloshead@gmail.com>
PR c++/112588
diff --git a/gcc/testsuite/c-c++-common/analyzer/compound-assignment-5.c b/gcc/testsuite/c-c++-common/analyzer/compound-assignment-5.c
index 3ce2b72..08f1060 100644
--- a/gcc/testsuite/c-c++-common/analyzer/compound-assignment-5.c
+++ b/gcc/testsuite/c-c++-common/analyzer/compound-assignment-5.c
@@ -48,9 +48,8 @@ void test_3 (void)
glob_arr3[7] = arr[3]; // or should the uninit warning be here?
- __analyzer_eval (glob_arr3[7].x); /* { dg-warning "uninitialized" "uninit" { xfail *-*-* } } */
- /* { dg-bogus "UNKNOWN" "unknown" { xfail *-*-* } .-1 } */
__analyzer_eval (glob_arr3[7].y == 6); /* { dg-warning "TRUE" } */
+ __analyzer_eval (glob_arr3[7].x); /* { dg-warning "uninitialized" "uninit" } */
}
/* Symbolic bindings: copying from one array to another. */
diff --git a/gcc/testsuite/c-c++-common/analyzer/compound-assignment-pr112969.c b/gcc/testsuite/c-c++-common/analyzer/compound-assignment-pr112969.c
new file mode 100644
index 0000000..4bc037c
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/analyzer/compound-assignment-pr112969.c
@@ -0,0 +1,35 @@
+/* Reduced from -Wanalyzer-exposure-through-uninit-copy false positives
+ seen in Linux kernel in drivers/net/ethernet/intel/ice/ice_ptp.c */
+
+#include "analyzer-decls.h"
+
+/* { dg-do compile } */
+
+struct hwtstamp_config
+{
+ int flags;
+ int tx_type;
+ int rx_filter;
+};
+
+struct ice_ptp
+{
+ long placeholder;
+ struct hwtstamp_config tstamp_config;
+};
+
+struct ice_pf
+{
+ struct ice_ptp ptp;
+};
+
+void
+ice_ptp_set_ts_config(struct ice_pf* pf)
+{
+ struct hwtstamp_config config;
+ pf->ptp.tstamp_config.tx_type = 1;
+ pf->ptp.tstamp_config.rx_filter = 2;
+ config = pf->ptp.tstamp_config;
+ __analyzer_eval (config.flags == pf->ptp.tstamp_config.flags); /* { dg-warning "TRUE" } */
+ /* { dg-bogus "use of uninitialized value 'config.flags'" "PR analyzer/112969" { target *-*-* } .-1 } */
+}
diff --git a/gcc/testsuite/c-c++-common/analyzer/strlen-pr111361.c b/gcc/testsuite/c-c++-common/analyzer/strlen-pr111361.c
new file mode 100644
index 0000000..b3b875c
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/analyzer/strlen-pr111361.c
@@ -0,0 +1,18 @@
+#include "analyzer-decls.h"
+
+typedef int __attribute__((__vector_size__ (32))) V;
+
+typedef __SIZE_TYPE__ size_t;
+
+static size_t __attribute__((noinline))
+call_strlen (const char *p)
+{
+ return __builtin_strlen (p);
+}
+
+void
+foo (void *out)
+{
+ V v = (V) { };
+ __analyzer_eval (call_strlen ((const char *)&v) == 0); /* { dg-warning "TRUE" } */
+}
diff --git a/gcc/testsuite/c-c++-common/analyzer/strlen-pr112811.c b/gcc/testsuite/c-c++-common/analyzer/strlen-pr112811.c
new file mode 100644
index 0000000..6bf5d7a
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/analyzer/strlen-pr112811.c
@@ -0,0 +1,18 @@
+struct foo_laptop_debug {
+ struct dentry *root;
+ unsigned long size;
+};
+struct foo_laptop {
+ void *placeholder;
+ struct foo_laptop_debug debug;
+ char sdiag[64];
+};
+
+extern struct dentry *debugfs_create_dir(void);
+
+void foo_debugfs_init(struct foo_laptop *foo) {
+ struct dentry *root;
+ root = debugfs_create_dir();
+ foo->debug.root = root;
+ foo->debug.size = __builtin_strlen(foo->sdiag);
+}
diff --git a/gcc/testsuite/c-c++-common/analyzer/strncpy-1.c b/gcc/testsuite/c-c++-common/analyzer/strncpy-1.c
index 3ca1d81..8edaf26 100644
--- a/gcc/testsuite/c-c++-common/analyzer/strncpy-1.c
+++ b/gcc/testsuite/c-c++-common/analyzer/strncpy-1.c
@@ -44,8 +44,7 @@ test_zero_fill (char *dst)
__analyzer_eval (dst[4] == '\0'); /* { dg-warning "TRUE" "correct" { xfail *-*-* } } */
/* { dg-bogus "UNKNOWN" "status quo" { xfail *-*-* } .-1 } */
__analyzer_eval (__analyzer_get_strlen (dst) == 0); /* { dg-warning "TRUE" } */
- __analyzer_eval (__analyzer_get_strlen (dst + 1) == 0); /* { dg-warning "TRUE" "correct" { xfail *-*-* } } */
- /* { dg-bogus "UNKNOWN" "status quo" { xfail *-*-* } .-1 } */
+ __analyzer_eval (__analyzer_get_strlen (dst + 1) == 0); /* { dg-warning "TRUE" } */
}
char *test_unterminated_concrete_a (char *dst)
diff --git a/gcc/testsuite/c-c++-common/analyzer/strncpy-pr111361.c b/gcc/testsuite/c-c++-common/analyzer/strncpy-pr111361.c
new file mode 100644
index 0000000..da3eaeb
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/analyzer/strncpy-pr111361.c
@@ -0,0 +1,8 @@
+typedef int __attribute__((__vector_size__ (32))) V;
+
+void
+foo (char *out)
+{
+ V v = (V) { };
+ __builtin_strncpy (out, (char *)&v, 5);
+}
diff --git a/gcc/testsuite/c-c++-common/dfp/pr36800.c b/gcc/testsuite/c-c++-common/dfp/pr36800.c
index 76ff28c..3d3465a 100644
--- a/gcc/testsuite/c-c++-common/dfp/pr36800.c
+++ b/gcc/testsuite/c-c++-common/dfp/pr36800.c
@@ -1,5 +1,3 @@
-/* { dg-do run } */
-
#include <stdarg.h>
#include "dfp-dbg.h"
diff --git a/gcc/testsuite/c-c++-common/dfp/pr39034.c b/gcc/testsuite/c-c++-common/dfp/pr39034.c
index 2a7eedb..d05ccc2 100644
--- a/gcc/testsuite/c-c++-common/dfp/pr39034.c
+++ b/gcc/testsuite/c-c++-common/dfp/pr39034.c
@@ -1,4 +1,3 @@
-/* { dg-do run } */
/* { dg-options "-O" } */
/* DFP TR 24732 == WG14 / N1176, N1312 */
diff --git a/gcc/testsuite/c-c++-common/dfp/pr39035.c b/gcc/testsuite/c-c++-common/dfp/pr39035.c
index 2c9e8b3..c556985 100644
--- a/gcc/testsuite/c-c++-common/dfp/pr39035.c
+++ b/gcc/testsuite/c-c++-common/dfp/pr39035.c
@@ -1,4 +1,3 @@
-/* { dg-do run } */
/* { dg-options "-O" } */
/* DFP TR 24732 == WG14 / N1176, N1312 */
diff --git a/gcc/testsuite/c-c++-common/hwasan/alloca-outside-caught.c b/gcc/testsuite/c-c++-common/hwasan/alloca-outside-caught.c
index 6f3825b..f31484a 100644
--- a/gcc/testsuite/c-c++-common/hwasan/alloca-outside-caught.c
+++ b/gcc/testsuite/c-c++-common/hwasan/alloca-outside-caught.c
@@ -20,6 +20,6 @@ main ()
}
/* { dg-output "HWAddressSanitizer: tag-mismatch on address 0x\[0-9a-f\]*.*" } */
-/* { dg-output "READ of size 4 at 0x\[0-9a-f\]* tags: \[\[:xdigit:\]\]\[\[:xdigit:\]\]/00.* \\(ptr/mem\\) in thread T0.*" } */
+/* { dg-output "READ of size 4 at 0x\[0-9a-f\]* tags: \[\[:xdigit:\]\]\[\[:xdigit:\]\]/\[\[:xdigit:\]\]\[\[:xdigit:\]\].* \\(ptr/mem\\) in thread T0.*" } */
/* { dg-output "Address 0x\[0-9a-f\]* is located in stack of thread T0.*" } */
/* { dg-output "SUMMARY: HWAddressSanitizer: tag-mismatch \[^\n\]*.*" } */
diff --git a/gcc/testsuite/c-c++-common/hwasan/hwasan-poison-optimisation.c b/gcc/testsuite/c-c++-common/hwasan/hwasan-poison-optimisation.c
index 2d6bab4..48cf887 100644
--- a/gcc/testsuite/c-c++-common/hwasan/hwasan-poison-optimisation.c
+++ b/gcc/testsuite/c-c++-common/hwasan/hwasan-poison-optimisation.c
@@ -22,7 +22,7 @@ main ()
}
/* { dg-final { scan-tree-dump-times "ASAN_POISON" 1 "asan1" } } */
-/* { dg-final { scan-assembler-times "bl\\s*__hwasan_tag_mismatch4" 1 } } */
+/* { dg-final { scan-assembler-times "(?:bl|call)\\s*__hwasan_tag_mismatch4" 1 } } */
/* { dg-output "HWAddressSanitizer: tag-mismatch on address 0x\[0-9a-f\]*.*" } */
/* { dg-output "READ of size 4 at 0x\[0-9a-f\]* tags: \[\[:xdigit:\]\]\[\[:xdigit:\]\]/00 \\(ptr/mem\\) in thread T0.*" } */
/* { dg-output "Address 0x\[0-9a-f\]* is located in stack of thread T0.*" } */
diff --git a/gcc/testsuite/c-c++-common/hwasan/vararray-outside-caught.c b/gcc/testsuite/c-c++-common/hwasan/vararray-outside-caught.c
index 35a344d..743a894e 100644
--- a/gcc/testsuite/c-c++-common/hwasan/vararray-outside-caught.c
+++ b/gcc/testsuite/c-c++-common/hwasan/vararray-outside-caught.c
@@ -17,6 +17,6 @@ main ()
}
/* { dg-output "HWAddressSanitizer: tag-mismatch on address 0x\[0-9a-f\]*.*" } */
-/* { dg-output "READ of size 4 at 0x\[0-9a-f\]* tags: \[\[:xdigit:\]\]\[\[:xdigit:\]\]/00 \\(ptr/mem\\) in thread T0.*" } */
+/* { dg-output "READ of size 4 at 0x\[0-9a-f\]* tags: \[\[:xdigit:\]\]\[\[:xdigit:\]\]/\[\[:xdigit:\]\]\[\[:xdigit:\]\].*\\(ptr/mem\\) in thread T0.*" } */
/* { dg-output "Address 0x\[0-9a-f\]* is located in stack of thread T0.*" } */
/* { dg-output "SUMMARY: HWAddressSanitizer: tag-mismatch \[^\n\]*.*" } */
diff --git a/gcc/testsuite/c-c++-common/pr107058.c b/gcc/testsuite/c-c++-common/pr107058.c
new file mode 100644
index 0000000..5e625d6
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/pr107058.c
@@ -0,0 +1,7 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target lto } */
+/* { dg-options "-g -fdebug-types-section -flto -fno-checking" } */
+
+/* We should handle the C++ FE issue gracefully with -fno-checking. */
+
+#include "pr50459.c"
diff --git a/gcc/testsuite/c-c++-common/strub-unsupported-2.c b/gcc/testsuite/c-c++-common/strub-unsupported-2.c
index 321a7e1..3586f4f 100644
--- a/gcc/testsuite/c-c++-common/strub-unsupported-2.c
+++ b/gcc/testsuite/c-c++-common/strub-unsupported-2.c
@@ -1,5 +1,4 @@
/* { dg-do compile } */
-/* { dg-require-effective-target strub } */
/* Check that, when strub is not supported (so no dg-required-effective-target
strub above), we report when pointers to strub functions are called. This
diff --git a/gcc/testsuite/c-c++-common/strub-unsupported-3.c b/gcc/testsuite/c-c++-common/strub-unsupported-3.c
index 2de0fa1..d6fb4c5 100644
--- a/gcc/testsuite/c-c++-common/strub-unsupported-3.c
+++ b/gcc/testsuite/c-c++-common/strub-unsupported-3.c
@@ -1,5 +1,4 @@
/* { dg-do compile } */
-/* { dg-require-effective-target strub } */
/* Check that, when strub is not supported (so no dg-required-effective-target
strub above), we report when strub functions that are not defined are
diff --git a/gcc/testsuite/c-c++-common/strub-unsupported.c b/gcc/testsuite/c-c++-common/strub-unsupported.c
index 5fce49e..cb5c404 100644
--- a/gcc/testsuite/c-c++-common/strub-unsupported.c
+++ b/gcc/testsuite/c-c++-common/strub-unsupported.c
@@ -1,5 +1,4 @@
/* { dg-do compile } */
-/* { dg-require-effective-target strub } */
/* Check that, when strub is not supported (so no dg-required-effective-target
strub above), we report when strub functions are defined, and when they're
diff --git a/gcc/testsuite/g++.dg/Wattributes-3.C b/gcc/testsuite/g++.dg/Wattributes-3.C
index 208ec66..dd9c224 100644
--- a/gcc/testsuite/g++.dg/Wattributes-3.C
+++ b/gcc/testsuite/g++.dg/Wattributes-3.C
@@ -26,7 +26,7 @@ B::operator char () const { return 0; }
ATTR ((__noinline__))
B::operator int () const // { dg-warning "ignoring attribute .noinline. because it conflicts with attribute .always_inline." }
-// { dg-warning "function might not be inlinable" "" { target *-*-* } .-1 }
+// { dg-warning "function might not be inlinable unless also declared .inline." "" { target *-*-* } .-1 }
{
return 0;
@@ -45,7 +45,7 @@ C::operator char () { return 0; }
ATTR ((__noinline__))
C::operator short () // { dg-warning "ignoring attribute .noinline. because it conflicts with attribute .always_inline." }
-// { dg-warning "function might not be inlinable" "" { target *-*-* } .-1 }
+// { dg-warning "function might not be inlinable unless also declared .inline." "" { target *-*-* } .-1 }
{ return 0; }
inline ATTR ((__noinline__))
diff --git a/gcc/testsuite/g++.dg/compat/decimal/pass-1_main.C b/gcc/testsuite/g++.dg/compat/decimal/pass-1_main.C
index 963dc3b..cb48c49 100644
--- a/gcc/testsuite/g++.dg/compat/decimal/pass-1_main.C
+++ b/gcc/testsuite/g++.dg/compat/decimal/pass-1_main.C
@@ -1,4 +1,5 @@
/* { dg-require-effective-target dfp } */
+/* { dg-require-effective-target dfprt } */
/* Test passing decimal scalars by value. */
diff --git a/gcc/testsuite/g++.dg/compat/decimal/pass-2_main.C b/gcc/testsuite/g++.dg/compat/decimal/pass-2_main.C
index 533e4b2..5f2a721 100644
--- a/gcc/testsuite/g++.dg/compat/decimal/pass-2_main.C
+++ b/gcc/testsuite/g++.dg/compat/decimal/pass-2_main.C
@@ -1,4 +1,5 @@
/* { dg-require-effective-target dfp } */
+/* { dg-require-effective-target dfprt } */
/* Test passing decimal classes by value. */
diff --git a/gcc/testsuite/g++.dg/compat/decimal/pass-3_main.C b/gcc/testsuite/g++.dg/compat/decimal/pass-3_main.C
index de09992..f095173 100644
--- a/gcc/testsuite/g++.dg/compat/decimal/pass-3_main.C
+++ b/gcc/testsuite/g++.dg/compat/decimal/pass-3_main.C
@@ -1,4 +1,5 @@
/* { dg-require-effective-target dfp } */
+/* { dg-require-effective-target dfprt } */
/* Test passing decimal scalars and classes by value. */
diff --git a/gcc/testsuite/g++.dg/compat/decimal/pass-4_main.C b/gcc/testsuite/g++.dg/compat/decimal/pass-4_main.C
index d5a0a47d..379f38a 100644
--- a/gcc/testsuite/g++.dg/compat/decimal/pass-4_main.C
+++ b/gcc/testsuite/g++.dg/compat/decimal/pass-4_main.C
@@ -1,4 +1,5 @@
/* { dg-require-effective-target dfp } */
+/* { dg-require-effective-target dfprt } */
/* Test passing decimal classes and scalars by value. */
diff --git a/gcc/testsuite/g++.dg/compat/decimal/pass-5_main.C b/gcc/testsuite/g++.dg/compat/decimal/pass-5_main.C
index 9b25a49..436d80d 100644
--- a/gcc/testsuite/g++.dg/compat/decimal/pass-5_main.C
+++ b/gcc/testsuite/g++.dg/compat/decimal/pass-5_main.C
@@ -1,4 +1,5 @@
/* { dg-require-effective-target dfp } */
+/* { dg-require-effective-target dfprt } */
/* Test passing decimal scalars and typedef'd classes by value. */
diff --git a/gcc/testsuite/g++.dg/compat/decimal/pass-6_main.C b/gcc/testsuite/g++.dg/compat/decimal/pass-6_main.C
index 1b686a2..444643c 100644
--- a/gcc/testsuite/g++.dg/compat/decimal/pass-6_main.C
+++ b/gcc/testsuite/g++.dg/compat/decimal/pass-6_main.C
@@ -1,4 +1,5 @@
/* { dg-require-effective-target dfp } */
+/* { dg-require-effective-target dfprt } */
/* Test passing typedef'd decimal classes and scalars by value. */
diff --git a/gcc/testsuite/g++.dg/compat/decimal/return-1_main.C b/gcc/testsuite/g++.dg/compat/decimal/return-1_main.C
index c663bb0..fa8dbef 100644
--- a/gcc/testsuite/g++.dg/compat/decimal/return-1_main.C
+++ b/gcc/testsuite/g++.dg/compat/decimal/return-1_main.C
@@ -1,4 +1,5 @@
/* { dg-require-effective-target dfp } */
+/* { dg-require-effective-target dfprt } */
/* Test function return values for decimal float scalars. */
diff --git a/gcc/testsuite/g++.dg/compat/decimal/return-2_main.C b/gcc/testsuite/g++.dg/compat/decimal/return-2_main.C
index afa27f2..ab7fb5d 100644
--- a/gcc/testsuite/g++.dg/compat/decimal/return-2_main.C
+++ b/gcc/testsuite/g++.dg/compat/decimal/return-2_main.C
@@ -1,4 +1,5 @@
/* { dg-require-effective-target dfp } */
+/* { dg-require-effective-target dfprt } */
/* Test function return values for decimal classes. */
diff --git a/gcc/testsuite/g++.dg/compat/decimal/return-3_main.C b/gcc/testsuite/g++.dg/compat/decimal/return-3_main.C
index 468f3fc..8ee3d31 100644
--- a/gcc/testsuite/g++.dg/compat/decimal/return-3_main.C
+++ b/gcc/testsuite/g++.dg/compat/decimal/return-3_main.C
@@ -1,4 +1,5 @@
/* { dg-require-effective-target dfp } */
+/* { dg-require-effective-target dfprt } */
/* Test function return values for decimal float scalars and classes. */
diff --git a/gcc/testsuite/g++.dg/compat/decimal/return-4_main.C b/gcc/testsuite/g++.dg/compat/decimal/return-4_main.C
index 365d8be..a0fe5c7 100644
--- a/gcc/testsuite/g++.dg/compat/decimal/return-4_main.C
+++ b/gcc/testsuite/g++.dg/compat/decimal/return-4_main.C
@@ -1,4 +1,5 @@
/* { dg-require-effective-target dfp } */
+/* { dg-require-effective-target dfprt } */
/* Test function return values for decimal float classes and scalars. */
diff --git a/gcc/testsuite/g++.dg/compat/decimal/return-5_main.C b/gcc/testsuite/g++.dg/compat/decimal/return-5_main.C
index 2c33483..bea5d9d 100644
--- a/gcc/testsuite/g++.dg/compat/decimal/return-5_main.C
+++ b/gcc/testsuite/g++.dg/compat/decimal/return-5_main.C
@@ -1,4 +1,5 @@
/* { dg-require-effective-target dfp } */
+/* { dg-require-effective-target dfprt } */
/* Test function return values for decimal float scalars and typedef'd
classes. */
diff --git a/gcc/testsuite/g++.dg/compat/decimal/return-6_main.C b/gcc/testsuite/g++.dg/compat/decimal/return-6_main.C
index 94526bd..4460475 100644
--- a/gcc/testsuite/g++.dg/compat/decimal/return-6_main.C
+++ b/gcc/testsuite/g++.dg/compat/decimal/return-6_main.C
@@ -1,4 +1,5 @@
/* { dg-require-effective-target dfp } */
+/* { dg-require-effective-target dfprt } */
/* Test function return values for typedef'd decimal float classes
and scalars. */
diff --git a/gcc/testsuite/g++.dg/coroutines/co-await-initlist2.C b/gcc/testsuite/g++.dg/coroutines/co-await-initlist2.C
new file mode 100644
index 0000000..7bdfa67
--- /dev/null
+++ b/gcc/testsuite/g++.dg/coroutines/co-await-initlist2.C
@@ -0,0 +1,29 @@
+// PR c++/109227
+// { dg-do compile { target c++20 } }
+
+#include <initializer_list>
+#include <coroutine>
+
+struct awaitable {
+ bool await_ready();
+ void await_suspend(std::coroutine_handle<> h);
+ void await_resume();
+};
+awaitable async_new_session(int capabilities);
+struct aa { ~aa(); };
+aa f(void);
+struct Capabilities {
+ Capabilities(std::initializer_list<aa> __l);
+};
+int g(Capabilities);
+struct task {
+ struct promise_type {
+ std::suspend_never initial_suspend();
+ std::suspend_never final_suspend() noexcept;
+ void unhandled_exception();
+ task get_return_object() noexcept;
+ };
+};
+task make() {
+ co_await async_new_session(g({aa()}));
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/alias-decl-nontype1.C b/gcc/testsuite/g++.dg/cpp0x/alias-decl-nontype1.C
new file mode 100644
index 0000000..3a9f0de
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/alias-decl-nontype1.C
@@ -0,0 +1,9 @@
+// PR c++/67898
+// { dg-do compile { target c++11 } }
+
+template<class T, T V, class = decltype(V)> struct A;
+template<class U> using B = A<U, 0>;
+
+using type = A<bool, 0>;
+using type = B<bool>; // incorrectly resolves to A<bool, 0, int>
+ // instead of A<bool, 0, bool>
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist-pmf2.C b/gcc/testsuite/g++.dg/cpp0x/initlist-pmf2.C
new file mode 100644
index 0000000..0fac833
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist-pmf2.C
@@ -0,0 +1,12 @@
+// PR c++/113598
+// { dg-additional-options -Wno-c++11-extensions }
+
+struct Cpu
+{
+ int op_nop();
+};
+typedef int(Cpu::*OpCode)();
+void f()
+{
+ new OpCode[256]{&Cpu::op_nop};
+}
diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-nested3.C b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-nested3.C
new file mode 100644
index 0000000..2765527
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-nested3.C
@@ -0,0 +1,11 @@
+// PR c++/113544
+// { dg-do compile { target c++14 } }
+
+template<class T>
+void f() {
+ [](auto parm) {
+ struct type : decltype(parm) { };
+ };
+}
+
+template void f<int>();
diff --git a/gcc/testsuite/g++.dg/cpp23/explicit-obj-diagnostics10.C b/gcc/testsuite/g++.dg/cpp23/explicit-obj-diagnostics10.C
new file mode 100644
index 0000000..354823d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp23/explicit-obj-diagnostics10.C
@@ -0,0 +1,8 @@
+// PR c++/113389
+// { dg-do compile { target c++23 } }
+
+struct A {
+ void foo(A, this A); // { dg-error "only the first parameter" }
+ void qux(A, this A, // { dg-error "only the first parameter" }
+ this A); // { dg-error "only the first parameter" }
+};
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-narrowing1.C b/gcc/testsuite/g++.dg/cpp2a/concepts-narrowing1.C
new file mode 100644
index 0000000..dcfe272
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-narrowing1.C
@@ -0,0 +1,16 @@
+// PR c++/104594
+// { dg-do compile { target c++20 } }
+
+template <unsigned char DIM_FROM>
+concept Geometry = (DIM_FROM == -1);
+
+template <class INIT>
+requires Geometry<INIT::n>
+auto GaussNewton(const INIT& init) -> void {}
+
+template<int N>
+struct X {
+ static constexpr int n = N;
+};
+
+int main() { GaussNewton(X<-1>{}); } // { dg-error "no match|narrowing" }
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-using4.C b/gcc/testsuite/g++.dg/cpp2a/concepts-using4.C
new file mode 100644
index 0000000..a39a7c0
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-using4.C
@@ -0,0 +1,24 @@
+// PR c++/113498
+// { dg-do compile { target c++20 } }
+
+template<int d>
+struct S_Base
+{
+ static constexpr int D = d;
+};
+
+template<int d>
+struct S : public S_Base<d>
+{
+ using S_Base<d>::D;
+ constexpr void f() const
+ requires(D > 0) {}
+
+};
+
+int main(int, char**)
+{
+ S<1> s;
+ s.f();
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/cpp2a/nontype-class63.C b/gcc/testsuite/g++.dg/cpp2a/nontype-class63.C
new file mode 100644
index 0000000..2e61739
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp2a/nontype-class63.C
@@ -0,0 +1,24 @@
+// PR c++/112632
+// { dg-do compile { target c++20 } }
+
+template<typename T>
+inline constexpr bool C = true;
+
+struct n {
+ constexpr n(int a) : i(a) {}
+ int i;
+};
+
+template<n N>
+using get_n_i_type = decltype(N.i);
+
+template<int X>
+int f() {
+ using iii = get_n_i_type<X>;
+#if 1 // Change to 0 and this compiles
+ static_assert(C<iii>);
+#endif
+ return iii{};
+}
+
+template int f<3>();
diff --git a/gcc/testsuite/g++.dg/cpp2a/nontype-class63a.C b/gcc/testsuite/g++.dg/cpp2a/nontype-class63a.C
new file mode 100644
index 0000000..489a90d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp2a/nontype-class63a.C
@@ -0,0 +1,24 @@
+// PR c++/112594
+// { dg-do compile { target c++20 } }
+
+template<typename T>
+concept C = true;
+
+struct n {
+ constexpr n(int) {}
+ static int i;
+};
+
+template<n N>
+using get_n_i_type = decltype(N.i);
+
+template<int X>
+int f() {
+ using iii = get_n_i_type<X>;
+#if 1 // Change to 0 and this compiles
+ static_assert(C<iii>);
+#endif
+ return iii{};
+}
+
+template int f<3>();
diff --git a/gcc/testsuite/g++.dg/cpp2a/spaceship-sfinae3.C b/gcc/testsuite/g++.dg/cpp2a/spaceship-sfinae3.C
new file mode 100644
index 0000000..ca15926
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp2a/spaceship-sfinae3.C
@@ -0,0 +1,22 @@
+// PR c++/113529
+// { dg-do compile { target c++20 } }
+
+#include <compare>
+
+struct A {
+ auto operator<=>(const A&) const = default;
+ bool operator<(const A&) const;
+};
+struct B {
+ auto operator<=>(const B&) const = default;
+};
+struct C : A, B { };
+
+
+template<class T>
+void f(T u, T v) {
+ static_assert(!requires { u < v; });
+ u < v; // { dg-error "request for member 'operator<=>' is ambiguous" }
+}
+
+template void f(C, C);
diff --git a/gcc/testsuite/g++.dg/eh/dfp-1.C b/gcc/testsuite/g++.dg/eh/dfp-1.C
index b0da13a..5efd92c 100644
--- a/gcc/testsuite/g++.dg/eh/dfp-1.C
+++ b/gcc/testsuite/g++.dg/eh/dfp-1.C
@@ -1,5 +1,6 @@
// { dg-do run }
// { dg-require-effective-target dfp }
+/* { dg-require-effective-target dfprt } */
extern "C" void abort ();
diff --git a/gcc/testsuite/g++.dg/eh/dfp-2.C b/gcc/testsuite/g++.dg/eh/dfp-2.C
index aff0e03..3c65b03 100644
--- a/gcc/testsuite/g++.dg/eh/dfp-2.C
+++ b/gcc/testsuite/g++.dg/eh/dfp-2.C
@@ -1,5 +1,6 @@
// { dg-do run }
// { dg-require-effective-target dfp }
+/* { dg-require-effective-target dfprt } */
extern "C" void abort ();
diff --git a/gcc/testsuite/g++.dg/eh/dfp-saves-aarch64.C b/gcc/testsuite/g++.dg/eh/dfp-saves-aarch64.C
index 06203410..f1fa7c4 100644
--- a/gcc/testsuite/g++.dg/eh/dfp-saves-aarch64.C
+++ b/gcc/testsuite/g++.dg/eh/dfp-saves-aarch64.C
@@ -1,5 +1,6 @@
// { dg-do run { target aarch64*-*-* } }
// { dg-require-effective-target dfp }
+/* { dg-require-effective-target dfprt } */
/* Test unwinding of AArch64 register saves. */
/* We cannot use #include <decimal/decimal> because it defines
diff --git a/gcc/testsuite/g++.dg/eh/return3.C b/gcc/testsuite/g++.dg/eh/return3.C
new file mode 100644
index 0000000..76aa50d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/eh/return3.C
@@ -0,0 +1,17 @@
+// PR c++/113347
+
+#if __cplusplus < 201103L
+#define THROWS
+#else
+#define THROWS noexcept(false)
+#endif
+
+struct A { ~A(); };
+struct B { ~B() THROWS; };
+
+A f()
+{
+ A a;
+ return a;
+ B();
+}
diff --git a/gcc/testsuite/g++.dg/expr/ptrmem11.C b/gcc/testsuite/g++.dg/expr/ptrmem11.C
new file mode 100644
index 0000000..7100a2d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/expr/ptrmem11.C
@@ -0,0 +1,17 @@
+// PR c++/113599
+// { dg-do run }
+
+struct A { void *a; };
+struct B { void *b; };
+struct C : public B, public A { A c; };
+static C d;
+
+int
+main ()
+{
+ A C::*e = &C::c;
+ A *f = &(d.*e);
+ A *g = &d.c;
+ if (f != g)
+ __builtin_abort ();
+}
diff --git a/gcc/testsuite/g++.dg/modules/concept-10_a.H b/gcc/testsuite/g++.dg/modules/concept-10_a.H
new file mode 100644
index 0000000..c3a5fa7
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/concept-10_a.H
@@ -0,0 +1,25 @@
+// Also test header modules
+// PR c++/113405
+// { dg-additional-options "-fmodule-header" }
+// { dg-require-effective-target c++20 }
+// { dg-module-cmi {} }
+
+template <typename>
+concept foo = false;
+
+template <typename>
+concept bar = true;
+
+template <typename T>
+struct corge {};
+
+template <foo F>
+struct corge<F> {};
+
+template <bar B>
+struct corge<B> {
+ using alias = int;
+};
+
+template <typename T>
+using corge_alias = corge<T>::alias;
diff --git a/gcc/testsuite/g++.dg/modules/concept-10_b.C b/gcc/testsuite/g++.dg/modules/concept-10_b.C
new file mode 100644
index 0000000..67be13d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/concept-10_b.C
@@ -0,0 +1,8 @@
+// PR c++/113405
+// { dg-additional-options "-fmodules-ts" }
+// { dg-require-effective-target c++20 }
+
+import "concept-10_a.H";
+
+struct test {};
+using quux = corge_alias<test>;
diff --git a/gcc/testsuite/g++.dg/modules/concept-9.h b/gcc/testsuite/g++.dg/modules/concept-9.h
new file mode 100644
index 0000000..1c7f003
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/concept-9.h
@@ -0,0 +1,18 @@
+// PR c++/113405
+
+template <typename>
+concept foo = false;
+
+template <typename>
+concept bar = true;
+
+template <typename T>
+struct corge {};
+
+template <foo F>
+struct corge<F> {};
+
+template <bar B>
+struct corge<B> {
+ using alias = int;
+};
diff --git a/gcc/testsuite/g++.dg/modules/concept-9_a.C b/gcc/testsuite/g++.dg/modules/concept-9_a.C
new file mode 100644
index 0000000..9a055b6
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/concept-9_a.C
@@ -0,0 +1,13 @@
+// PR c++/113405
+// { dg-additional-options "-fmodules-ts" }
+// { dg-require-effective-target c++20 }
+// { dg-module-cmi M }
+
+module;
+
+#include "concept-9.h"
+
+export module M;
+
+export template<class T>
+using corge_alias = corge<T>::alias;
diff --git a/gcc/testsuite/g++.dg/modules/concept-9_b.C b/gcc/testsuite/g++.dg/modules/concept-9_b.C
new file mode 100644
index 0000000..55a64a9
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/concept-9_b.C
@@ -0,0 +1,8 @@
+// PR c++/113405
+// { dg-additional-options "-fmodules-ts" }
+// { dg-require-effective-target c++20 }
+
+import M;
+
+struct test {};
+using quux = corge_alias<test>;
diff --git a/gcc/testsuite/g++.dg/modules/debug-2_a.C b/gcc/testsuite/g++.dg/modules/debug-2_a.C
new file mode 100644
index 0000000..eed0905
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/debug-2_a.C
@@ -0,0 +1,9 @@
+// PR c++/112820
+// { dg-additional-options "-fmodules-ts -g" }
+// { dg-module-cmi io }
+
+export module io;
+
+export struct error {
+ virtual const char* what() const noexcept;
+};
diff --git a/gcc/testsuite/g++.dg/modules/debug-2_b.C b/gcc/testsuite/g++.dg/modules/debug-2_b.C
new file mode 100644
index 0000000..fc9afbc
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/debug-2_b.C
@@ -0,0 +1,8 @@
+// PR c++/112820
+// { dg-additional-options "-fmodules-ts -g" }
+
+module io;
+
+const char* error::what() const noexcept {
+ return "bla";
+}
diff --git a/gcc/testsuite/g++.dg/modules/debug-2_c.C b/gcc/testsuite/g++.dg/modules/debug-2_c.C
new file mode 100644
index 0000000..37117f6
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/debug-2_c.C
@@ -0,0 +1,9 @@
+// PR c++/112820
+// { dg-module-do link }
+// { dg-additional-options "-fmodules-ts -g" }
+
+import io;
+
+int main() {
+ error{};
+}
diff --git a/gcc/testsuite/g++.dg/modules/debug-3_a.C b/gcc/testsuite/g++.dg/modules/debug-3_a.C
new file mode 100644
index 0000000..9e33d82
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/debug-3_a.C
@@ -0,0 +1,8 @@
+// PR c++/102607
+// { dg-additional-options "-fmodules-ts -g" }
+// { dg-module-cmi mod }
+
+export module mod;
+export struct B {
+ virtual ~B() = default;
+};
diff --git a/gcc/testsuite/g++.dg/modules/debug-3_b.C b/gcc/testsuite/g++.dg/modules/debug-3_b.C
new file mode 100644
index 0000000..03c78b7
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/debug-3_b.C
@@ -0,0 +1,9 @@
+// PR c++/102607
+// { dg-module-do link }
+// { dg-additional-options "-fmodules-ts -g" }
+
+import mod;
+int main() {
+ struct D : B {};
+ (void)D{};
+}
diff --git a/gcc/testsuite/g++.dg/modules/indirect-1_b.C b/gcc/testsuite/g++.dg/modules/indirect-1_b.C
index c450fa9..39e9d21 100644
--- a/gcc/testsuite/g++.dg/modules/indirect-1_b.C
+++ b/gcc/testsuite/g++.dg/modules/indirect-1_b.C
@@ -33,20 +33,20 @@ namespace bar
export extern auto const Scoped_Const_Three = foo::Scoped::D;
}
-// { dg-final { scan-lang-dump {Lazily binding '::foo@foo:.::frob'@'foo' section:} module } }
+// { dg-final { scan-lang-dump {Lazily binding '::foo::frob'@'foo' section:} module } }
// { dg-final { scan-lang-dump-not {namespace:-[0-9]* namespace_decl:'::foo'} module } }
-// { dg-final { scan-lang-dump {Wrote import:-[0-9]* function_decl:'::foo@foo:.::frob@foo:.'@foo} module } }
+// { dg-final { scan-lang-dump {Wrote import:-[0-9]* function_decl:'::foo::frob@foo:.'@foo} module } }
-// { dg-final { scan-lang-dump {Lazily binding '::foo@foo:.::X'@'foo' section:} module } }
-// { dg-final { scan-lang-dump {Wrote import:-[0-9]* type_decl:'::foo@foo:.::X@foo:.'@foo} module } }
+// { dg-final { scan-lang-dump {Lazily binding '::foo::X'@'foo' section:} module } }
+// { dg-final { scan-lang-dump {Wrote import:-[0-9]* type_decl:'::foo::X@foo:.'@foo} module } }
-// { dg-final { scan-lang-dump {Lazily binding '::foo@foo:.::Y'@'foo' section:} module } }
-// { dg-final { scan-lang-dump {Wrote import:-[0-9]* type_decl:'::foo@foo:.::Y@foo:.'@foo} module } }
+// { dg-final { scan-lang-dump {Lazily binding '::foo::Y'@'foo' section:} module } }
+// { dg-final { scan-lang-dump {Wrote import:-[0-9]* type_decl:'::foo::Y@foo:.'@foo} module } }
-// { dg-final { scan-lang-dump {Lazily binding '::foo@foo:.::B'@'foo' section:} module } }
-// { dg-final { scan-lang-dump-not {Lazily binding '::foo@foo:.::C@foo:.'@'foo' section:} module } }
-// { dg-final { scan-lang-dump {Lazily binding '::foo@foo:.::Scoped'@'foo' section:} module } }
-// { dg-final { scan-lang-dump-not {Lazily binding '::foo@foo:.::Scoped@foo:.::[ABCD]'@'foo' section:} module } }
+// { dg-final { scan-lang-dump {Lazily binding '::foo::B'@'foo' section:} module } }
+// { dg-final { scan-lang-dump-not {Lazily binding '::foo::C@foo:.'@'foo' section:} module } }
+// { dg-final { scan-lang-dump {Lazily binding '::foo::Scoped'@'foo' section:} module } }
+// { dg-final { scan-lang-dump-not {Lazily binding '::foo::Scoped@foo:.::[ABCD]'@'foo' section:} module } }
// { dg_final { scan-lang-dump {Wrote named import:-[0-9]* const_decl:'::foo::Plain@\(foo\)::C'@foo} module } }
// { dg_final { scan-lang-dump {Wrote named import:-[0-9]* const_decl:'::foo::Plain@\(foo\)::B'@foo} module } }
diff --git a/gcc/testsuite/g++.dg/modules/indirect-1_c.C b/gcc/testsuite/g++.dg/modules/indirect-1_c.C
index 73d5974..8ac0654 100644
--- a/gcc/testsuite/g++.dg/modules/indirect-1_c.C
+++ b/gcc/testsuite/g++.dg/modules/indirect-1_c.C
@@ -23,27 +23,27 @@ int main ()
return 0;
}
-// { dg-final { scan-lang-dump {Lazily binding '::bar@bar:.::frob'@'bar' section:} module } }
+// { dg-final { scan-lang-dump {Lazily binding '::bar::frob'@'bar' section:} module } }
// { dg-final { scan-lang-dump {>Loading entity foo\[14\] section:4} module } }
-// { dg-final { scan-lang-dump {Named:-[0-9]* namespace_decl:'::foo@foo:1'@foo} module } }
-// { dg-final { scan-lang-dump {Imported:-[0-9]* function_decl:'::foo@foo:.::frob@foo:.'@foo} module } }
+// { dg-final { scan-lang-dump {Named:-[0-9]* namespace_decl:'::foo'@foo} module } }
+// { dg-final { scan-lang-dump {Imported:-[0-9]* function_decl:'::foo::frob@foo:.'@foo} module } }
-// { dg-final { scan-lang-dump {Lazily binding '::bar@bar:.::quux'@'bar' section:} module } }
+// { dg-final { scan-lang-dump {Lazily binding '::bar::quux'@'bar' section:} module } }
// { dg-final { scan-lang-dump {>Loading entity foo\[1\] section:1} module } }
-// { dg-final { scan-lang-dump {Imported:-[0-9]* type_decl:'::foo@foo:.::X@foo:.'@foo} module } }
+// { dg-final { scan-lang-dump {Imported:-[0-9]* type_decl:'::foo::X@foo:.'@foo} module } }
-// { dg-final { scan-lang-dump {Lazily binding '::bar@bar:.::Z'@'bar' section:} module } }
+// { dg-final { scan-lang-dump {Lazily binding '::bar::Z'@'bar' section:} module } }
// { dg-final { scan-lang-dump {>Loading entity foo\[8\] section:2} module } }
-// { dg-final { scan-lang-dump {Imported:-[0-9]* type_decl:'::foo@foo:.::Y@foo:.'@foo} module } }
-// { dg-final { scan-lang-dump {Read member:-[0-9]* field_decl:'::foo@foo:.::Y@foo:.::_vptr.Y'} module } }
-// { dg-final { scan-lang-dump {Imported:-[0-9]* function_decl:'::foo@foo:.::Y@foo:.::frob@foo:.'@foo} module } }
+// { dg-final { scan-lang-dump {Imported:-[0-9]* type_decl:'::foo::Y@foo:.'@foo} module } }
+// { dg-final { scan-lang-dump {Read member:-[0-9]* field_decl:'::foo::Y@foo:.::_vptr.Y'} module } }
+// { dg-final { scan-lang-dump {Imported:-[0-9]* function_decl:'::foo::Y@foo:.::frob@foo:.'@foo} module } }
-// { dg-final { scan-lang-dump {Lazily binding '::bar@bar:.::Plain_One'@'bar' section:} module } }
+// { dg-final { scan-lang-dump {Lazily binding '::bar::Plain_One'@'bar' section:} module } }
// { dg-final { scan-lang-dump {>Loading entity foo\[13\] section:3} module } }
-// { dg-final { scan-lang-dump {Lazily binding '::bar@bar:.::Scoped_One'@'bar' section} module } }
+// { dg-final { scan-lang-dump {Lazily binding '::bar::Scoped_One'@'bar' section} module } }
// { dg-final { scan-lang-dump {>Loading entity foo\[15\] section:5} module } }
-// { dg-final { scan-lang-dump-not {Lazily binding '::foo@foo:.::[ABC]'@'foo' section:} module } }
-// { dg-final { scan-lang-dump-not {Lazily binding '::foo@foo:.::Scoped@\(foo\)::[ABC]'@'foo' section:} module } }
+// { dg-final { scan-lang-dump-not {Lazily binding '::foo::[ABC]'@'foo' section:} module } }
+// { dg-final { scan-lang-dump-not {Lazily binding '::foo::Scoped@\(foo\)::[ABC]'@'foo' section:} module } }
-// { dg-final { scan-lang-dump {Lazily binding '::bar@bar:.::Plain_Const_Three'@'bar' section:} module } }
-// { dg-final { scan-lang-dump {Lazily binding '::bar@bar:.::Scoped_Const_Three'@'bar' section} module } }
+// { dg-final { scan-lang-dump {Lazily binding '::bar::Plain_Const_Three'@'bar' section:} module } }
+// { dg-final { scan-lang-dump {Lazily binding '::bar::Scoped_Const_Three'@'bar' section} module } }
diff --git a/gcc/testsuite/g++.dg/modules/indirect-2_b.C b/gcc/testsuite/g++.dg/modules/indirect-2_b.C
index 16e060a..763899e 100644
--- a/gcc/testsuite/g++.dg/modules/indirect-2_b.C
+++ b/gcc/testsuite/g++.dg/modules/indirect-2_b.C
@@ -17,15 +17,15 @@ namespace bar
}
}
-// { dg-final { scan-lang-dump {Lazily binding '::foo@foo:.::frob'@'foo' section} module } }
-// { dg-final { scan-lang-dump {Wrote import:-[0-9]* template_decl:'::foo@foo:.::template frob@foo:.'@foo} module } }
-// { dg-final { scan-lang-dump {Writing:-[0-9]*'s decl spec merge key \(specialization\) function_decl:'::foo@foo:.::frob<0x0>'} module } }
+// { dg-final { scan-lang-dump {Lazily binding '::foo::frob'@'foo' section} module } }
+// { dg-final { scan-lang-dump {Wrote import:-[0-9]* template_decl:'::foo::template frob@foo:.'@foo} module } }
+// { dg-final { scan-lang-dump {Writing:-[0-9]*'s decl spec merge key \(specialization\) function_decl:'::foo::frob<0x0>'} module } }
-// { dg-final { scan-lang-dump {Lazily binding '::foo@foo:.::X'@'foo' section:} module } }
-// { dg-final { scan-lang-dump {Wrote import:-[0-9]* template_decl:'::foo@foo:.::template X@foo:.'@foo} module } }
+// { dg-final { scan-lang-dump {Lazily binding '::foo::X'@'foo' section:} module } }
+// { dg-final { scan-lang-dump {Wrote import:-[0-9]* template_decl:'::foo::template X@foo:.'@foo} module } }
-// { dg-final { scan-lang-dump {Cluster members:\n \[0\]=specialization definition '::foo@foo:.::X<0x0>'\n \[1\]=specialization declaration '::foo@foo:.::X<0x0>::__conv_op <0x0>'\n \[2\]=specialization declaration '::foo@foo:.::X<0x0>::X<0x0>'\n( \[.\]=[^\n]* '\n)*} module } }
-// { dg-final { scan-lang-dump {Writing:-[0-9]*'s type spec merge key \(specialization\) type_decl:'::foo@foo:.::X<0x0>'} module } }
-// { dg-final { scan-lang-dump {Depset:. specialization entity:. type_decl:'::foo@foo:.::X<0x0>'} module } }
-// { dg-final { scan-lang-dump {Writing:-[0-9]*'s type spec merge key \(specialization\) type_decl:'::foo@foo:.::X<0x0>'} module } }
-// { dg-final { scan-lang-dump {Wrote purview:-[0-9]* type_decl:'::foo@foo:.::X<0x0>'} module } }
+// { dg-final { scan-lang-dump {Cluster members:\n \[0\]=specialization definition '::foo::X<0x0>'\n \[1\]=specialization declaration '::foo::X<0x0>::__conv_op <0x0>'\n \[2\]=specialization declaration '::foo::X<0x0>::X<0x0>'\n( \[.\]=[^\n]* '\n)*} module } }
+// { dg-final { scan-lang-dump {Writing:-[0-9]*'s type spec merge key \(specialization\) type_decl:'::foo::X<0x0>'} module } }
+// { dg-final { scan-lang-dump {Depset:. specialization entity:. type_decl:'::foo::X<0x0>'} module } }
+// { dg-final { scan-lang-dump {Writing:-[0-9]*'s type spec merge key \(specialization\) type_decl:'::foo::X<0x0>'} module } }
+// { dg-final { scan-lang-dump {Wrote purview:-[0-9]* type_decl:'::foo::X<0x0>'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/indirect-2_c.C b/gcc/testsuite/g++.dg/modules/indirect-2_c.C
index a5cf44b..855c9d1 100644
--- a/gcc/testsuite/g++.dg/modules/indirect-2_c.C
+++ b/gcc/testsuite/g++.dg/modules/indirect-2_c.C
@@ -13,13 +13,13 @@ int main ()
return 0;
}
-// { dg-final { scan-lang-dump {Lazily binding '::bar@bar:.::frob'@'bar' section:} module } }
+// { dg-final { scan-lang-dump {Lazily binding '::bar::frob'@'bar' section:} module } }
// { dg-final { scan-lang-dump {>Loading entity foo\[4\] section:2} module } }
-// { dg-final { scan-lang-dump {Imported:-[0-9]* template_decl:'::foo@foo:.::template frob@foo:.'@foo} module } }
+// { dg-final { scan-lang-dump {Imported:-[0-9]* template_decl:'::foo::template frob@foo:.'@foo} module } }
// { dg-final { scan-lang-dump-not {Wrote mergeable} module } }
-// { dg-final { scan-lang-dump {Lazily binding '::bar@bar:.::quux'@'bar' section:} module } }
+// { dg-final { scan-lang-dump {Lazily binding '::bar::quux'@'bar' section:} module } }
// { dg-final { scan-lang-dump {>Loading entity foo\[1\] section:1} module } }
-// { dg-final { scan-lang-dump {Imported:-[0-9]* template_decl:'::foo@foo:.::template X@foo:.'@foo} module } }
-// { dg-final { scan-lang-dump {Read:-[0-9]* function_decl:'::foo@foo:.::frob<0x0>'} module } }
+// { dg-final { scan-lang-dump {Imported:-[0-9]* template_decl:'::foo::template X@foo:.'@foo} module } }
+// { dg-final { scan-lang-dump {Read:-[0-9]* function_decl:'::foo::frob<0x0>'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/indirect-3_b.C b/gcc/testsuite/g++.dg/modules/indirect-3_b.C
index 038b01e..a111bfb 100644
--- a/gcc/testsuite/g++.dg/modules/indirect-3_b.C
+++ b/gcc/testsuite/g++.dg/modules/indirect-3_b.C
@@ -17,14 +17,14 @@ namespace bar
}
}
-// { dg-final { scan-lang-dump {Lazily binding '::foo@foo:.::X'@'foo' section} module } }
-// { dg-final { scan-lang-dump {Wrote import:-[0-9]* template_decl:'::foo@foo:.::X@foo:.::template frob@foo:.'@foo} module } }
+// { dg-final { scan-lang-dump {Lazily binding '::foo::X'@'foo' section} module } }
+// { dg-final { scan-lang-dump {Wrote import:-[0-9]* template_decl:'::foo::X@foo:.::template frob@foo:.'@foo} module } }
-// { dg-final { scan-lang-dump {Lazily binding '::foo@foo:.::TPL'@'foo' section} module } }
-// { dg-final { scan-lang-dump {Wrote import:-[0-9]* template_decl:'::foo@foo:.::template TPL@foo:.'@foo} module } }
+// { dg-final { scan-lang-dump {Lazily binding '::foo::TPL'@'foo' section} module } }
+// { dg-final { scan-lang-dump {Wrote import:-[0-9]* template_decl:'::foo::template TPL@foo:.'@foo} module } }
-// { dg-final { scan-lang-dump {Cluster members:\n \[0\]=specialization definition '::foo@foo:.::TPL<0x0>'\n \[1\]=specialization definition '::foo@foo:.::TPL<0x0>::frob<0x0>'\n \[2\]=specialization declaration '::foo@foo:.::TPL<0x0>::TPL<0x0>'} module } }
+// { dg-final { scan-lang-dump {Cluster members:\n \[0\]=specialization definition '::foo::TPL<0x0>'\n \[1\]=specialization definition '::foo::TPL<0x0>::frob<0x0>'\n \[2\]=specialization declaration '::foo::TPL<0x0>::TPL<0x0>'} module } }
-// { dg-final { scan-lang-dump {Cluster members:\n \[0\]=specialization definition '::foo@foo:.::X@foo:.::frob<0x0>'} module } }
-// { dg-final { scan-lang-dump {Writing:-[0-9]*'s type spec merge key \(specialization\) type_decl:'::foo@foo:.::TPL<0x0>'} module } }
-// { dg-final { scan-lang-dump {Writing:-[0-9]*'s decl spec merge key \(specialization\) function_decl:'::foo@foo:.::X@foo:.::frob<0x0>'} module } }
+// { dg-final { scan-lang-dump {Cluster members:\n \[0\]=specialization definition '::foo::X@foo:.::frob<0x0>'} module } }
+// { dg-final { scan-lang-dump {Writing:-[0-9]*'s type spec merge key \(specialization\) type_decl:'::foo::TPL<0x0>'} module } }
+// { dg-final { scan-lang-dump {Writing:-[0-9]*'s decl spec merge key \(specialization\) function_decl:'::foo::X@foo:.::frob<0x0>'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/indirect-3_c.C b/gcc/testsuite/g++.dg/modules/indirect-3_c.C
index ec2fc76..0178ffb 100644
--- a/gcc/testsuite/g++.dg/modules/indirect-3_c.C
+++ b/gcc/testsuite/g++.dg/modules/indirect-3_c.C
@@ -13,12 +13,12 @@ int main ()
return 0;
}
-// { dg-final { scan-lang-dump {Lazily binding '::bar@bar:.::quux'@'bar' section:} module } }
+// { dg-final { scan-lang-dump {Lazily binding '::bar::quux'@'bar' section:} module } }
// { dg-final { scan-lang-dump {>Loading entity foo\[5\] section:2} module } }
-// { dg-final { scan-lang-dump {Imported:-[0-9]* template_decl:'::foo@foo:.::X@foo:.::template frob@foo:.'@foo} module } }
+// { dg-final { scan-lang-dump {Imported:-[0-9]* template_decl:'::foo::X@foo:.::template frob@foo:.'@foo} module } }
// { dg-final { scan-lang-dump-not {Instantiation:-[0-9]* function_decl:'::foo::X@foo:.::frob@.()<0x0>'} module } }
-// { dg-final { scan-lang-dump {Lazily binding '::bar@bar:.::toto'@'bar' section:} module } }
+// { dg-final { scan-lang-dump {Lazily binding '::bar::toto'@'bar' section:} module } }
// { dg-final { scan-lang-dump {>Loading entity foo\[.\] section:1} module } }
-// { dg-final { scan-lang-dump {Imported:-[0-9]* template_decl:'::foo@foo:.::template TPL@foo:.'@foo} module } }
-// { dg-final { scan-lang-dump {Reading definition type_decl '::foo@foo:.::TPL@bar:.<0x0>'} module } }
+// { dg-final { scan-lang-dump {Imported:-[0-9]* template_decl:'::foo::template TPL@foo:.'@foo} module } }
+// { dg-final { scan-lang-dump {Reading definition type_decl '::foo::TPL@bar:.<0x0>'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/indirect-4_b.C b/gcc/testsuite/g++.dg/modules/indirect-4_b.C
index 8c51ce8..702991d 100644
--- a/gcc/testsuite/g++.dg/modules/indirect-4_b.C
+++ b/gcc/testsuite/g++.dg/modules/indirect-4_b.C
@@ -12,11 +12,11 @@ namespace bar
}
}
-// { dg-final { scan-lang-dump {Lazily binding '::foo@foo:.::TPL'@'foo' section:} module } }
-// { dg-final { scan-lang-dump {Wrote import:-[0-9]* template_decl:'::foo@foo:.::template TPL@foo:.'@foo} module } }
+// { dg-final { scan-lang-dump {Lazily binding '::foo::TPL'@'foo' section:} module } }
+// { dg-final { scan-lang-dump {Wrote import:-[0-9]* template_decl:'::foo::template TPL@foo:.'@foo} module } }
-// { dg-final { scan-lang-dump {Cluster members:\n \[0\]=specialization definition '::foo@foo:.::TPL<0x1>'\n \[1\]=specialization declaration '::foo@foo:.::TPL<0x1>::template frob<#unnamed#>'\n \[2\]=specialization declaration '::foo@foo:.::TPL<0x1>::TPL<0x1>'\n( \[.\]=[^\n]* '\n)*} module } }
-// { dg-final { scan-lang-dump {Cluster members:\n \[0\]=specialization definition '::foo@foo:.::TPL<0x1>::frob<0x2>'} module } }
-// { dg-final { scan-lang-dump {Writing:-[0-9]*'s type spec merge key \(specialization\) type_decl:'::foo@foo:.::TPL<0x1>'} module } }
-// { dg-final { scan-lang-dump {Wrote purview:-[0-9]* type_decl:'::foo@foo:.::TPL<0x1>'} module } }
-// { dg-final { scan-lang-dump {Writing:-[0-9]*'s decl spec merge key \(specialization\) function_decl:'::foo@foo:.::TPL<0x1>::frob<0x2>'} module } }
+// { dg-final { scan-lang-dump {Cluster members:\n \[0\]=specialization definition '::foo::TPL<0x1>'\n \[1\]=specialization declaration '::foo::TPL<0x1>::template frob<#unnamed#>'\n \[2\]=specialization declaration '::foo::TPL<0x1>::TPL<0x1>'\n( \[.\]=[^\n]* '\n)*} module } }
+// { dg-final { scan-lang-dump {Cluster members:\n \[0\]=specialization definition '::foo::TPL<0x1>::frob<0x2>'} module } }
+// { dg-final { scan-lang-dump {Writing:-[0-9]*'s type spec merge key \(specialization\) type_decl:'::foo::TPL<0x1>'} module } }
+// { dg-final { scan-lang-dump {Wrote purview:-[0-9]* type_decl:'::foo::TPL<0x1>'} module } }
+// { dg-final { scan-lang-dump {Writing:-[0-9]*'s decl spec merge key \(specialization\) function_decl:'::foo::TPL<0x1>::frob<0x2>'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/indirect-4_c.C b/gcc/testsuite/g++.dg/modules/indirect-4_c.C
index d55a221..206891f 100644
--- a/gcc/testsuite/g++.dg/modules/indirect-4_c.C
+++ b/gcc/testsuite/g++.dg/modules/indirect-4_c.C
@@ -9,9 +9,9 @@ int main ()
return 0;
}
-// { dg-final { scan-lang-dump {Lazily binding '::bar@bar:.::quux'@'bar' section:} module } }
+// { dg-final { scan-lang-dump {Lazily binding '::bar::quux'@'bar' section:} module } }
// { dg-final { scan-lang-dump {>Loading entity foo\[.\] section:1} module } }
-// { dg-final { scan-lang-dump {Imported:-[0-9]* template_decl:'::foo@foo:.::template TPL@foo:.'@foo} module } }
+// { dg-final { scan-lang-dump {Imported:-[0-9]* template_decl:'::foo::template TPL@foo:.'@foo} module } }
-// { dg-final { scan-lang-dump {Reading definition function_decl '::foo@foo:.::TPL@bar:.<0x1>::frob@bar:.<0x2>'} module } }
-// { dg-final { scan-lang-dump {Reading definition type_decl '::foo@foo:.::TPL@bar:.<0x1>'} module } }
+// { dg-final { scan-lang-dump {Reading definition function_decl '::foo::TPL@bar:.<0x1>::frob@bar:.<0x2>'} module } }
+// { dg-final { scan-lang-dump {Reading definition type_decl '::foo::TPL@bar:.<0x1>'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/init-4_a.C b/gcc/testsuite/g++.dg/modules/init-4_a.C
new file mode 100644
index 0000000..e0eb97b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/init-4_a.C
@@ -0,0 +1,9 @@
+// PR c++/112899
+// { dg-additional-options "-fmodules-ts" }
+// { dg-module-cmi M }
+
+export module M;
+
+export struct A {
+ static constexpr int x = -1;
+};
diff --git a/gcc/testsuite/g++.dg/modules/init-4_b.C b/gcc/testsuite/g++.dg/modules/init-4_b.C
new file mode 100644
index 0000000..d28017a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/init-4_b.C
@@ -0,0 +1,11 @@
+// PR c++/112899
+// { dg-module-do run }
+// { dg-additional-options "-fmodules-ts" }
+
+import M;
+
+int main() {
+ const int& x = A::x;
+ if (x != -1)
+ __builtin_abort();
+}
diff --git a/gcc/testsuite/g++.dg/modules/init-6_a.H b/gcc/testsuite/g++.dg/modules/init-6_a.H
new file mode 100644
index 0000000..1c3fe45
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/init-6_a.H
@@ -0,0 +1,20 @@
+// { dg-additional-options "-fmodule-header" }
+// { dg-module-cmi {} }
+
+template <bool _DecOnly>
+struct __from_chars_alnum_to_val_table {
+ static inline int value = 42;
+};
+
+inline unsigned char
+__from_chars_alnum_to_val() {
+ return __from_chars_alnum_to_val_table<false>::value;
+}
+
+template <bool Foo>
+static inline int nonclass_value = 42;
+
+inline unsigned char
+get_nonclass_val() {
+ return nonclass_value<false>;
+}
diff --git a/gcc/testsuite/g++.dg/modules/init-6_b.C b/gcc/testsuite/g++.dg/modules/init-6_b.C
new file mode 100644
index 0000000..d704968
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/init-6_b.C
@@ -0,0 +1,9 @@
+// { dg-module-do link }
+// { dg-additional-options "-fmodules-ts" }
+
+import "init-6_a.H";
+
+int main() {
+ __from_chars_alnum_to_val();
+ get_nonclass_val();
+}
diff --git a/gcc/testsuite/g++.dg/modules/namespace-5_a.C b/gcc/testsuite/g++.dg/modules/namespace-5_a.C
new file mode 100644
index 0000000..491eb1a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/namespace-5_a.C
@@ -0,0 +1,6 @@
+// PR c++/100707
+// { dg-additional-options "-fmodules-ts" }
+// { dg-module-cmi A }
+
+export module A;
+export namespace A {}
diff --git a/gcc/testsuite/g++.dg/modules/namespace-5_b.C b/gcc/testsuite/g++.dg/modules/namespace-5_b.C
new file mode 100644
index 0000000..76a43bf
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/namespace-5_b.C
@@ -0,0 +1,7 @@
+// PR c++/100707
+// { dg-additional-options "-fmodules-ts" }
+// { dg-module-cmi A.B }
+
+export module A.B;
+import A;
+export namespace A::B {}
diff --git a/gcc/testsuite/g++.dg/modules/namespace-5_c.C b/gcc/testsuite/g++.dg/modules/namespace-5_c.C
new file mode 100644
index 0000000..93ccbf0
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/namespace-5_c.C
@@ -0,0 +1,5 @@
+// PR c++/100707
+// { dg-additional-options "-fmodules-ts" }
+
+import A.B;
+namespace A::B {}
diff --git a/gcc/testsuite/g++.dg/modules/pr113292_c.C b/gcc/testsuite/g++.dg/modules/pr113292_c.C
index aa3f32a..b5acf79 100644
--- a/gcc/testsuite/g++.dg/modules/pr113292_c.C
+++ b/gcc/testsuite/g++.dg/modules/pr113292_c.C
@@ -1,5 +1,7 @@
// PR c++/113292
// { dg-module-do link }
+// { dg-require-effective-target tls_runtime }
+// { dg-add-options tls }
// { dg-additional-options "-fmodules-ts" }
import "pr113292_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/pr113580_a.C b/gcc/testsuite/g++.dg/modules/pr113580_a.C
new file mode 100644
index 0000000..954333f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/pr113580_a.C
@@ -0,0 +1,10 @@
+// PR c++/113580
+// { dg-additional-options "-fmodules-ts" }
+// { dg-module-cmi A }
+
+export module A;
+
+export {
+ template <typename T>
+ void fun(T x) {}
+}
diff --git a/gcc/testsuite/g++.dg/modules/pr113580_b.C b/gcc/testsuite/g++.dg/modules/pr113580_b.C
new file mode 100644
index 0000000..a72cd75
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/pr113580_b.C
@@ -0,0 +1,10 @@
+// PR c++/113580
+// { dg-additional-options "-fmodules-ts -Wunused-parameter" }
+
+import A;
+
+int main() {
+ fun(42); // { dg-message "required from here" }
+}
+
+// { dg-warning "unused parameter" "" { target *-*-* } 0 }
diff --git a/gcc/testsuite/g++.dg/pch/line-map-1.C b/gcc/testsuite/g++.dg/pch/line-map-1.C
new file mode 100644
index 0000000..9d1ac6d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/pch/line-map-1.C
@@ -0,0 +1,4 @@
+/* PR preprocessor/105608 */
+/* { dg-do compile } */
+#define MACRO_ON_A_LONG_LINE "this line is long enough that it forces the line table to create an LC_RENAME map, which formerly triggered an ICE after PCH restore"
+#include "line-map-1.H"
diff --git a/gcc/testsuite/g++.dg/pch/line-map-1.Hs b/gcc/testsuite/g++.dg/pch/line-map-1.Hs
new file mode 100644
index 0000000..3b6178b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/pch/line-map-1.Hs
@@ -0,0 +1 @@
+/* This space intentionally left blank. */
diff --git a/gcc/testsuite/g++.dg/pch/line-map-2.C b/gcc/testsuite/g++.dg/pch/line-map-2.C
new file mode 100644
index 0000000..0be0357
--- /dev/null
+++ b/gcc/testsuite/g++.dg/pch/line-map-2.C
@@ -0,0 +1,6 @@
+/* PR preprocessor/105608 */
+/* { dg-do compile } */
+/* { dg-additional-options "-save-temps" } */
+#define MACRO_ON_A_LONG_LINE "this line is long enough that it forces the line table to create an LC_RENAME map, which formerly triggered an ICE after PCH restore"
+#include "line-map-2.H"
+#error "suppress PCH assembly comparison, which does not work with -save-temps" /* { dg-error "." } */
diff --git a/gcc/testsuite/g++.dg/pch/line-map-2.Hs b/gcc/testsuite/g++.dg/pch/line-map-2.Hs
new file mode 100644
index 0000000..3b6178b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/pch/line-map-2.Hs
@@ -0,0 +1 @@
+/* This space intentionally left blank. */
diff --git a/gcc/testsuite/g++.dg/pch/line-map-3.C b/gcc/testsuite/g++.dg/pch/line-map-3.C
new file mode 100644
index 0000000..3390d7a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/pch/line-map-3.C
@@ -0,0 +1,23 @@
+#define UNUSED_MACRO /* { dg-error "UNUSED_MACRO" "" { xfail *-*-* } } */
+#include "line-map-3.H" /* { dg-bogus "-:UNUSED_MACRO" "" { xfail *-*-* } } */
+
+/* { dg-do compile } */
+/* { dg-additional-options "-Werror=unused-macros" } */
+
+/* PR preprocessor/105608 */
+/* This test case is currently xfailed and requires work in libcpp/pch.cc to
+ resolve. Currently, the macro location is incorrectly assigned to line 2
+ of the header file when read via PCH, because libcpp doesn't try to
+ assign locations relative to the newly loaded line map after restoring
+ the PCH. */
+
+/* In PCH mode we also complain incorrectly about the command line macro -Dwith_PCH
+ added by dejagnu; that warning would get suppressed if the macro location were
+ correctly restored by libcpp to reflect that it was a command line macro. */
+/* { dg-bogus "-:with_PCH" "" { xfail *-*-* } 2 } */
+
+/* The reason we used -Werror was to prevent pch.exp from rerunning without PCH;
+ in that case we would get unnecessary XPASS outputs since the test does work
+ fine without PCH. Once the bug is fixed, remove the -Werror and switch to
+ dg-warning. */
+/* { dg-regexp {[^[:space:]]*: some warnings being treated as errors} } */
diff --git a/gcc/testsuite/g++.dg/pch/line-map-3.Hs b/gcc/testsuite/g++.dg/pch/line-map-3.Hs
new file mode 100644
index 0000000..3b6178b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/pch/line-map-3.Hs
@@ -0,0 +1 @@
+/* This space intentionally left blank. */
diff --git a/gcc/testsuite/g++.dg/warn/Wdangling-reference14.C b/gcc/testsuite/g++.dg/warn/Wdangling-reference14.C
new file mode 100644
index 0000000..92b38a9
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/Wdangling-reference14.C
@@ -0,0 +1,22 @@
+// PR c++/113256
+// { dg-do compile { target c++14 } }
+// { dg-options "-Wdangling-reference" }
+
+#include <utility>
+#include <cassert>
+
+template<class M, class T, class A> auto bind(M T::* pm, A)
+{
+ return [=]( auto&& x ) -> M const& { return x.*pm; };
+}
+
+template<int I> struct arg {};
+
+arg<1> _1;
+
+int main()
+{
+ std::pair<int, int> pair;
+ int const& x = bind( &std::pair<int, int>::first, _1 )( pair ); // { dg-bogus "dangling reference" }
+ assert( &x == &pair.first );
+}
diff --git a/gcc/testsuite/g++.dg/warn/Wdangling-reference15.C b/gcc/testsuite/g++.dg/warn/Wdangling-reference15.C
new file mode 100644
index 0000000..c39577d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/Wdangling-reference15.C
@@ -0,0 +1,31 @@
+// PR c++/111607
+// { dg-do compile { target c++20 } }
+// { dg-options "-Wdangling-reference" }
+
+#include <variant>
+
+struct S {
+ constexpr S(int i_) : i(i_) {}
+ S(S const &) = delete;
+ S & operator=(S const &) = delete;
+ S(S &&) = delete;
+ S & operator=(S &&) = delete;
+ int i;
+};
+
+struct A {
+ S s{0};
+};
+
+using V = std::variant<A>;
+
+consteval auto f(V const & v) {
+ auto const & s = std::visit([](auto const & v) -> S const & { return v.s; }, v); // { dg-bogus "dangling reference" }
+ return s.i;
+}
+
+int main() {
+ constexpr V a{std::in_place_type<A>};
+ constexpr auto i = f(a);
+ return i;
+}
diff --git a/gcc/testsuite/g++.dg/warn/Wdangling-reference16.C b/gcc/testsuite/g++.dg/warn/Wdangling-reference16.C
new file mode 100644
index 0000000..9199692
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/Wdangling-reference16.C
@@ -0,0 +1,13 @@
+// PR c++/109640
+// { dg-do compile { target c++11 } }
+// { dg-options "-Wdangling-reference" }
+
+bool
+fn0 ()
+{
+ int a;
+ int&& i = [](int& r) -> int&& { return static_cast<int&&>(r); }(a); // { dg-bogus "dangling reference" }
+ auto const l = [](int& r) -> int&& { return static_cast<int&&>(r); };
+ int&& j = l(a);
+ return &i == &j;
+}
diff --git a/gcc/testsuite/g++.dg/warn/Wdangling-reference17.C b/gcc/testsuite/g++.dg/warn/Wdangling-reference17.C
new file mode 100644
index 0000000..8cda5de
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/Wdangling-reference17.C
@@ -0,0 +1,27 @@
+// PR c++/111410
+// { dg-do compile { target c++20 } }
+// { dg-options "-Wdangling-reference" }
+
+#include <vector>
+#include <ranges>
+#include <span>
+
+int main()
+{
+ std::vector v{1, 2, 3, 4, 5};
+ for (auto i : std::span{v} | std::views::take(1))
+ {
+ (void) i;
+ }
+
+ // From c++/109642.
+ const auto vec = std::vector{ 1, 2, 3 };
+ const auto s = std::span<decltype(vec)::value_type const>{vec};
+
+ for ([[maybe_unused]] auto _ : s | std::views::take(2)) { }
+
+ for ([[maybe_unused]] auto _ : vec | std::views::take(2)) { }
+
+ const auto s_view = s | std::views::take(2);
+ for ([[maybe_unused]] auto _ : s_view) { }
+}
diff --git a/gcc/testsuite/g++.target/loongarch/got-load.C b/gcc/testsuite/g++.target/loongarch/got-load.C
index 20924c73..1787017 100644
--- a/gcc/testsuite/g++.target/loongarch/got-load.C
+++ b/gcc/testsuite/g++.target/loongarch/got-load.C
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-mabi=lp64d -O2 -mexplicit-relocs -mcmodel=normal -fdump-rtl-expand" } */
+/* { dg-options "-mabi=lp64d -O2 -mexplicit-relocs -mcmodel=normal -fdump-rtl-expand -fno-stack-protector" } */
/* { dg-final { scan-rtl-dump-times "mem/u" 2 "expand" } } */
#include <bits/stdc++.h>
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr110603.c b/gcc/testsuite/gcc.c-torture/compile/pr110603.c
new file mode 100644
index 0000000..afcc1a5
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr110603.c
@@ -0,0 +1,16 @@
+/* PR tree-optimization/110603 */
+
+typedef __SIZE_TYPE__ size_t;
+void *memcpy (void *, const void *, size_t);
+int snprintf (char *restrict, size_t, const char *restrict, ...);
+extern char a[2];
+void bar (void);
+
+void
+foo (void)
+{
+ memcpy (a, "12", sizeof (a));
+ int b = snprintf (0, 0, "%s", a);
+ if (b <= 3)
+ bar ();
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr110705-1.c b/gcc/testsuite/gcc.c-torture/compile/pr110705-1.c
new file mode 100644
index 0000000..6c0029c
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr110705-1.c
@@ -0,0 +1,27 @@
+/* PR ipa/110705 */
+
+/* We used to ICE in gimplify_modify_expr due to
+ the gimplifier not handling VCE between an struct
+ and an integer type. */
+
+struct a {
+ long b;
+};
+union d {
+ struct a b;
+ int e;
+}v;
+long c;
+int f;
+static void g(union d h, long i) {
+ while (1)
+ switch (c)
+ case 4:
+ if (h.e)
+ c = 4;
+}
+void j(union d *h) {
+ if (f)
+ g(*h, h->b.b);
+}
+void k() { union d *h = &v; j(h); }
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr113089.c b/gcc/testsuite/gcc.c-torture/compile/pr113089.c
new file mode 100644
index 0000000..70c71f2
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr113089.c
@@ -0,0 +1,26 @@
+/* { dg-do compile } */
+/* { dg-options "-g -funroll-loops" } */
+
+typedef unsigned short uint16;
+
+void intrapred_chroma_plane(uint16 ***mb_preds, int* max_imgpel_values, int crx, int cry, int px) {
+ for (int uv = 0; uv < 2; uv++) {
+ uint16 **mb_pred = mb_preds[uv + 1];
+ uint16 **predU2 = &mb_pred[px - 2];
+ uint16 *upPred = &mb_pred[px][px];
+ int max_imgpel_value = max_imgpel_values[uv];
+
+ int ih = upPred[crx - 1];
+ for (int i = 0; i < crx*3; ++i)
+ ih += upPred[crx*3];
+
+ int iv = (mb_pred[cry - 1][px+1]);
+ for (int i = 0; i < cry - 1; ++i) {
+ iv += (i + 1) * (*(mb_preds[uv][0]) - *(*predU2--));
+ }
+
+ for (int j = 0; j < cry; ++j)
+ for (int i = 0; i < crx; ++i)
+ mb_pred[j][i] = (uint16) (max_imgpel_value * ((i * ih + iv)));
+ }
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr113114.c b/gcc/testsuite/gcc.c-torture/compile/pr113114.c
new file mode 100644
index 0000000..978e594
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr113114.c
@@ -0,0 +1,9 @@
+/* { dg-do compile } */
+/* { dg-options "-funroll-loops" } */
+float val[128];
+float x;
+void bar() {
+ int i = 55;
+ for (; i >= 0; --i)
+ x += val[i];
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr113603.c b/gcc/testsuite/gcc.c-torture/compile/pr113603.c
new file mode 100644
index 0000000..0d4e817f
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr113603.c
@@ -0,0 +1,40 @@
+/* PR tree-optimization/113603 */
+
+int a, e;
+signed char b;
+int *c;
+signed char *d;
+short f;
+signed char g[3];
+
+int *
+foo (void)
+{
+ for (int i = 0; i < 3; i++)
+ g[i] = 2;
+ int j[100][100] = { {}, {4} };
+ signed char *k = &g[1];
+ do
+ {
+ for (;;)
+ {
+ if (c)
+ break;
+ return &a;
+ }
+ for (f = 0;; f++)
+ {
+ for (b = 0; b < 2; b++)
+ *c = j[b][f];
+ if (e)
+ d = k;
+ *k = *d;
+ if (*c)
+ break;
+ if (f)
+ break;
+ }
+ }
+ while (f);
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr113616.c b/gcc/testsuite/gcc.c-torture/compile/pr113616.c
new file mode 100644
index 0000000..04c38ea
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr113616.c
@@ -0,0 +1,19 @@
+// { dg-do compile }
+// { dg-options "-g" }
+struct A { struct A *a; } foo ();
+struct B { long b; };
+struct C { struct B c; struct A d; } *e;
+
+void
+bar (void)
+{
+ int f;
+ struct C *g;
+ struct A *h;
+ for (g = 0, g = e ? (void *) e - (char) (__SIZE_TYPE__) &g->d : 0, h = g ? (&g->d)->a : 0; g;
+ g = 0, g = h ? (void *) h - (char) (__SIZE_TYPE__) &g->d : 0, h = h ? h->a : 0)
+ {
+ f = (int) (__SIZE_TYPE__) g;
+ foo (((struct B *) g)->b);
+ }
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr113623.c b/gcc/testsuite/gcc.c-torture/compile/pr113623.c
new file mode 100644
index 0000000..ed33890
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr113623.c
@@ -0,0 +1,137 @@
+typedef struct A A;
+typedef struct B B;
+struct A { char *a; long b; };
+enum { C, D };
+typedef struct { A *c; A *d; } E;
+typedef enum { F } G;
+typedef enum { H } I;
+struct B { A *e, *f, *g, *h; char i; } j;
+int k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af;
+int ag, ah, ai, aj, ak, al, am, an, ao, ap;
+E aq;
+G ar;
+I as;
+char at;
+
+static int
+foo (char *c, long d)
+{
+ switch (d) {
+ case 7:
+ switch (c[6])
+ case 'd':
+ if (ao)
+ case 'h':
+ if (an)
+ case 'r':
+ if (am)
+ case 's':
+ if (al)
+ if (ak)
+ return C;
+ /* FALLTHRU */
+ case 8:
+ switch (c[7])
+ case 'e':
+ if (aj)
+ case 'h':
+ if (ai)
+ case 'n':
+ if (ah)
+ case 'y':
+ if (ag)
+ case 9:
+ switch (c[8])
+ case 'l':
+ case 0:
+ switch (c[9])
+ case 'e':
+ if (af)
+ if (ae)
+ case 'n':
+ if (ad)
+ case 't':
+ if (ac)
+ case 'y':
+ if (ab)
+ case 1:
+ switch (c[0])
+ case 'r':
+ case 2:
+ switch (c[1])
+ case 'e':
+ case 3:
+ switch (c[2])
+ case 'd':
+ if (aa)
+ case 'e':
+ if (z)
+ case 'h':
+ if (y)
+ case 'l':
+ if (x)
+ case 'n':
+ if (w)
+ case 's':
+ if (v)
+ case 4:
+ switch (c[3])
+ case 'h':
+ if (u)
+ case 't':
+ if (t)
+ case 5:
+ switch (c[4])
+ case 'e':
+ if (s)
+ case 'g':
+ if (r)
+ case 6:
+ switch (c[5])
+ case 'e':
+ if (q)
+ if (p)
+ case 'g':
+ if (o)
+ case 'n':
+ if (n)
+ if (m)
+ case 7:
+ switch (c[6])
+ case 'e':
+ if (l)
+ case 'g':
+ if (k)
+ return D;
+ }
+ return 0;
+}
+
+void bar (void);
+
+static int
+baz (B *x)
+{
+ aq.c = x->e;
+ aq.d = x->f;
+ ap = foo (x->e->a, x->e->b);
+ if (x->i)
+ bar ();
+ x->g = aq.c;
+ x->h = aq.d;
+ return 0;
+}
+
+void
+qux (void)
+{
+ for (; at;)
+ switch (as)
+ {
+ case H:
+ baz (&j);
+ j.f->b = 0;
+ if (ar)
+ baz (&j);
+ }
+}
diff --git a/gcc/testsuite/gcc.c-torture/execute/pr80692.c b/gcc/testsuite/gcc.c-torture/execute/pr80692.c
index e653c71..0978703 100644
--- a/gcc/testsuite/gcc.c-torture/execute/pr80692.c
+++ b/gcc/testsuite/gcc.c-torture/execute/pr80692.c
@@ -1,4 +1,5 @@
/* { dg-require-effective-target dfp } */
+/* { dg-require-effective-target dfprt } */
int main () {
_Decimal64 d64 = -0.DD;
diff --git a/gcc/testsuite/gcc.dg/analyzer/pr94688.c b/gcc/testsuite/gcc.dg/analyzer/pr94688.c
index f553b8c..8ea8bc3 100644
--- a/gcc/testsuite/gcc.dg/analyzer/pr94688.c
+++ b/gcc/testsuite/gcc.dg/analyzer/pr94688.c
@@ -1,3 +1,4 @@
+/* { dg-skip-if "PR112705" { hppa*64*-*-* } } */
int a, b;
void d();
void c()
diff --git a/gcc/testsuite/gcc.dg/bitint-73.c b/gcc/testsuite/gcc.dg/bitint-73.c
new file mode 100644
index 0000000..d796134
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/bitint-73.c
@@ -0,0 +1,18 @@
+/* PR tree-optimization/113459 */
+/* { dg-do compile { target bitint } } */
+/* { dg-options "-std=c23 -O2" } */
+
+#if __BITINT_MAXWIDTH__ >= 129
+# define N 129
+#else
+# define N 63
+#endif
+
+_BitInt(N) a;
+
+_BitInt(N)
+foo (void)
+{
+ __builtin_memset (&a, 6, sizeof a);
+ return a;
+}
diff --git a/gcc/testsuite/gcc.dg/bitint-74.c b/gcc/testsuite/gcc.dg/bitint-74.c
new file mode 100644
index 0000000..9114332
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/bitint-74.c
@@ -0,0 +1,16 @@
+/* PR tree-optimization/113463 */
+/* { dg-do compile { target bitint } } */
+/* { dg-options "-std=c23 -O2" } */
+
+extern char *a, *b;
+#if __BITINT_MAXWIDTH__ >= 129
+_BitInt(129) o;
+#else
+_BitInt(63) o;
+#endif
+
+void
+foo (void)
+{
+ __builtin_memcpy (a + o, b, 4);
+}
diff --git a/gcc/testsuite/gcc.dg/bitint-75.c b/gcc/testsuite/gcc.dg/bitint-75.c
new file mode 100644
index 0000000..dd8292e
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/bitint-75.c
@@ -0,0 +1,11 @@
+/* PR tree-optimization/113464 */
+/* { dg-do compile { target bitint65535 } } */
+/* { dg-options "-O2 -w -std=gnu23" } */
+
+_BitInt(65532) i;
+
+void
+foo (void)
+{
+ __asm__ ("" : "+r" (i)); /* { dg-error "impossible constraint" } */
+}
diff --git a/gcc/testsuite/gcc.dg/bitint-76.c b/gcc/testsuite/gcc.dg/bitint-76.c
new file mode 100644
index 0000000..23f118a
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/bitint-76.c
@@ -0,0 +1,16 @@
+/* PR tree-optimization/113462 */
+/* { dg-do compile { target bitint } } */
+/* { dg-options "-std=c23 -O2" } */
+
+#if __BITINT_MAXWIDTH__ >= 129
+typedef _BitInt(129) B;
+#else
+typedef _BitInt(63) B;
+#endif
+
+B
+foo (void)
+{
+ struct { B b; } s = {};
+ return s.b;
+}
diff --git a/gcc/testsuite/gcc.dg/bitint-77.c b/gcc/testsuite/gcc.dg/bitint-77.c
new file mode 100644
index 0000000..0125f1e
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/bitint-77.c
@@ -0,0 +1,25 @@
+/* PR c/113518 */
+/* { dg-do compile { target bitint } } */
+/* { dg-options "-O2 -std=c23" } */
+
+#if __BITINT_MAXWIDTH__ >= 607
+_BitInt(607) v;
+#else
+_BitInt(63) v;
+#endif
+
+void
+foo (void)
+{
+ __atomic_fetch_or (&v, 1 << 31, __ATOMIC_RELAXED);
+}
+
+#if __BITINT_MAXWIDTH__ >= 16321
+_BitInt(16321) w;
+
+void
+bar (void)
+{
+ __atomic_fetch_add (&w, 1 << 31, __ATOMIC_SEQ_CST);
+}
+#endif
diff --git a/gcc/testsuite/gcc.dg/bitint-78.c b/gcc/testsuite/gcc.dg/bitint-78.c
new file mode 100644
index 0000000..6c08757
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/bitint-78.c
@@ -0,0 +1,21 @@
+/* PR tree-optimization/113568 */
+/* { dg-do compile { target bitint } } */
+/* { dg-options "-O2 -std=c23" } */
+
+signed char c;
+#if __BITINT_MAXWIDTH__ >= 464
+_BitInt(464) g;
+
+void
+foo (void)
+{
+ _BitInt(464) a[2] = {};
+ _BitInt(464) b;
+ while (c)
+ {
+ b = g + 1;
+ g = a[0];
+ a[0] = b;
+ }
+}
+#endif
diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-bitfields-3.c b/gcc/testsuite/gcc.dg/debug/btf/btf-bitfields-3.c
index 78b8b7d..08622b7 100644
--- a/gcc/testsuite/gcc.dg/debug/btf/btf-bitfields-3.c
+++ b/gcc/testsuite/gcc.dg/debug/btf/btf-bitfields-3.c
@@ -14,7 +14,7 @@
*/
/* { dg-do compile } */
-/* { dg-options "-O0 -gbtf -dA" } */
+/* { dg-options "-O0 -gbtf -gno-strict-dwarf -dA" } */
/* Enum with 4 members. */
/* { dg-final { scan-assembler-times "\[\t \]0x6000004\[\t \]+\[^\n\]*btt_info" 1 } } */
diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-enum-1.c b/gcc/testsuite/gcc.dg/debug/btf/btf-enum-1.c
index 021ce03..7873c88 100644
--- a/gcc/testsuite/gcc.dg/debug/btf/btf-enum-1.c
+++ b/gcc/testsuite/gcc.dg/debug/btf/btf-enum-1.c
@@ -1,7 +1,7 @@
/* Test BTF generation for enums. */
/* { dg-do compile } */
-/* { dg-options "-O0 -gbtf -fno-short-enums -dA" } */
+/* { dg-options "-O0 -gbtf -gno-strict-dwarf -fno-short-enums -dA" } */
/* { dg-final { scan-assembler-times "\[\t \]0x6000004\[\t \]+\[^\n\]*btt_info" 1 } } */
/* { dg-final { scan-assembler-times "\[\t \]0x86000003\[\t \]+\[^\n\]*btt_info" 1 } } */
diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-enum-small.c b/gcc/testsuite/gcc.dg/debug/btf/btf-enum-small.c
index eb8a1bd..ccc92c9 100644
--- a/gcc/testsuite/gcc.dg/debug/btf/btf-enum-small.c
+++ b/gcc/testsuite/gcc.dg/debug/btf/btf-enum-small.c
@@ -1,7 +1,7 @@
/* Test BTF generation for small enums. */
/* { dg-do compile } */
-/* { dg-options "-O2 -gbtf -dA" } */
+/* { dg-options "-O2 -gbtf -gno-strict-dwarf -dA" } */
/* { dg-final { scan-assembler-not "bte_value_lo32" } } */
/* { dg-final { scan-assembler-not "bte_value_hi32" } } */
diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-enum64-1.c b/gcc/testsuite/gcc.dg/debug/btf/btf-enum64-1.c
index 5d1487c..3ba885a 100644
--- a/gcc/testsuite/gcc.dg/debug/btf/btf-enum64-1.c
+++ b/gcc/testsuite/gcc.dg/debug/btf/btf-enum64-1.c
@@ -1,7 +1,7 @@
/* Test BTF generation for 64 bits enums. */
/* { dg-do compile } */
-/* { dg-options "-O0 -gbtf -dA" } */
+/* { dg-options "-O0 -gbtf -gno-strict-dwarf -dA" } */
/* { dg-final { scan-assembler-times "\[\t \].size\[\t \]_?myenum1,\[\t \]8" 1 } } */
/* { dg-final { scan-assembler-times "\[\t \].size\[\t \]_?myenum2,\[\t \]8" 1 } } */
diff --git a/gcc/testsuite/gcc.dg/debug/pr112718.c b/gcc/testsuite/gcc.dg/debug/pr112718.c
new file mode 100644
index 0000000..ff80ca5
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/pr112718.c
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target lto } */
+/* { dg-options "-g -fdebug-types-section -flto -ffat-lto-objects" } */
+
+struct {
+ int h;
+ unsigned char data[20 + 24 * 6];
+} _EC_X9_62_PRIME_192V2;
+struct {
+ int h;
+ unsigned char data[20 + 24 * 6];
+} _EC_X9_62_PRIME_192V3;
diff --git a/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-1.c b/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-1.c
index f2f6d47..641d418 100644
--- a/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-1.c
+++ b/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-1.c
@@ -1,5 +1,5 @@
/* Test non-canonical BID significands: _Decimal128. Bug 91226. */
-/* { dg-do run { target lp64 } } */
+/* { dg-do run { target { lp64 && dfprt } } } */
/* { dg-require-effective-target dfp_bid } */
/* { dg-options "-std=gnu23 -O2" } */
diff --git a/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-2.c b/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-2.c
index ba4b9cd..d2eedce 100644
--- a/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-2.c
+++ b/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-2.c
@@ -1,6 +1,6 @@
/* Test non-canonical BID significands: _Decimal128, case where
combination field starts 11. Bug 91226. */
-/* { dg-do run { target lp64 } } */
+/* { dg-do run { target { lp64 && dfprt } } } */
/* { dg-require-effective-target dfp_bid } */
/* { dg-options "-std=gnu23 -O2" } */
diff --git a/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-3.c b/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-3.c
index a16ecf8..fce415f 100644
--- a/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-3.c
+++ b/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-3.c
@@ -1,5 +1,5 @@
/* Test non-canonical BID significands: _Decimal128. Bug 91226. */
-/* { dg-do run { target lp64 } } */
+/* { dg-do run { target { lp64 && dfprt } } } */
/* { dg-require-effective-target dfp_bid } */
/* { dg-options "-std=gnu23 -O0" } */
diff --git a/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-4.c b/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-4.c
index 1504e07..05ef43d 100644
--- a/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-4.c
+++ b/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-4.c
@@ -1,6 +1,6 @@
/* Test non-canonical BID significands: _Decimal128, case where
combination field starts 11. Bug 91226. */
-/* { dg-do run { target lp64 } } */
+/* { dg-do run { target { lp64 && dfprt } } } */
/* { dg-require-effective-target dfp_bid } */
/* { dg-options "-std=gnu23 -O0" } */
diff --git a/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d32-1.c b/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d32-1.c
index 593f06b..b5f45b3 100644
--- a/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d32-1.c
+++ b/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d32-1.c
@@ -1,5 +1,4 @@
/* Test non-canonical BID significands: _Decimal32. Bug 91226. */
-/* { dg-do run } */
/* { dg-require-effective-target dfp_bid } */
/* { dg-options "-std=gnu23 -O2" } */
diff --git a/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d32-2.c b/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d32-2.c
index ae2c926..e2edb57 100644
--- a/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d32-2.c
+++ b/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d32-2.c
@@ -1,5 +1,4 @@
/* Test non-canonical BID significands: _Decimal32. Bug 91226. */
-/* { dg-do run } */
/* { dg-require-effective-target dfp_bid } */
/* { dg-options "-std=gnu23 -O0" } */
diff --git a/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d64-1.c b/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d64-1.c
index bb0cb1a..d48d830 100644
--- a/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d64-1.c
+++ b/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d64-1.c
@@ -1,5 +1,4 @@
/* Test non-canonical BID significands: _Decimal64. Bug 91226. */
-/* { dg-do run } */
/* { dg-require-effective-target dfp_bid } */
/* { dg-options "-std=gnu23 -O2" } */
diff --git a/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d64-2.c b/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d64-2.c
index 1375ab5..feda104 100644
--- a/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d64-2.c
+++ b/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d64-2.c
@@ -1,5 +1,4 @@
/* Test non-canonical BID significands: _Decimal64. Bug 91226. */
-/* { dg-do run } */
/* { dg-require-effective-target dfp_bid } */
/* { dg-options "-std=gnu23 -O0" } */
diff --git a/gcc/testsuite/gcc.dg/dfp/builtin-snan-1.c b/gcc/testsuite/gcc.dg/dfp/builtin-snan-1.c
index 49a32c8..759e9e8 100644
--- a/gcc/testsuite/gcc.dg/dfp/builtin-snan-1.c
+++ b/gcc/testsuite/gcc.dg/dfp/builtin-snan-1.c
@@ -1,6 +1,5 @@
/* Test __builtin_nansd* functions. Test not requiring runtime
exceptions support. */
-/* { dg-do run } */
/* { dg-options "" } */
volatile _Decimal32 d32 = __builtin_nansd32 ("");
diff --git a/gcc/testsuite/gcc.dg/dfp/builtin-tgmath-dfp.c b/gcc/testsuite/gcc.dg/dfp/builtin-tgmath-dfp.c
index 256a71e..17e424d 100644
--- a/gcc/testsuite/gcc.dg/dfp/builtin-tgmath-dfp.c
+++ b/gcc/testsuite/gcc.dg/dfp/builtin-tgmath-dfp.c
@@ -1,5 +1,4 @@
/* Test __builtin_tgmath: valid uses, decimal floating-point types. */
-/* { dg-do run } */
/* { dg-options "" } */
extern void abort (void);
diff --git a/gcc/testsuite/gcc.dg/dfp/c23-float-dfp-4.c b/gcc/testsuite/gcc.dg/dfp/c23-float-dfp-4.c
index d7d04bd..fbd52ce 100644
--- a/gcc/testsuite/gcc.dg/dfp/c23-float-dfp-4.c
+++ b/gcc/testsuite/gcc.dg/dfp/c23-float-dfp-4.c
@@ -1,5 +1,4 @@
/* Test DEC_INFINITY defined in <float.h> with DFP support. */
-/* { dg-do run } */
/* { dg-options "-std=c23" } */
#include <float.h>
diff --git a/gcc/testsuite/gcc.dg/dfp/c23-float-dfp-5.c b/gcc/testsuite/gcc.dg/dfp/c23-float-dfp-5.c
index 19a5fbb..926649c 100644
--- a/gcc/testsuite/gcc.dg/dfp/c23-float-dfp-5.c
+++ b/gcc/testsuite/gcc.dg/dfp/c23-float-dfp-5.c
@@ -1,5 +1,4 @@
/* Test DEC_NAN defined in <float.h> with DFP support. */
-/* { dg-do run } */
/* { dg-options "-std=c23" } */
#include <float.h>
diff --git a/gcc/testsuite/gcc.dg/dfp/c23-float-dfp-6.c b/gcc/testsuite/gcc.dg/dfp/c23-float-dfp-6.c
index d00c390..d6b93a2 100644
--- a/gcc/testsuite/gcc.dg/dfp/c23-float-dfp-6.c
+++ b/gcc/testsuite/gcc.dg/dfp/c23-float-dfp-6.c
@@ -2,7 +2,6 @@
quiet not signaling. (This would only actually fail for a
signaling NaN in the hardware DFP case, because the software DFP
support in libgcc does not integrate with hardware exceptions.) */
-/* { dg-do run } */
/* { dg-require-effective-target fenv_exceptions } */
/* { dg-options "-std=c23" } */
diff --git a/gcc/testsuite/gcc.dg/dfp/c23-float-dfp-7.c b/gcc/testsuite/gcc.dg/dfp/c23-float-dfp-7.c
index bc1cd4b..d08d546 100644
--- a/gcc/testsuite/gcc.dg/dfp/c23-float-dfp-7.c
+++ b/gcc/testsuite/gcc.dg/dfp/c23-float-dfp-7.c
@@ -1,5 +1,4 @@
/* Test DEC*_SNAN macros defined in <float.h> with DFP support. */
-/* { dg-do run } */
/* { dg-options "-std=c23" } */
#include <float.h>
diff --git a/gcc/testsuite/gcc.dg/dfp/pr108068.c b/gcc/testsuite/gcc.dg/dfp/pr108068.c
index 6cbb0fb..a8798e9 100644
--- a/gcc/testsuite/gcc.dg/dfp/pr108068.c
+++ b/gcc/testsuite/gcc.dg/dfp/pr108068.c
@@ -1,5 +1,4 @@
/* PR tree-optimization/108068 */
-/* { dg-do run } */
/* { dg-options "-O2" } */
int
diff --git a/gcc/testsuite/gcc.dg/dfp/pr97439.c b/gcc/testsuite/gcc.dg/dfp/pr97439.c
index 7fcf834..c651ec2 100644
--- a/gcc/testsuite/gcc.dg/dfp/pr97439.c
+++ b/gcc/testsuite/gcc.dg/dfp/pr97439.c
@@ -1,4 +1,3 @@
-// { dg-do run }
// { dg-options "-O1" }
static int
diff --git a/gcc/testsuite/gcc.dg/fail_always_inline.c b/gcc/testsuite/gcc.dg/fail_always_inline.c
index 86645b8..16a549c 100644
--- a/gcc/testsuite/gcc.dg/fail_always_inline.c
+++ b/gcc/testsuite/gcc.dg/fail_always_inline.c
@@ -2,7 +2,7 @@
/* { dg-add-options bind_pic_locally } */
extern __attribute__ ((always_inline)) void
- bar() { } /* { dg-warning "function might not be inlinable" } */
+ bar() { } /* { dg-warning "function might not be inlinable unless also declared .inline." } */
void
f()
diff --git a/gcc/testsuite/gcc.dg/ipa/iinline-4.c b/gcc/testsuite/gcc.dg/ipa/iinline-4.c
index f50ffa5..c78163d 100644
--- a/gcc/testsuite/gcc.dg/ipa/iinline-4.c
+++ b/gcc/testsuite/gcc.dg/ipa/iinline-4.c
@@ -214,7 +214,7 @@ int test7 (void)
/* { dg-final { scan-ipa-dump "hooray1\[^\\n\]*inline copy in test1" "inline" } } */
/* { dg-final { scan-ipa-dump "hooray2\[^\\n\]*inline copy in test2" "inline" } } */
/* { dg-final { scan-ipa-dump "hooray3\[^\\n\]*inline copy in test3" "inline" } } */
-/* { dg-final { scan-ipa-dump "hooray4\[^\\n\]*inline copy in test4" "inline" { xfail { { hppa*-*-* } && { ! lp64 } } } } } */
+/* { dg-final { scan-ipa-dump "hooray4\[^\\n\]*inline copy in test4" "inline" } } */
/* { dg-final { scan-ipa-dump "hooray5\[^\\n\]*inline copy in test5" "inline" } } */
/* { dg-final { scan-ipa-dump "hooray6\[^\\n\]*inline copy in test6" "inline" } } */
/* { dg-final { scan-ipa-dump "hooray7\[^\\n\]*inline copy in test7" "inline" } } */
diff --git a/gcc/testsuite/gcc.dg/ipa/inline-5.c b/gcc/testsuite/gcc.dg/ipa/inline-5.c
index 559e258..390ba49 100644
--- a/gcc/testsuite/gcc.dg/ipa/inline-5.c
+++ b/gcc/testsuite/gcc.dg/ipa/inline-5.c
@@ -34,5 +34,5 @@ accessreference (struct a *a)
/* Will be eliminated by inlining */
}
-/* { dg-final { scan-ipa-dump-times "Will be eliminated" 4 "fnsummary" { xfail { { hppa*-*-* } && { ! lp64 } } } } } */
+/* { dg-final { scan-ipa-dump-times "Will be eliminated" 4 "fnsummary" } } */
/* { dg-final { scan-ipa-dump-times "50. will be eliminated" 1 "fnsummary" } } */
diff --git a/gcc/testsuite/gcc.dg/ipa/ipcp-cstagg-7.c b/gcc/testsuite/gcc.dg/ipa/ipcp-cstagg-7.c
index b08c420..6af8bda 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipcp-cstagg-7.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipcp-cstagg-7.c
@@ -62,4 +62,4 @@ h (int x)
return bar (s, x);
}
-/* { dg-final { scan-ipa-dump-times "Discovered an indirect call to a known target" 3 "cp" { xfail { hppa*-*-* && { ! lp64 } } } } } */
+/* { dg-final { scan-ipa-dump-times "Discovered an indirect call to a known target" 3 "cp" } } */
diff --git a/gcc/testsuite/gcc.dg/ipa/pr108007.c b/gcc/testsuite/gcc.dg/ipa/pr108007.c
new file mode 100644
index 0000000..77fc959
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/ipa/pr108007.c
@@ -0,0 +1,32 @@
+/* { dg-do run } */
+/* { dg-options "-Os -fno-dce -fno-tree-dce -g" } */
+
+/* This tests that when IPA-SRA removes a LHS of a call statement which, in the
+ original source, is fed into a useless operation which however can trap when
+ given nonsensical input, that we remove it even when the user has turned off
+ normal DCE. */
+
+int a, b, d, e, f = 10000000, h;
+short c, g;
+static int *i() {
+ g = f;
+ L:
+ h = e = ~g;
+ g = ~f % g & e;
+ if (!g)
+ goto L;
+ c++;
+ while (g < 1)
+ ;
+ return &a;
+}
+static void k() {
+ int *l, m = 2;
+ l = i();
+ for (; d < 1; d++)
+ m |= *l >= b;
+}
+int main() {
+ k();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/ipa/pr112616.c b/gcc/testsuite/gcc.dg/ipa/pr112616.c
new file mode 100644
index 0000000..5f730da
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/ipa/pr112616.c
@@ -0,0 +1,28 @@
+/* { dg-do run } */
+/* { dg-options "-O2" } */
+
+unsigned a;
+int b, d, e, f = 2, g, h = 1, *i = &b;
+volatile int c = 1;
+static int *o() {
+ long m = ~a;
+ int j = f / b, k = f - 1, n = m << -1 / ~g / k;
+ if (j && n)
+ c;
+ return &e;
+}
+static long p() {
+ int *q = 0, **r = &q;
+ if (c) {
+ *i = h;
+ *r = o();
+ }
+ return *q;
+}
+int main() {
+ p();
+ int *l = 0;
+ if (d)
+ c = *l;
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/ipa/pr113490.c b/gcc/testsuite/gcc.dg/ipa/pr113490.c
new file mode 100644
index 0000000..526e22b
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/ipa/pr113490.c
@@ -0,0 +1,31 @@
+/* { dg-do compile { target int128 } } */
+/* { dg-options "-O3 -Wno-psabi" } */
+
+typedef char A __attribute__((vector_size (64)));
+typedef short B __attribute__((vector_size (64)));
+typedef unsigned C __attribute__((vector_size (64)));
+typedef long D __attribute__((vector_size (64)));
+typedef __int128 E __attribute__((vector_size (64)));
+
+D bar1_D_0;
+E bar4 (A, D);
+
+E
+bar1 (C C_0)
+{
+ C_0 >>= 1;
+ bar4 ((A) C_0, bar1_D_0);
+ bar4 ((A) (E) {~0 }, (D) (A){ ~0 });
+ bar4 ((A) (B) { ~0 }, (D) (C) { ~0 });
+ bar1 ((C) (D) { 0, ~0});
+ bar4 ((A) C_0, bar1_D_0);
+ (A) { bar1 ((C) { 7})[5] - C_0[63], bar4 ((A) (D) {~0}, (D) (C) { 0, ~0})[3]};
+}
+
+E
+bar4 (A A_0, D D_0)
+{
+ bar1 ((C) A_0);
+ bar1 ((C) {5});
+ bar1 ((C) D_0);
+}
diff --git a/gcc/testsuite/gcc.dg/pic-2.c b/gcc/testsuite/gcc.dg/pic-2.c
index 2426053..0746846 100644
--- a/gcc/testsuite/gcc.dg/pic-2.c
+++ b/gcc/testsuite/gcc.dg/pic-2.c
@@ -3,6 +3,7 @@
/* { dg-options "-fPIC" } */
/* { dg-skip-if "__PIC__ is always 1 for MIPS" { mips*-*-* } } */
/* { dg-skip-if "__PIE__ is always defined for GCN" { amdgcn*-*-* } } */
+/* { dg-skip-if "__PIE__ is always defined for hppa64" { hppa*64*-*-* } } */
#if defined(__CYGWIN__) || defined(__WIN32__)
# if __PIC__ != 1
diff --git a/gcc/testsuite/gcc.dg/plugin/analyzer_kernel_plugin.c b/gcc/testsuite/gcc.dg/plugin/analyzer_kernel_plugin.c
index 02dba7a..5a32f8c 100644
--- a/gcc/testsuite/gcc.dg/plugin/analyzer_kernel_plugin.c
+++ b/gcc/testsuite/gcc.dg/plugin/analyzer_kernel_plugin.c
@@ -209,6 +209,22 @@ public:
}
};
+/* Implementation of "__check_object_size". */
+
+class known_function___check_object_size : public known_function
+{
+ public:
+ bool matches_call_types_p (const call_details &cd) const final override
+ {
+ return cd.num_args () == 2;
+ }
+
+ void impl_call_pre (const call_details &) const final override
+ {
+ /* No-op. */
+ }
+};
+
/* Callback handler for the PLUGIN_ANALYZER_INIT event. */
static void
@@ -224,6 +240,8 @@ kernel_analyzer_init_cb (void *gcc_data, void */*user_data*/)
make_unique<known_function_copy_from_user> ());
iface->register_known_function ("copy_to_user",
make_unique<known_function_copy_to_user> ());
+ iface->register_known_function ("__check_object_size",
+ make_unique<known_function___check_object_size> ());
}
} // namespace ana
diff --git a/gcc/testsuite/gcc.dg/plugin/infoleak-pr112969.c b/gcc/testsuite/gcc.dg/plugin/infoleak-pr112969.c
new file mode 100644
index 0000000..e78fe36
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/plugin/infoleak-pr112969.c
@@ -0,0 +1,52 @@
+/* Reduced from -Wanalyzer-exposure-through-uninit-copy false positives
+ seen in Linux kernel in drivers/net/ethernet/intel/ice/ice_ptp.c */
+
+/* { dg-do compile } */
+/* { dg-options "-fanalyzer" } */
+/* { dg-require-effective-target analyzer } */
+
+extern unsigned long
+copy_from_user(void* to, const void* from, unsigned long n);
+
+extern unsigned long
+copy_to_user(void* to, const void* from, unsigned long n);
+
+struct ifreq
+{
+ union
+ {
+ void* ifru_data;
+ } ifr_ifru;
+};
+
+struct hwtstamp_config
+{
+ int flags;
+ int tx_type;
+ int rx_filter;
+};
+
+struct ice_ptp
+{
+ long placeholder;
+ struct hwtstamp_config tstamp_config;
+};
+
+struct ice_pf
+{
+ struct ice_ptp ptp;
+};
+int
+ice_ptp_set_ts_config(struct ice_pf* pf, struct ifreq* ifr)
+{
+ struct hwtstamp_config config;
+ int err;
+ if (copy_from_user(&config, ifr->ifr_ifru.ifru_data, sizeof(config)))
+ return -14;
+ pf->ptp.tstamp_config.tx_type = 0;
+ pf->ptp.tstamp_config.rx_filter = 0;
+ config = pf->ptp.tstamp_config;
+ if (copy_to_user(ifr->ifr_ifru.ifru_data, &config, sizeof(config))) /* { dg-bogus "-Wanalyzer-exposure-through-uninit-copy" "PR analyzer/112969" } */
+ return -14;
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/plugin/plugin.exp b/gcc/testsuite/gcc.dg/plugin/plugin.exp
index b3782f9..c26dda1 100644
--- a/gcc/testsuite/gcc.dg/plugin/plugin.exp
+++ b/gcc/testsuite/gcc.dg/plugin/plugin.exp
@@ -150,6 +150,7 @@ set plugin_test_list [list \
infoleak-CVE-2017-18550-1.c \
infoleak-antipatterns-1.c \
infoleak-fixit-1.c \
+ infoleak-pr112969.c \
infoleak-uninit-size-1.c \
infoleak-uninit-size-2.c \
infoleak-net-ethtool-ioctl.c \
@@ -169,7 +170,9 @@ set plugin_test_list [list \
taint-pr112850.c \
taint-pr112850-precise.c \
taint-pr112850-too-complex.c \
- taint-pr112850-unsanitized.c } \
+ taint-pr112850-unsanitized.c \
+ taint-pr112927.c \
+ taint-pr112977.c } \
{ analyzer_cpython_plugin.c \
cpython-plugin-test-no-Python-h.c \
cpython-plugin-test-PyList_Append.c \
diff --git a/gcc/testsuite/gcc.dg/plugin/taint-pr112927.c b/gcc/testsuite/gcc.dg/plugin/taint-pr112927.c
new file mode 100644
index 0000000..9c3f7ab
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/plugin/taint-pr112927.c
@@ -0,0 +1,49 @@
+/* Reduced from false positive in Linux kernel
+ in drivers/char/ipmi/ipmi_devintf.c. */
+
+/* { dg-do compile } */
+/* { dg-options "-fanalyzer -O2 -Wno-attributes" } */
+/* { dg-require-effective-target analyzer } */
+
+typedef __SIZE_TYPE__ size_t;
+extern void
+__check_object_size(const void* ptr, unsigned long n);
+
+extern unsigned long
+copy_from_user(void*, const void*, unsigned long);
+
+__attribute__((__always_inline__)) unsigned long
+call_copy_from_user(void* to, const void* from, unsigned long n)
+{
+ __check_object_size(to, n);
+ n = copy_from_user(to, from, n); /* { dg-bogus "use of attacker-controlled value as size without upper-bounds checking" } */
+ return n;
+}
+struct ipmi_msg
+{
+ unsigned short data_len;
+ unsigned char* data;
+};
+
+static int
+handle_send_req(struct ipmi_msg* msg)
+{
+ char buf[273];
+ if (msg->data_len > 272) {
+ return -90;
+ }
+ if (call_copy_from_user(buf, msg->data, msg->data_len)) {
+ return -14;
+ }
+ return 0;
+}
+long
+ipmi_ioctl(void* arg)
+{
+ struct ipmi_msg msg;
+ if (call_copy_from_user(&msg, arg, sizeof(msg))) {
+ return -14;
+ }
+
+ return handle_send_req(&msg);
+}
diff --git a/gcc/testsuite/gcc.dg/plugin/taint-pr112977.c b/gcc/testsuite/gcc.dg/plugin/taint-pr112977.c
new file mode 100644
index 0000000..a9beb00
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/plugin/taint-pr112977.c
@@ -0,0 +1,44 @@
+/* Reduced from false positive in Linux kernel in
+ drivers/scsi/aacraid/aachba.c. */
+
+/* { dg-do compile } */
+/* { dg-options "-fanalyzer" } */
+/* { dg-require-effective-target analyzer } */
+
+typedef unsigned char u8;
+typedef unsigned int u32;
+
+extern unsigned long
+copy_from_user(void* to, const void* from, unsigned long n);
+
+struct fsa_dev_info
+{
+ u8 valid;
+ u8 deleted;
+};
+struct aac_dev
+{
+ int maximum_num_containers;
+ struct fsa_dev_info* fsa_dev;
+};
+struct aac_delete_disk
+{
+ u32 disknum;
+ u32 cnum;
+};
+int
+force_delete_disk(struct aac_dev* dev, void* arg)
+{
+ struct aac_delete_disk dd;
+ struct fsa_dev_info* fsa_dev_ptr;
+ fsa_dev_ptr = dev->fsa_dev;
+ if (!fsa_dev_ptr)
+ return -16;
+ if (copy_from_user(&dd, arg, sizeof(struct aac_delete_disk)))
+ return -14;
+ if (dd.cnum >= dev->maximum_num_containers)
+ return -22;
+ fsa_dev_ptr[dd.cnum].deleted = 1;
+ fsa_dev_ptr[dd.cnum].valid = 0; /* { dg-bogus "use of attacker-controlled value as offset without upper-bounds checking" } */
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/pr101195.c b/gcc/testsuite/gcc.dg/pr101195.c
new file mode 100644
index 0000000..7b219f8
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr101195.c
@@ -0,0 +1,8 @@
+/* PR middle-end/101195 */
+/* { dg-do compile } */
+
+int
+foo (void)
+{
+ return __builtin_eh_return_data_regno (-42);
+}
diff --git a/gcc/testsuite/gcc.dg/pr105522.c b/gcc/testsuite/gcc.dg/pr105522.c
new file mode 100644
index 0000000..186cd60
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr105522.c
@@ -0,0 +1,17 @@
+/* { dg-do compile { target *-*-darwin* } } */
+typedef const struct __CFString * CFStringRef;
+
+/* This used to ICE on powerpc darwin, in decode_addr_const. */
+const void
+* create_usage_match(const unsigned int page, const unsigned int usage, int
+*okay)
+{
+
+ const void *keys[2] =
+ { (void *) ((CFStringRef) __builtin___CFStringMakeConstantString (""
+ "DeviceUsagePage" ""))
+ , (void *) ((CFStringRef) __builtin___CFStringMakeConstantString (""
+ "DeviceUsage" ""))
+ };
+ return keys[1];
+}
diff --git a/gcc/testsuite/gcc.dg/pr113445.c b/gcc/testsuite/gcc.dg/pr113445.c
new file mode 100644
index 0000000..8e24ddf
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr113445.c
@@ -0,0 +1,61 @@
+/* PR bootstrap/113445 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fcompare-debug -Wno-uninitialized" } */
+
+enum E { F };
+int *a, *b, *c, *d, e, f, g, h, i;
+int *f1 (int *);
+int *f2 (...);
+int *f3 (int *, int);
+int *f4 (unsigned, int);
+int *f5 (enum E, int);
+int *f6 (int, int);
+enum E j;
+
+void
+f7 (void)
+{
+ int *k, *l, *m, *n, *o, *p, *q, *r, *s, *t, *u, *v, w, x, y, z, aa;
+ v = f6 (0, 1);
+ u = d;
+ t = c;
+ s = a;
+ f4 (f, 1);
+ f4 (f, 1);
+ int *ab = f4 (f, 1);
+ k = b;
+ int ac = *f3 (&e, F);
+ r = f1 (&ac);
+ int ad = *f3 (&e, F);
+ f1 (&ad);
+ q = f5 (j, 0);
+ p = f1 (t);
+ f1 (o);
+ f2 ();
+ f2 ();
+ f2 ();
+ f2 ();
+ f2 ();
+ f2 ();
+ f2 (z, z);
+ f2 ();
+ f2 ();
+ f2 ();
+ f1 (&h);
+ f2 (z, k, ab, aa, r, g, (void *) 0);
+ f2 (aa, w, &aa, r, k, (void *) 0);
+ f2 (q, (void *) 0);
+ f2 ();
+ f2 (&aa, s, r, o, o, z, (void *) 0);
+ n = f2 (s, (void *) 0);
+ f2 (v, u, p, t, p, p, (void *) 0);
+ m = f2 (v, u, x, y, x, x, (void *) 0);
+ l = f2 (v);
+ f2 (v, s);
+ f2 (t, u);
+ f2 (&aa, i, o, t, t, t, t);
+ f2 (v, u, x, t, y, x, x, o, t, t, t, t, t);
+ f2 (t);
+ f2 (t, t, t, t, t, t, t, z, y);
+ f2 (t, l, m, n);
+}
diff --git a/gcc/testsuite/gcc.dg/pr113492.c b/gcc/testsuite/gcc.dg/pr113492.c
new file mode 100644
index 0000000..56296c5
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr113492.c
@@ -0,0 +1,43 @@
+/* PR 113492
+ * { dg-do compile }
+ * { dg-options "-std=c23 -funsigned-bitfields" } */
+
+struct foo {
+ int i : 3;
+} i;
+
+void test()
+{
+ struct foo {
+ unsigned i : 3;
+ } u;
+
+ 1 ? i : u;
+ 1 ? u : i;
+}
+
+struct bar {
+ unsigned i : 3;
+} u;
+
+void test2()
+{
+ struct bar {
+ int i : 3;
+ } i;
+
+ 1 ? i : u;
+ 1 ? u : i;
+}
+
+void test3()
+{
+ typedef int myint;
+ struct bar {
+ myint i : 3;
+ } i;
+
+ 1 ? i : u;
+ 1 ? u : i;
+}
+
diff --git a/gcc/testsuite/gcc.dg/pr113602.c b/gcc/testsuite/gcc.dg/pr113602.c
new file mode 100644
index 0000000..94bfbc9
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr113602.c
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target bitint575 } */
+/* { dg-options "-O2 -fno-tree-loop-optimize" } */
+
+_BitInt(503)
+f(void)
+{
+ register _BitInt(503) r asm(""); /* { dg-error "invalid" } */
+ return r;
+}
diff --git a/gcc/testsuite/gcc.dg/pr113659.c b/gcc/testsuite/gcc.dg/pr113659.c
new file mode 100644
index 0000000..dc1091b
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr113659.c
@@ -0,0 +1,14 @@
+/* { dg-do compile } */
+/* { dg-options "-O3 -fno-tree-sra" } */
+/* { dg-additional-options "-msse4.1" { target { x86_64-*-* i?86-*-* } } } */
+
+struct Foo {
+ int *ptr;
+};
+int Baz(struct Foo first)
+{
+ while (first.ptr)
+ if (*first.ptr++)
+ return 0;
+ __builtin_unreachable ();
+}
diff --git a/gcc/testsuite/gcc.dg/pr84877.c b/gcc/testsuite/gcc.dg/pr84877.c
index d1fb847..6868120 100644
--- a/gcc/testsuite/gcc.dg/pr84877.c
+++ b/gcc/testsuite/gcc.dg/pr84877.c
@@ -1,4 +1,4 @@
-/* { dg-do run { xfail { cris-*-* hppa*-*-* sparc*-*-* } } } */
+/* { dg-do run { xfail { cris-*-* sparc*-*-* } || { { ! lp64 } && hppa*-*-* } } } */
/* { dg-options "-O2" } */
#include <inttypes.h>
diff --git a/gcc/testsuite/gcc.dg/pthread-init-2.c b/gcc/testsuite/gcc.dg/pthread-init-2.c
index d7cd66b..c934fb5 100644
--- a/gcc/testsuite/gcc.dg/pthread-init-2.c
+++ b/gcc/testsuite/gcc.dg/pthread-init-2.c
@@ -7,7 +7,8 @@
/* { dg-do compile } */
/* { dg-require-effective-target pthread_h } */
/* { dg-options "-Wextra -Wall -ansi" } */
-/* { dg-options "-Wextra -Wall -ansi -D_POSIX_C_SOURCE=199506L" { target { *-*-hpux* } } } */
+/* We need to define _HPUX_SOURCE on hpux11.11 for id_t and spu_t types. */
+/* { dg-options "-Wextra -Wall -ansi -D_HPUX_SOURCE" { target { *-*-hpux* } } } */
/* { dg-options "-Wextra -Wall -ansi -D_XOPEN_SOURCE=500" { target { powerpc-ibm-aix* } } } */
/* The definition of PTHREAD_MUTEX_INITIALIZER is missing an initializer for
mutexAttr.mutexAttrType in kernel mode for various VxWorks versions. */
diff --git a/gcc/testsuite/gcc.dg/signbit-2.c b/gcc/testsuite/gcc.dg/signbit-2.c
index 62bb404..5511bb7 100644
--- a/gcc/testsuite/gcc.dg/signbit-2.c
+++ b/gcc/testsuite/gcc.dg/signbit-2.c
@@ -5,6 +5,7 @@
/* { dg-additional-options "-msse2 -mno-avx512f" { target { i?86-*-* x86_64-*-* } } } */
/* { dg-additional-options "-march=armv8-a" { target aarch64_sve } } */
/* { dg-additional-options "-maltivec" { target powerpc_altivec_ok } } */
+/* { dg-additional-options "-mlsx" { target loongarch_sx } } */
/* { dg-skip-if "no fallback for MVE" { arm_mve } } */
#include <stdint.h>
diff --git a/gcc/testsuite/gcc.dg/torture/bitint-51.c b/gcc/testsuite/gcc.dg/torture/bitint-51.c
new file mode 100644
index 0000000..4c9ebc3
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/bitint-51.c
@@ -0,0 +1,88 @@
+/* PR tree-optimization/113491 */
+/* { dg-do run { target bitint } } */
+/* { dg-options "-std=c23 -pedantic-errors" } */
+/* { dg-skip-if "" { ! run_expensive_tests } { "*" } { "-O0" "-O2" } } */
+/* { dg-skip-if "" { ! run_expensive_tests } { "-flto" } { "" } } */
+
+#if __BITINT_MAXWIDTH__ >= 2022
+long a;
+_BitInt (2022) b;
+
+__attribute__((noipa)) void
+foo (void)
+{
+ long e;
+ switch (b)
+ {
+ case 236881099392745653949476092019254703673343952653001806909505866172387514585208299669392000424755912461093218145058550533815207769064511922933470022995816097769135032744756688849360373090388143543095880516133276503510437474354615271669000583762291950374253494970691499065905744428004707234072154531557724197892702081481886955739280363415482836575783505023297999635820743287218509451775188374692338715173350419479853664808666850654180398109587878293637547258643044750595201236843385276543354061680674360041173237330198483330996131123489419291470122643730353591015638976897743657130063384289745055875469886904587wb:
+ e = 28;
+ break;
+ case 236881099392745653949476092019254703673343952653001806909505866172387514585208299669392000424755912461093218145058550533815207769064511922933470022995816097769135032744756688849360373090388143543095880516133276503510437474354615271669000583762291950374253494970691499065905744428004707234072154531557724197892702081481886955739280363415482836575783505023297999635820743287218509451775188374692338715173350419479853664808666850654180398109587878293637547258643044750595201236843385276543354061680674360041173237330198483330996131123489419291470122643730353591015638976897743657130063384289745055875469886904590wb:
+ e = 6;
+ break;
+ case 236881099392745653949476092019254703673343952653001806909505866172387514585208299669392000424755912461093218145058550533815207769064511922933470022995816097769135032744756688849360373090388143543095880516133276503510437474354615271669000583762291950374253494970691499065905744428004707234072154531557724197892702081481886955739280363415482836575783505023297999635820743287218509451775188374692338715173350419479853664808666850654180398109587878293637547258643044750595201236843385276543354061680674360041173237330198483330996131123489419291470122643730353591015638976897743657130063384289745055875469886904607wb:
+ e = 7;
+ break;
+ default:
+ e = 8;
+ break;
+ }
+ a = e;
+}
+#endif
+
+int
+main ()
+{
+#if __BITINT_MAXWIDTH__ >= 2022
+ b = 42wb;
+ foo ();
+ if (a != 8)
+ __builtin_abort ();
+ b = 236881099392745653949476092019254703673343952653001806909505866172387514585208299669392000424755912461093218145058550533815207769064511922933470022995816097769135032744756688849360373090388143543095880516133276503510437474354615271669000583762291950374253494970691499065905744428004707234072154531557724197892702081481886955739280363415482836575783505023297999635820743287218509451775188374692338715173350419479853664808666850654180398109587878293637547258643044750595201236843385276543354061680674360041173237330198483330996131123489419291470122643730353591015638976897743657130063384289745055875469886904586wb;
+ foo ();
+ if (a != 8)
+ __builtin_abort ();
+ b = 236881099392745653949476092019254703673343952653001806909505866172387514585208299669392000424755912461093218145058550533815207769064511922933470022995816097769135032744756688849360373090388143543095880516133276503510437474354615271669000583762291950374253494970691499065905744428004707234072154531557724197892702081481886955739280363415482836575783505023297999635820743287218509451775188374692338715173350419479853664808666850654180398109587878293637547258643044750595201236843385276543354061680674360041173237330198483330996131123489419291470122643730353591015638976897743657130063384289745055875469886904587wb;
+ foo ();
+ if (a != 28)
+ __builtin_abort ();
+ b = 236881099392745653949476092019254703673343952653001806909505866172387514585208299669392000424755912461093218145058550533815207769064511922933470022995816097769135032744756688849360373090388143543095880516133276503510437474354615271669000583762291950374253494970691499065905744428004707234072154531557724197892702081481886955739280363415482836575783505023297999635820743287218509451775188374692338715173350419479853664808666850654180398109587878293637547258643044750595201236843385276543354061680674360041173237330198483330996131123489419291470122643730353591015638976897743657130063384289745055875469886904588wb;
+ foo ();
+ if (a != 8)
+ __builtin_abort ();
+ b = 236881099392745653949476092019254703673343952653001806909505866172387514585208299669392000424755912461093218145058550533815207769064511922933470022995816097769135032744756688849360373090388143543095880516133276503510437474354615271669000583762291950374253494970691499065905744428004707234072154531557724197892702081481886955739280363415482836575783505023297999635820743287218509451775188374692338715173350419479853664808666850654180398109587878293637547258643044750595201236843385276543354061680674360041173237330198483330996131123489419291470122643730353591015638976897743657130063384289745055875469886904589wb;
+ foo ();
+ if (a != 8)
+ __builtin_abort ();
+ b = 236881099392745653949476092019254703673343952653001806909505866172387514585208299669392000424755912461093218145058550533815207769064511922933470022995816097769135032744756688849360373090388143543095880516133276503510437474354615271669000583762291950374253494970691499065905744428004707234072154531557724197892702081481886955739280363415482836575783505023297999635820743287218509451775188374692338715173350419479853664808666850654180398109587878293637547258643044750595201236843385276543354061680674360041173237330198483330996131123489419291470122643730353591015638976897743657130063384289745055875469886904590wb;
+ foo ();
+ if (a != 6)
+ __builtin_abort ();
+ b = 236881099392745653949476092019254703673343952653001806909505866172387514585208299669392000424755912461093218145058550533815207769064511922933470022995816097769135032744756688849360373090388143543095880516133276503510437474354615271669000583762291950374253494970691499065905744428004707234072154531557724197892702081481886955739280363415482836575783505023297999635820743287218509451775188374692338715173350419479853664808666850654180398109587878293637547258643044750595201236843385276543354061680674360041173237330198483330996131123489419291470122643730353591015638976897743657130063384289745055875469886904591wb;
+ foo ();
+ if (a != 8)
+ __builtin_abort ();
+ b = 236881099392745653949476092019254703673343952653001806909505866172387514585208299669392000424755912461093218145058550533815207769064511922933470022995816097769135032744756688849360373090388143543095880516133276503510437474354615271669000583762291950374253494970691499065905744428004707234072154531557724197892702081481886955739280363415482836575783505023297999635820743287218509451775188374692338715173350419479853664808666850654180398109587878293637547258643044750595201236843385276543354061680674360041173237330198483330996131123489419291470122643730353591015638976897743657130063384289745055875469886904606wb;
+ foo ();
+ if (a != 8)
+ __builtin_abort ();
+ b = 236881099392745653949476092019254703673343952653001806909505866172387514585208299669392000424755912461093218145058550533815207769064511922933470022995816097769135032744756688849360373090388143543095880516133276503510437474354615271669000583762291950374253494970691499065905744428004707234072154531557724197892702081481886955739280363415482836575783505023297999635820743287218509451775188374692338715173350419479853664808666850654180398109587878293637547258643044750595201236843385276543354061680674360041173237330198483330996131123489419291470122643730353591015638976897743657130063384289745055875469886904607wb;
+ foo ();
+ if (a != 7)
+ __builtin_abort ();
+ b = 236881099392745653949476092019254703673343952653001806909505866172387514585208299669392000424755912461093218145058550533815207769064511922933470022995816097769135032744756688849360373090388143543095880516133276503510437474354615271669000583762291950374253494970691499065905744428004707234072154531557724197892702081481886955739280363415482836575783505023297999635820743287218509451775188374692338715173350419479853664808666850654180398109587878293637547258643044750595201236843385276543354061680674360041173237330198483330996131123489419291470122643730353591015638976897743657130063384289745055875469886904608wb;
+ foo ();
+ if (a != 8)
+ __builtin_abort ();
+ b = 240780458385579342400393461351617812815637161357071131707208942081962936661153218844512115504763375697200879163458183553026017242301187821441055479544760906104973534996069938628004474568289906582206917095065620305216254432816950650228843795794816095162791355341943390986975847866692139272448065870433527123346286515814575123941041341323886584452213168407427683905346733773730890398535581783579726464034446453496393589067919979673611753823620422962335479358086639875375670825770647896268644196740771259886611570273762180917307714137084771977480688440721015151914970095703226362506437887288273484956889253937151wb;
+ foo ();
+ if (a != 8)
+ __builtin_abort ();
+ b = -240780458385579342400393461351617812815637161357071131707208942081962936661153218844512115504763375697200879163458183553026017242301187821441055479544760906104973534996069938628004474568289906582206917095065620305216254432816950650228843795794816095162791355341943390986975847866692139272448065870433527123346286515814575123941041341323886584452213168407427683905346733773730890398535581783579726464034446453496393589067919979673611753823620422962335479358086639875375670825770647896268644196740771259886611570273762180917307714137084771977480688440721015151914970095703226362506437887288273484956889253937151wb;
+ foo ();
+ if (a != 8)
+ __builtin_abort ();
+#endif
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/torture/bitint-52.c b/gcc/testsuite/gcc.dg/torture/bitint-52.c
new file mode 100644
index 0000000..d2896da
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/bitint-52.c
@@ -0,0 +1,23 @@
+/* PR middle-end/113574 */
+/* { dg-do run { target bitint } } */
+/* { dg-options "-std=c23 -pedantic-errors" } */
+/* { dg-skip-if "" { ! run_expensive_tests } { "*" } { "-O0" "-O2" } } */
+/* { dg-skip-if "" { ! run_expensive_tests } { "-flto" } { "" } } */
+
+unsigned _BitInt(1) a;
+unsigned _BitInt(8) b;
+
+void
+foo (unsigned _BitInt(16) x)
+{
+ a += (x << 2) | b;
+}
+
+int
+main ()
+{
+ foo (0xfef1uwb);
+ if (a)
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/torture/bitint-54.c b/gcc/testsuite/gcc.dg/torture/bitint-54.c
new file mode 100644
index 0000000..4c80ff2
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/bitint-54.c
@@ -0,0 +1,29 @@
+/* PR tree-optimization/113614 */
+/* { dg-do run { target bitint } } */
+/* { dg-options "-std=c23 -pedantic-errors" } */
+/* { dg-skip-if "" { ! run_expensive_tests } { "*" } { "-O0" "-O2" } } */
+/* { dg-skip-if "" { ! run_expensive_tests } { "-flto" } { "" } } */
+
+_BitInt(8) a;
+_BitInt(8) b;
+_BitInt(8) c;
+
+#if __BITINT_MAXWIDTH__ >= 256
+_BitInt(256)
+foo (_BitInt(8) y, unsigned _BitInt(256) z)
+{
+ unsigned _BitInt(256) d = -y;
+ z /= d;
+ return z + a + b + c;
+}
+#endif
+
+int
+main ()
+{
+#if __BITINT_MAXWIDTH__ >= 256
+ if (foo (0xfwb, 0x24euwb))
+ __builtin_abort ();
+#endif
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/torture/no-callee-saved-run-1a.c b/gcc/testsuite/gcc.dg/torture/no-callee-saved-run-1a.c
new file mode 100644
index 0000000..8c48ec0
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/no-callee-saved-run-1a.c
@@ -0,0 +1,23 @@
+/* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-additional-sources no-callee-saved-run-1b.c } */
+
+extern void bar0 (int, int, int, int, int, int, int, int, int)
+ __attribute__ ((no_callee_saved_registers));
+
+void
+foo (void)
+{
+ bar0 (0, 1, 2, 3, 4, 5, 6, 7, 8);
+}
+
+int
+bar (int x)
+{
+ return x;
+}
+
+void
+bad (void)
+{
+ __builtin_abort ();
+}
diff --git a/gcc/testsuite/gcc.dg/torture/no-callee-saved-run-1b.c b/gcc/testsuite/gcc.dg/torture/no-callee-saved-run-1b.c
new file mode 100644
index 0000000..b3ce7e7
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/no-callee-saved-run-1b.c
@@ -0,0 +1,59 @@
+/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
+
+extern void foo (void);
+extern void bad (void);
+extern int bar (int);
+
+void
+__attribute__ ((no_callee_saved_registers))
+bar0 (int i0, int i1, int i2, int i3, int i4, int i5, int i6,
+ int i7, int i8)
+{
+ if (i0 != 0)
+ bad ();
+
+ if (i1 != 1)
+ bad ();
+
+ if (i2 != 2)
+ bad ();
+
+ if (i3 != 3)
+ bad ();
+
+ if (i4 != 4)
+ bad ();
+
+ if (i5 != 5)
+ bad ();
+
+ if (i6 != 6)
+ bad ();
+
+ if (i7 != 7)
+ bad ();
+
+ if (i8 != 8)
+ bad ();
+
+ int a,b,c,d,e,f,i;
+ a = bar (5);
+ b = bar (a);
+ c = bar (b);
+ d = bar (c);
+ e = bar (d);
+ f = bar (e);
+ for (i = 1; i < 10; i++)
+ {
+ a += bar (a + i) + bar (b + i) +
+ bar (c + i) + bar (d + i) +
+ bar (e + i) + bar (f + i);
+ }
+}
+
+int
+main ()
+{
+ foo ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pr110422.c b/gcc/testsuite/gcc.dg/torture/pr110422.c
new file mode 100644
index 0000000..2a653bd
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr110422.c
@@ -0,0 +1,10 @@
+/* { dg-do compile { target lra } } */
+
+struct T { int x; };
+int foo(void) {
+ struct T v;
+ asm goto("" : "+r"(v.x) : : : lab);
+ return 0;
+lab:
+ return -5;
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pr113255.c b/gcc/testsuite/gcc.dg/torture/pr113255.c
new file mode 100644
index 0000000..78af6a5
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr113255.c
@@ -0,0 +1,27 @@
+/* { dg-do run } */
+/* { dg-additional-options "-mtune=k8 -mstringop-strategy=rep_8byte" { target { { i?86-*-* x86_64-*-* } && { ! ia32 } } } } */
+
+struct S { unsigned a[10]; unsigned y; unsigned b[6]; } g[2];
+
+__attribute__((noinline, noclone)) int
+test (int x)
+{
+ struct S e[2] = { g[0], g[1] };
+ int r = 0;
+ if (x >= 0)
+ {
+ r++;
+ e[1].y++;
+ }
+ g[1] = e[1];
+ return r;
+}
+
+int
+main ()
+{
+ test (1);
+ if (g[1].y != 1)
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pr47917.c b/gcc/testsuite/gcc.dg/torture/pr47917.c
index 5724907..32c99c6 100644
--- a/gcc/testsuite/gcc.dg/torture/pr47917.c
+++ b/gcc/testsuite/gcc.dg/torture/pr47917.c
@@ -2,7 +2,7 @@
/* { dg-options "-std=c99" } */
/* { dg-options "-std=gnu99" { target *-*-hpux* } } */
/* { dg-additional-options "-D__USE_MINGW_ANSI_STDIO=1" { target *-*-mingw* } } */
-/* { dg-xfail-run-if "non-conforming C99 snprintf" { *-*-hpux11.[012]* } } */
+/* { dg-xfail-run-if "non-conforming C99 snprintf" { *-*-hpux11.[012]* } { "-O0" } } */
/* PR middle-end/47917 */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr95906.c b/gcc/testsuite/gcc.dg/tree-ssa/pr95906.c
index d15670f..ce43983 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/pr95906.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr95906.c
@@ -9,4 +9,4 @@ v16i8 f(v16i8 a, v16i8 b)
}
/* { dg-final { scan-tree-dump-not "bit_(and|ior)_expr" "forwprop3" } } */
-/* { dg-final { scan-tree-dump-times "max_expr" 1 "forwprop3" } } */
+/* { dg-final { scan-tree-dump-times {(?n)(?:max_expr|vec_cond_expr)} 1 "forwprop3" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/slsr-13.c b/gcc/testsuite/gcc.dg/tree-ssa/slsr-13.c
index 4133694..93749d6 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/slsr-13.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/slsr-13.c
@@ -20,5 +20,5 @@ f (int s, int c)
return x;
}
-/* { dg-final { scan-tree-dump-times " \\* 4" 2 "optimized" } } */
-/* { dg-final { scan-tree-dump-times " \\* 5" 0 "optimized" } } */
+/* { dg-final { scan-tree-dump-times " \\* 4" 2 "optimized" {xfail hppa*64*-*-* } } } */
+/* { dg-final { scan-tree-dump-times " \\* 5" 0 "optimized" {xfail hppa*64*-*-* } } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/vector-4.c b/gcc/testsuite/gcc.dg/tree-ssa/vector-4.c
index 00ddd29..982a2a4 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/vector-4.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/vector-4.c
@@ -10,7 +10,6 @@ v4si vs (v4si a, v4si b)
}
/* The compound literal should be placed directly in the vec_perm. */
-/* Test is xfailed on 32-bit hppa*-*-* because target-callee-copies. */
-/* { dg-final { scan-tree-dump-times "VEC_PERM_EXPR <a, b, { 0, 4, 1, 5 }>;" 1 "gimple" { target { ! mmix-knuth-mmixware } xfail { hppa*-*-* && { ! lp64 } } } } } */
+/* { dg-final { scan-tree-dump-times "VEC_PERM_EXPR <a, b, { 0, 4, 1, 5 }>;" 1 "gimple" { target { ! mmix-knuth-mmixware } } } } */
/* { dg-final { scan-tree-dump-times "VEC_PERM_EXPR <a::., b::., { 0, 4, 1, 5 }>;" 1 "gimple" { target mmix-knuth-mmixware } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul1-7.c b/gcc/testsuite/gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul1-7.c
index 87b943c..a8c98c4 100644
--- a/gcc/testsuite/gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul1-7.c
+++ b/gcc/testsuite/gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul1-7.c
@@ -41,7 +41,7 @@ foo (int32_t *__restrict a, int32_t *__restrict b, int32_t *__restrict c,
}
/* { dg-final { scan-assembler {e32,m1} } } */
-/* { dg-final { scan-assembler-not {csrr} } } */
+/* { dg-final { scan-assembler-not {csrr} { xfail "*-*-*" } } } */
/* { dg-final { scan-tree-dump-times "Preferring smaller LMUL loop because it has unexpected spills" 3 "vect" } } */
/* { dg-final { scan-tree-dump-times "Maximum lmul = 8" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "Maximum lmul = 4" 1 "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-7.c b/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-7.c
index 058d1d2..8704842 100644
--- a/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-7.c
+++ b/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-7.c
@@ -77,4 +77,4 @@ int main (void)
}
/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { target vect_widen_mult_hi_to_si } } } */
-/* { dg-final { scan-tree-dump-times "vect_recog_widen_mult_pattern: detected(?:(?!failed)(?!Re-trying).)*succeeded" 1 "vect" } } */
+/* { dg-final { scan-tree-dump-times "vect_recog_widen_mult_pattern: detected(?:(?!failed)(?!Re-trying).)*succeeded" 1 "vect" { target vect_widen_mult_hi_to_si } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/pr113281-1.c b/gcc/testsuite/gcc.dg/vect/pr113281-1.c
new file mode 100644
index 0000000..6df4231
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/pr113281-1.c
@@ -0,0 +1,17 @@
+#include "tree-vect.h"
+
+unsigned char a;
+
+int main() {
+ check_vect ();
+
+ short b = a = 0;
+ for (; a != 19; a++)
+ if (a)
+ b = 32872 >> a;
+
+ if (b == 0)
+ return 0;
+ else
+ return 1;
+}
diff --git a/gcc/testsuite/gcc.dg/vect/pr113281-2.c b/gcc/testsuite/gcc.dg/vect/pr113281-2.c
new file mode 100644
index 0000000..3a1170c
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/pr113281-2.c
@@ -0,0 +1,50 @@
+/* { dg-do compile } */
+
+#define N 128
+
+short x[N];
+short y[N];
+
+void
+f1 (void)
+{
+ for (int i = 0; i < N; ++i)
+ x[i] >>= y[i];
+}
+
+void
+f2 (void)
+{
+ for (int i = 0; i < N; ++i)
+ x[i] >>= (y[i] < 32 ? y[i] : 32);
+}
+
+void
+f3 (void)
+{
+ for (int i = 0; i < N; ++i)
+ x[i] >>= (y[i] < 31 ? y[i] : 31);
+}
+
+void
+f4 (void)
+{
+ for (int i = 0; i < N; ++i)
+ x[i] >>= (y[i] & 31);
+}
+
+void
+f5 (void)
+{
+ for (int i = 0; i < N; ++i)
+ x[i] >>= 0x8000 >> y[i];
+}
+
+void
+f6 (void)
+{
+ for (int i = 0; i < N; ++i)
+ x[i] >>= 0x8000 >> (y[i] & 31);
+}
+
+/* { dg-final { scan-tree-dump-not {can narrow[^\n]+>>} "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/pr113281-3.c b/gcc/testsuite/gcc.dg/vect/pr113281-3.c
new file mode 100644
index 0000000..5982dd2
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/pr113281-3.c
@@ -0,0 +1,39 @@
+/* { dg-do compile } */
+
+#define N 128
+
+short x[N];
+short y[N];
+
+void
+f1 (void)
+{
+ for (int i = 0; i < N; ++i)
+ x[i] >>= (y[i] < 30 ? y[i] : 30);
+}
+
+void
+f2 (void)
+{
+ for (int i = 0; i < N; ++i)
+ x[i] >>= ((y[i] & 15) + 2);
+}
+
+void
+f3 (void)
+{
+ for (int i = 0; i < N; ++i)
+ x[i] >>= (y[i] < 16 ? y[i] : 16);
+}
+
+void
+f4 (void)
+{
+ for (int i = 0; i < N; ++i)
+ x[i] = 32768 >> ((y[i] & 15) + 3);
+}
+
+/* { dg-final { scan-tree-dump {can narrow to signed:31 without loss [^\n]+>>} "vect" } } */
+/* { dg-final { scan-tree-dump {can narrow to signed:18 without loss [^\n]+>>} "vect" } } */
+/* { dg-final { scan-tree-dump {can narrow to signed:17 without loss [^\n]+>>} "vect" } } */
+/* { dg-final { scan-tree-dump {can narrow to unsigned:19 without loss [^\n]+>>} "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/pr113281-4.c b/gcc/testsuite/gcc.dg/vect/pr113281-4.c
new file mode 100644
index 0000000..10fbc0e
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/pr113281-4.c
@@ -0,0 +1,55 @@
+/* { dg-do compile } */
+
+#define N 128
+
+short x[N];
+short y[N];
+
+void
+f1 (void)
+{
+ for (int i = 0; i < N; ++i)
+ x[i] >>= (y[i] & 15);
+}
+
+void
+f2 (void)
+{
+ for (int i = 0; i < N; ++i)
+ x[i] >>= ((y[i] & 7) + 8);
+}
+
+void
+f3 (void)
+{
+ for (int i = 0; i < N; ++i)
+ x[i] >>= ((y[i] & 7) ^ 11);
+}
+
+void
+f4 (void)
+{
+ for (int i = 0; i < N; ++i)
+ x[i] >>= (y[i] < 15 ? y[i] : 15);
+}
+
+void
+f5 (void)
+{
+ for (int i = 0; i < N; ++i)
+ x[i] >>= (y[i] < 15 ? y[i] : 1);
+}
+
+void
+f6 (void)
+{
+ for (int i = 0; i < N; ++i)
+ x[i] = 32768 >> (y[i] & 15);
+}
+
+/* { dg-final { scan-tree-dump {:11:[^\n]+can narrow to signed:16 without loss [^\n]+>>} "vect" } } */
+/* { dg-final { scan-tree-dump {:18:[^\n]+can narrow to signed:16 without loss [^\n]+>>} "vect" } } */
+/* { dg-final { scan-tree-dump {:25:[^\n]+can narrow to signed:16 without loss [^\n]+>>} "vect" } } */
+/* { dg-final { scan-tree-dump {:32:[^\n]+can narrow to signed:16 without loss [^\n]+>>} "vect" } } */
+/* { dg-final { scan-tree-dump {:39:[^\n]+can narrow to signed:16 without loss [^\n]+>>} "vect" } } */
+/* { dg-final { scan-tree-dump {can narrow to unsigned:16 without loss [^\n]+>>} "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/pr113281-5.c b/gcc/testsuite/gcc.dg/vect/pr113281-5.c
new file mode 100644
index 0000000..4a45717
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/pr113281-5.c
@@ -0,0 +1,66 @@
+/* { dg-do compile } */
+
+#define N 128
+
+short x[N];
+short y[N];
+
+void
+f1 (void)
+{
+ for (int i = 0; i < N; ++i)
+ {
+ int a = y[i];
+ int b = ~a;
+ x[i] = b;
+ }
+}
+
+void
+f2 (void)
+{
+ for (int i = 0; i < N; ++i)
+ {
+ int a = y[i];
+ int b = -a;
+ x[i] = b;
+ }
+}
+
+void
+f3 (void)
+{
+ for (int i = 0; i < N; ++i)
+ {
+ int a = x[i];
+ int b = a / y[i];
+ x[i] = b;
+ }
+}
+
+void
+f4 (void)
+{
+ for (int i = 0; i < N; ++i)
+ {
+ int a = x[i];
+ int b = a < y[i] ? a : y[i];
+ x[i] = b;
+ }
+}
+
+void
+f5 (void)
+{
+ for (int i = 0; i < N; ++i)
+ {
+ int a = x[i];
+ int b = a > y[i] ? a : y[i];
+ x[i] = b;
+ }
+}
+
+/* { dg-final { scan-tree-dump {can narrow to signed:17 without loss [^\n]+= -} "vect" } } */
+/* { dg-final { scan-tree-dump {can narrow to signed:16 without loss [^\n]+= ~} "vect" } } */
+/* { dg-final { scan-tree-dump {can narrow to signed:16 without loss [^\n]+ MIN_EXPR} "vect" } } */
+/* { dg-final { scan-tree-dump {can narrow to signed:16 without loss [^\n]+ MAX_EXPR} "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/pr113576.c b/gcc/testsuite/gcc.dg/vect/pr113576.c
new file mode 100644
index 0000000..decb7ab
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/pr113576.c
@@ -0,0 +1,157 @@
+/* { dg-do run } */
+/* { dg-options "-O3" } */
+/* { dg-additional-options "-march=skylake-avx512" { target { x86_64-*-* i?86-*-* } } } */
+
+#include "tree-vect.h"
+
+#include<stdbool.h>
+#include<stdlib.h>
+#include<stddef.h>
+#include<string.h>
+
+#define SBITMAP_ELT_BITS ((unsigned) 64)
+#define SBITMAP_ELT_TYPE unsigned long long
+#define SBITMAP_SIZE_BYTES(BITMAP) ((BITMAP)->size * sizeof (SBITMAP_ELT_TYPE))
+#define do_popcount(x) __builtin_popcountll(x)
+
+typedef struct simple_bitmap_def
+{
+ unsigned char *popcount; /* Population count. */
+ unsigned int n_bits; /* Number of bits. */
+ unsigned int size; /* Size in elements. */
+ SBITMAP_ELT_TYPE elms[1]; /* The elements. */
+} *sbitmap;
+typedef const struct simple_bitmap_def *const_sbitmap;
+
+/* The iterator for sbitmap. */
+typedef struct {
+ /* The pointer to the first word of the bitmap. */
+ const SBITMAP_ELT_TYPE *ptr;
+
+ /* The size of the bitmap. */
+ unsigned int size;
+
+ /* The current word index. */
+ unsigned int word_num;
+
+ /* The current bit index (not modulo SBITMAP_ELT_BITS). */
+ unsigned int bit_num;
+
+ /* The words currently visited. */
+ SBITMAP_ELT_TYPE word;
+} sbitmap_iterator;
+
+static inline void
+sbitmap_iter_init (sbitmap_iterator *i, const_sbitmap bmp, unsigned int min)
+{
+ i->word_num = min / (unsigned int) SBITMAP_ELT_BITS;
+ i->bit_num = min;
+ i->size = bmp->size;
+ i->ptr = bmp->elms;
+
+ if (i->word_num >= i->size)
+ i->word = 0;
+ else
+ i->word = (i->ptr[i->word_num]
+ >> (i->bit_num % (unsigned int) SBITMAP_ELT_BITS));
+}
+
+/* Return true if we have more bits to visit, in which case *N is set
+ to the index of the bit to be visited. Otherwise, return
+ false. */
+
+static inline bool
+sbitmap_iter_cond (sbitmap_iterator *i, unsigned int *n)
+{
+ /* Skip words that are zeros. */
+ for (; i->word == 0; i->word = i->ptr[i->word_num])
+ {
+ i->word_num++;
+
+ /* If we have reached the end, break. */
+ if (i->word_num >= i->size)
+ return false;
+
+ i->bit_num = i->word_num * SBITMAP_ELT_BITS;
+ }
+
+ /* Skip bits that are zero. */
+ for (; (i->word & 1) == 0; i->word >>= 1)
+ i->bit_num++;
+
+ *n = i->bit_num;
+
+ return true;
+}
+
+/* Advance to the next bit. */
+
+static inline void
+sbitmap_iter_next (sbitmap_iterator *i)
+{
+ i->word >>= 1;
+ i->bit_num++;
+}
+
+#define SBITMAP_SET_SIZE(N) (((N) + SBITMAP_ELT_BITS - 1) / SBITMAP_ELT_BITS)
+/* Allocate a simple bitmap of N_ELMS bits. */
+
+sbitmap
+sbitmap_alloc (unsigned int n_elms)
+{
+ unsigned int bytes, size, amt;
+ sbitmap bmap;
+
+ size = SBITMAP_SET_SIZE (n_elms);
+ bytes = size * sizeof (SBITMAP_ELT_TYPE);
+ amt = (sizeof (struct simple_bitmap_def)
+ + bytes - sizeof (SBITMAP_ELT_TYPE));
+ bmap = (sbitmap) malloc (amt);
+ bmap->n_bits = n_elms;
+ bmap->size = size;
+ bmap->popcount = NULL;
+ return bmap;
+}
+
+#define sbitmap_free(MAP) (free((MAP)->popcount), free((MAP)))
+/* Loop over all elements of SBITMAP, starting with MIN. In each
+ iteration, N is set to the index of the bit being visited. ITER is
+ an instance of sbitmap_iterator used to iterate the bitmap. */
+
+#define EXECUTE_IF_SET_IN_SBITMAP(SBITMAP, MIN, N, ITER) \
+ for (sbitmap_iter_init (&(ITER), (SBITMAP), (MIN)); \
+ sbitmap_iter_cond (&(ITER), &(N)); \
+ sbitmap_iter_next (&(ITER)))
+
+int
+__attribute__((noinline))
+sbitmap_first_set_bit (const_sbitmap bmap)
+{
+ unsigned int n = 0;
+ sbitmap_iterator sbi;
+
+ EXECUTE_IF_SET_IN_SBITMAP (bmap, 0, n, sbi)
+ return n;
+ return -1;
+}
+
+void
+sbitmap_zero (sbitmap bmap)
+{
+ memset (bmap->elms, 0, SBITMAP_SIZE_BYTES (bmap));
+ if (bmap->popcount)
+ memset (bmap->popcount, 0, bmap->size * sizeof (unsigned char));
+}
+
+int main ()
+{
+ check_vect ();
+
+ sbitmap tmp = sbitmap_alloc(1856);
+ sbitmap_zero (tmp);
+ int res = sbitmap_first_set_bit (tmp);
+ if (res != -1)
+ abort ();
+ sbitmap_free (tmp);
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/vect/pr25413a.c b/gcc/testsuite/gcc.dg/vect/pr25413a.c
index ffb517c..905665e 100644
--- a/gcc/testsuite/gcc.dg/vect/pr25413a.c
+++ b/gcc/testsuite/gcc.dg/vect/pr25413a.c
@@ -123,6 +123,8 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */
+/* The second loop in octfapg_universe requires long multiply to do the vectorization. */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { ! vect_long_mult } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" { target vect_long_mult } } } */
/* { dg-final { scan-tree-dump-times "vector alignment may not be reachable" 1 "vect" { target { ! vector_alignment_reachable } } } } */
/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" { target { ! vector_alignment_reachable } } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/slp-reduc-10a.c b/gcc/testsuite/gcc.dg/vect/slp-reduc-10a.c
index d3c2c2d..66d3a6c 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-reduc-10a.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-reduc-10a.c
@@ -8,8 +8,8 @@ foo (int * x, int n)
int i;
int sum;
int _1;
- long unsigned int _2;
- long unsigned int _3;
+ __SIZETYPE__ _2;
+ __SIZETYPE__ _3;
int * _4;
int _5;
__SIZETYPE__ _7;
@@ -38,23 +38,23 @@ foo (int * x, int n)
sum_30 = __PHI (__BB5: 0, __BB6: sum_27);
i_32 = __PHI (__BB5: 0, __BB6: i_28);
_1 = i_32 * 4;
- _2 = (long unsigned int) _1;
- _3 = _2 * 4ul;
+ _2 = (__SIZETYPE__) _1;
+ _3 = _2 * _Literal(__SIZETYPE__)4;
_4 = x_23(D) + _3;
_5 = __MEM <int> (_4);
sum_24 = _5 + sum_30;
- _7 = _2 + 1ul;
- _8 = _7 * 4ul;
+ _7 = _2 + _Literal(__SIZETYPE__)1;
+ _8 = _7 * _Literal(__SIZETYPE__)4;
_9 = x_23(D) + _8;
_10 = __MEM <int> (_9);
sum_25 = _10 + sum_24;
- _11 = _2 + 2ul;
- _12 = _11 * 4ul;
+ _11 = _2 + _Literal(__SIZETYPE__)2;
+ _12 = _11 * _Literal(__SIZETYPE__)4;
_13 = x_23(D) + _12;
_14 = __MEM <int> (_13);
sum_26 = _14 + sum_25;
- _15 = _2 + 3ul;
- _16 = _15 * 4ul;
+ _15 = _2 + _Literal(__SIZETYPE__)3;
+ _16 = _15 * _Literal(__SIZETYPE__)4;
_17 = x_23(D) + _16;
_18 = __MEM <int> (_17);
sum_27 = _18 + sum_26;
diff --git a/gcc/testsuite/gcc.dg/vect/slp-reduc-10b.c b/gcc/testsuite/gcc.dg/vect/slp-reduc-10b.c
index 6a0d55d..2e6d15e 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-reduc-10b.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-reduc-10b.c
@@ -8,8 +8,8 @@ foo (int * x, int n)
int i;
int sum;
int _1;
- long unsigned int _2;
- long unsigned int _3;
+ __SIZETYPE__ _2;
+ __SIZETYPE__ _3;
int * _4;
int _5;
__SIZETYPE__ _7;
@@ -38,23 +38,23 @@ foo (int * x, int n)
sum_30 = __PHI (__BB5: 0, __BB6: sum_27);
i_32 = __PHI (__BB5: 0, __BB6: i_28);
_1 = i_32 * 4;
- _2 = (long unsigned int) _1;
- _3 = _2 * 4ul;
+ _2 = (__SIZETYPE__) _1;
+ _3 = _2 * _Literal(__SIZETYPE__)4;
_4 = x_23(D) + _3;
_5 = __MEM <int> (_4);
sum_24 = _5 + sum_30;
- _7 = _2 + 1ul;
- _8 = _7 * 4ul;
+ _7 = _2 + _Literal(__SIZETYPE__)1;
+ _8 = _7 * _Literal(__SIZETYPE__)4;
_9 = x_23(D) + _8;
_100 = __MEM <int> (_9);
sum_25 = sum_24 + _100;
- _11 = _2 + 2ul;
- _12 = _11 * 4ul;
+ _11 = _2 + _Literal(__SIZETYPE__)2;
+ _12 = _11 * _Literal(__SIZETYPE__)4;
_13 = x_23(D) + _12;
_14 = __MEM <int> (_13);
sum_26 = _14 + sum_25;
- _15 = _2 + 3ul;
- _16 = _15 * 4ul;
+ _15 = _2 + _Literal(__SIZETYPE__)3;
+ _16 = _15 * _Literal(__SIZETYPE__)4;
_17 = x_23(D) + _16;
_18 = __MEM <int> (_17);
sum_27 = _18 + sum_26;
diff --git a/gcc/testsuite/gcc.dg/vect/slp-reduc-10c.c b/gcc/testsuite/gcc.dg/vect/slp-reduc-10c.c
index 20df262..25a21ad 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-reduc-10c.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-reduc-10c.c
@@ -8,8 +8,8 @@ foo (int * x, int n)
int i;
int sum;
int _1;
- long unsigned int _2;
- long unsigned int _3;
+ __SIZETYPE__ _2;
+ __SIZETYPE__ _3;
int * _4;
int _5;
__SIZETYPE__ _7;
@@ -38,7 +38,7 @@ foo (int * x, int n)
sum_30 = __PHI (__BB5: 0, __BB6: sum_27);
i_32 = __PHI (__BB5: 0, __BB6: i_28);
_1 = i_32 * 4;
- _2 = (long unsigned int) _1;
+ _2 = (__SIZETYPE__) _1;
_3 = _2 * 4ul;
_4 = x_23(D) + _3;
_5 = __MEM <int> (_4);
diff --git a/gcc/testsuite/gcc.dg/vect/slp-reduc-10d.c b/gcc/testsuite/gcc.dg/vect/slp-reduc-10d.c
index 8a512d5..e96f9c4 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-reduc-10d.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-reduc-10d.c
@@ -8,8 +8,8 @@ foo (int * x, int n)
int i;
int sum;
int _1;
- long unsigned int _2;
- long unsigned int _3;
+ __SIZETYPE__ _2;
+ __SIZETYPE__ _3;
int * _4;
int _5;
__SIZETYPE__ _7;
@@ -38,7 +38,7 @@ foo (int * x, int n)
sum_30 = __PHI (__BB5: 0, __BB6: sum_27);
i_32 = __PHI (__BB5: 0, __BB6: i_28);
_1 = i_32 * 4;
- _2 = (long unsigned int) _1;
+ _2 = (__SIZETYPE__) _1;
_3 = _2 * 4ul;
_4 = x_23(D) + _3;
_5 = __MEM <int> (_4);
diff --git a/gcc/testsuite/gcc.dg/vect/slp-reduc-10e.c b/gcc/testsuite/gcc.dg/vect/slp-reduc-10e.c
index 268ec9d..3a2c583 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-reduc-10e.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-reduc-10e.c
@@ -8,8 +8,8 @@ foo (int * x, int n)
int i;
int sum;
int _1;
- long unsigned int _2;
- long unsigned int _3;
+ __SIZETYPE__ _2;
+ __SIZETYPE__ _3;
int * _4;
int _100;
__SIZETYPE__ _7;
@@ -38,7 +38,7 @@ foo (int * x, int n)
sum_30 = __PHI (__BB5: 0, __BB6: sum_27);
i_32 = __PHI (__BB5: 0, __BB6: i_28);
_1 = i_32 * 4;
- _2 = (long unsigned int) _1;
+ _2 = (__SIZETYPE__) _1;
_3 = _2 * 4ul;
_4 = x_23(D) + _3;
_100 = __MEM <int> (_4);
diff --git a/gcc/testsuite/gcc.dg/vect/vect-cond-arith-2.c b/gcc/testsuite/gcc.dg/vect/vect-cond-arith-2.c
index 7b3d73a..a4fb043 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-cond-arith-2.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-cond-arith-2.c
@@ -6,8 +6,8 @@ double __GIMPLE (ssa, startwith("loop"))
neg_xi (double *x)
{
int i;
- long unsigned int index;
- long unsigned int offset;
+ __SIZETYPE__ index;
+ __SIZETYPE__ offset;
double * xi_ptr;
double xi;
double neg_xi;
@@ -21,8 +21,8 @@ neg_xi (double *x)
res_1 = __PHI (__BB5: 0.0, __BB3: res_2);
i_4 = __PHI (__BB5: 0, __BB3: i_5);
ivtmp_6 = __PHI (__BB5: 100U, __BB3: ivtmp_7);
- index = (long unsigned int) i_4;
- offset = index * 8UL;
+ index = (__SIZE_TYPE__) i_4;
+ offset = index * _Literal(__SIZE_TYPE__) 8;
xi_ptr = x_8(D) + offset;
xi = *xi_ptr;
neg_xi = -xi;
diff --git a/gcc/testsuite/gcc.dg/vect/vect-early-break_104-pr113373.c b/gcc/testsuite/gcc.dg/vect/vect-early-break_104-pr113373.c
new file mode 100644
index 0000000..1601aaf
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/vect-early-break_104-pr113373.c
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+/* { dg-add-options vect_early_break } */
+/* { dg-require-effective-target vect_early_break } */
+
+struct asCArray {
+ unsigned *array;
+ int length;
+};
+unsigned asCReaderTranslateFunction(struct asCArray b, unsigned t)
+{
+ int size = 0;
+ for (unsigned num; num < t; num++)
+ {
+ if (num >= b.length)
+ __builtin_abort();
+ size += b.array[num];
+ }
+ return size;
+}
diff --git a/gcc/testsuite/gcc.dg/vect/vect-early-break_107-pr113364.c b/gcc/testsuite/gcc.dg/vect/vect-early-break_107-pr113364.c
new file mode 100644
index 0000000..f489265
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/vect-early-break_107-pr113364.c
@@ -0,0 +1,22 @@
+/* { dg-do compile } */
+/* { dg-add-options vect_early_break } */
+/* { dg-require-effective-target vect_early_break } */
+/* { dg-require-effective-target vect_int } */
+/* { dg-additional-options "-w" } */
+
+typedef const unsigned char *It;
+It DecodeSLEB128(It begin, It end, int *v) {
+ int value = 0;
+ unsigned shift = 0;
+ unsigned char byte;
+ do
+ {
+ if (begin == end)
+ return begin;
+ byte = *(begin++);
+ int slice = byte & 0x7f;
+ value |= slice << shift;
+ } while (byte >= 128);
+ *v = value;
+ return begin;
+}
diff --git a/gcc/testsuite/gcc.dg/vect/vect-ifcvt-19.c b/gcc/testsuite/gcc.dg/vect/vect-ifcvt-19.c
index e34bfa9..b101472 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-ifcvt-19.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-ifcvt-19.c
@@ -7,8 +7,8 @@ foo (int * f, int d, int e)
int t;
int a;
int i;
- long unsigned int _1;
- long unsigned int _2;
+ __SIZETYPE__ _1;
+ __SIZETYPE__ _2;
int * _3;
int _4;
@@ -17,8 +17,8 @@ foo (int * f, int d, int e)
__BB(3,loop_header(1),guessed_local(1063004408)):
i_18 = __PHI (__BB8: i_15, __BB2: 0);
- _1 = (long unsigned int) i_18;
- _2 = _1 * 4ul;
+ _1 = (__SIZETYPE__) i_18;
+ _2 = _1 * _Literal(__SIZETYPE__) 4;
_3 = f_9(D) + _2;
a_10 = __MEM <int> (_3);
if (a_10 < 0)
diff --git a/gcc/testsuite/gcc.dg/vect/vect-outer-4c-big-array.c b/gcc/testsuite/gcc.dg/vect/vect-outer-4c-big-array.c
index 5c3eea9..4aaf293 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-outer-4c-big-array.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-outer-4c-big-array.c
@@ -24,4 +24,4 @@ foo (){
}
/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { target { vect_short_mult && { ! vect_no_align } } } } } */
-/* { dg-final { scan-tree-dump-times "zero step in outer loop.(?:(?!failed)(?!Re-trying).)*succeeded" 1 "vect" } } */
+/* { dg-final { scan-tree-dump-times "zero step in outer loop.(?:(?!failed)(?!Re-trying).)*succeeded" 1 "vect" { target { vect_short_mult && { ! vect_no_align } } } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s16a.c b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s16a.c
index d826828..86fdcf3 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s16a.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s16a.c
@@ -51,7 +51,7 @@ main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vect_recog_dot_prod_pattern: detected(?:(?!failed)(?!Re-trying).)*succeeded" 1 "vect" } } */
+/* { dg-final { scan-tree-dump-times "vect_recog_dot_prod_pattern: detected(?:(?!failed)(?!Re-trying).)*succeeded" 1 "vect" { target { vect_sdot_hi || vect_widen_mult_hi_to_si } } } } */
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_sdot_hi } } } */
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_widen_mult_hi_to_si } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8a.c b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8a.c
index 4e1e0b2..99c53d0 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8a.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8a.c
@@ -55,8 +55,8 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vect_recog_dot_prod_pattern: detected(?:(?!failed)(?!Re-trying).)*succeeded" 1 "vect" } } */
-/* { dg-final { scan-tree-dump-times "vect_recog_widen_mult_pattern: detected(?:(?!failed)(?!Re-trying).)*succeeded" 1 "vect" } } */
+/* { dg-final { scan-tree-dump-times "vect_recog_dot_prod_pattern: detected(?:(?!failed)(?!Re-trying).)*succeeded" 1 "vect" { target { vect_sdot_qi || { vect_widen_mult_qi_to_hi && vect_widen_sum_hi_to_si } } } } } */
+/* { dg-final { scan-tree-dump-times "vect_recog_widen_mult_pattern: detected(?:(?!failed)(?!Re-trying).)*succeeded" 1 "vect" { target { vect_sdot_qi || { vect_widen_mult_qi_to_hi && vect_widen_sum_hi_to_si } } } } } */
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_sdot_qi } } } */
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_widen_mult_qi_to_hi && vect_widen_sum_hi_to_si } } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8b.c b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8b.c
index cb88ad5..f66f8dd 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8b.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8b.c
@@ -54,7 +54,7 @@ int main (void)
}
/* { dg-final { scan-tree-dump-times "vect_recog_dot_prod_pattern: detected(?:(?!failed)(?!Re-trying).)*succeeded" 1 "vect" { xfail *-*-* } } } */
-/* { dg-final { scan-tree-dump-times "vect_recog_widen_mult_pattern: detected(?:(?!failed)(?!Re-trying).)*succeeded" 1 "vect" } } */
+/* { dg-final { scan-tree-dump-times "vect_recog_widen_mult_pattern: detected(?:(?!failed)(?!Re-trying).)*succeeded" 1 "vect" { target vect_widen_mult_qi_to_hi } } } */
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_widen_mult_qi_to_hi } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u16b.c b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u16b.c
index be9ed90..e6b8842 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u16b.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u16b.c
@@ -46,6 +46,6 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vect_recog_dot_prod_pattern: detected(?:(?!failed)(?!Re-trying).)*succeeded" 1 "vect" } } */
+/* { dg-final { scan-tree-dump-times "vect_recog_dot_prod_pattern: detected(?:(?!failed)(?!Re-trying).)*succeeded" 1 "vect" { target { vect_pack_trunc || vect_udot_hi } } } } */
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_pack_trunc || vect_udot_hi } } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u8a.c b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u8a.c
index 969cdaf..f81562b 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u8a.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u8a.c
@@ -53,7 +53,7 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vect_recog_dot_prod_pattern: detected(?:(?!failed)(?!Re-trying).)*succeeded" 1 "vect" } } */
+/* { dg-final { scan-tree-dump-times "vect_recog_dot_prod_pattern: detected(?:(?!failed)(?!Re-trying).)*succeeded" 1 "vect" { target { vect_udot_qi || { vect_widen_mult_qi_to_hi && vect_widen_sum_qi_to_si } } } } } */
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_udot_qi } } } */
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_widen_mult_qi_to_hi && vect_widen_sum_qi_to_si } } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u8b.c b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u8b.c
index 35627ba..3d04fa0 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u8b.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u8b.c
@@ -45,7 +45,7 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vect_recog_dot_prod_pattern: detected(?:(?!failed)(?!Re-trying).)*succeeded" 1 "vect" } } */
+/* { dg-final { scan-tree-dump-times "vect_recog_dot_prod_pattern: detected(?:(?!failed)(?!Re-trying).)*succeeded" 1 "vect" { target { { vect_widen_mult_qi_to_hi } || { vect_udot_qi || vect_unpack } } } } } */
/* When the vectorizer is enhanced to vectorize accumulation into short for
targets that support accumulation into int (powerpc, ia64) we'd have:
diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-1a.c b/gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-1a.c
index eef8b8d..2a1b07a 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-1a.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-1a.c
@@ -41,6 +41,6 @@ main (void)
return foo ();
}
-/* { dg-final { scan-tree-dump-times "vect_recog_widen_sum_pattern: detected(?:(?!failed)(?!Re-trying).)*succeeded" 1 "vect" } } */
+/* { dg-final { scan-tree-dump-times "vect_recog_widen_sum_pattern: detected(?:(?!failed)(?!Re-trying).)*succeeded" 1 "vect" { target vect_widen_sum_hi_to_si } } } */
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_widen_sum_hi_to_si } } } */
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { target { ! vect_widen_sum_hi_to_si } } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-1b-big-array.c b/gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-1b-big-array.c
index 561ed00..6f9735f 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-1b-big-array.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-1b-big-array.c
@@ -41,6 +41,6 @@ main (void)
return foo ();
}
-/* { dg-final { scan-tree-dump-times "vect_recog_widen_sum_pattern: detected(?:(?!failed)(?!Re-trying).)*succeeded" 1 "vect" } } */
+/* { dg-final { scan-tree-dump-times "vect_recog_widen_sum_pattern: detected(?:(?!failed)(?!Re-trying).)*succeeded" 1 "vect" { target { vect_widen_sum_qi_to_si || vect_unpack } } } } */
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_widen_sum_qi_to_si || vect_unpack } } } } */
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { target { { ! vect_widen_sum_qi_to_si } && { ! vect_unpack } } } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-1c-big-array.c b/gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-1c-big-array.c
index cdccd1a..9b50350 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-1c-big-array.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-1c-big-array.c
@@ -41,6 +41,6 @@ main (void)
return foo ();
}
-/* { dg-final { scan-tree-dump-times "vect_recog_widen_sum_pattern: detected(?:(?!failed)(?!Re-trying).)*succeeded" 1 "vect" } } */
+/* { dg-final { scan-tree-dump-times "vect_recog_widen_sum_pattern: detected(?:(?!failed)(?!Re-trying).)*succeeded" 1 "vect" { target vect_widen_sum_qi_to_hi } } } */
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_widen_sum_qi_to_hi } } } */
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { target { ! vect_widen_sum_qi_to_hi } } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-2a.c b/gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-2a.c
index 3f23cb8..c77e29a 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-2a.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-2a.c
@@ -41,6 +41,6 @@ main (void)
return foo ();
}
-/* { dg-final { scan-tree-dump-times "vect_recog_widen_sum_pattern: detected(?:(?!failed)(?!Re-trying).)*succeeded" 1 "vect" } } */
+/* { dg-final { scan-tree-dump-times "vect_recog_widen_sum_pattern: detected(?:(?!failed)(?!Re-trying).)*succeeded" 1 "vect" { target vect_widen_sum_hi_to_si } } } */
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_widen_sum_hi_to_si } } } */
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { target { ! vect_widen_sum_hi_to_si } } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-2b-big-array.c b/gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-2b-big-array.c
index c69a889..d9d4482 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-2b-big-array.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-2b-big-array.c
@@ -42,6 +42,6 @@ main (void)
return foo ();
}
-/* { dg-final { scan-tree-dump-times "vect_recog_widen_sum_pattern: detected(?:(?!failed)(?!Re-trying).)*succeeded" 1 "vect" } } */
+/* { dg-final { scan-tree-dump-times "vect_recog_widen_sum_pattern: detected(?:(?!failed)(?!Re-trying).)*succeeded" 1 "vect" { target { vect_widen_sum_qi_to_si && vect_unpack } } } } */
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_widen_sum_qi_to_si && vect_unpack } } } } */
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { target { { ! vect_widen_sum_qi_to_si } && { ! vect_unpack } } } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-simd-clone-16c.c b/gcc/testsuite/gcc.dg/vect/vect-simd-clone-16c.c
index 677548a..4fdf25d 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-simd-clone-16c.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-simd-clone-16c.c
@@ -7,11 +7,11 @@
/* Ensure the the in-branch simd clones are used on targets that support them.
Some targets use another call for the epilogue loops. */
-/* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 2 "vect" { target { ! { x86_64*-*-* || { i686*-*-* || aarch64*-*-* } } } } } } */
+/* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 2 "vect" { target { ! { x86_64-*-* || { i?86-*-* || aarch64*-*-* } } } } } } */
/* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 3 "vect" { target { aarch64*-*-* } } } } */
/* x86_64 fails to use in-branch clones for TYPE=short. */
-/* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 0 "vect" { target x86_64*-*-* i686*-*-* } } } */
+/* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 0 "vect" { target x86_64-*-* i?86-*-* } } } */
/* The LTO test produces two dump files and we scan the wrong one. */
/* { dg-skip-if "" { *-*-* } { "-flto" } { "" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-simd-clone-16d.c b/gcc/testsuite/gcc.dg/vect/vect-simd-clone-16d.c
index a9ae993..55d3c0a 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-simd-clone-16d.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-simd-clone-16d.c
@@ -7,11 +7,11 @@
/* Ensure the the in-branch simd clones are used on targets that support them.
Some targets use another call for the epilogue loops. */
-/* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 2 "vect" { target { ! { x86_64*-*-* || { i686*-*-* || aarch64*-*-* } } } } } } */
+/* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 2 "vect" { target { ! { x86_64-*-* || { i?86-*-* || aarch64*-*-* } } } } } } */
/* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 3 "vect" { target { aarch64*-*-* } } } } */
/* x86_64 fails to use in-branch clones for TYPE=char. */
-/* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 0 "vect" { target x86_64*-*-* i686*-*-* } } } */
+/* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 0 "vect" { target x86_64-*-* i?86-*-* } } } */
/* The LTO test produces two dump files and we scan the wrong one. */
/* { dg-skip-if "" { *-*-* } { "-flto" } { "" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-simd-clone-17c.c b/gcc/testsuite/gcc.dg/vect/vect-simd-clone-17c.c
index 6683d1a..6afa2fd 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-simd-clone-17c.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-simd-clone-17c.c
@@ -7,11 +7,11 @@
/* Ensure the the in-branch simd clones are used on targets that support them.
Some targets use another call for the epilogue loops. */
-/* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 2 "vect" { target { ! { x86_64*-*-* || { i686*-*-* || aarch64*-*-* } } } } } } */
+/* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 2 "vect" { target { ! { x86_64-*-* || { i?86-*-* || aarch64*-*-* } } } } } } */
/* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 3 "vect" { target { aarch64*-*-* } } } } */
/* x86_64 fails to use in-branch clones for TYPE=short. */
-/* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 0 "vect" { target x86_64*-*-* i686*-*-* } } } */
+/* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 0 "vect" { target x86_64-*-* i?86-*-* } } } */
/* The LTO test produces two dump files and we scan the wrong one. */
/* { dg-skip-if "" { *-*-* } { "-flto" } { "" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-simd-clone-17d.c b/gcc/testsuite/gcc.dg/vect/vect-simd-clone-17d.c
index 8a7e1e9..5617788 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-simd-clone-17d.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-simd-clone-17d.c
@@ -7,11 +7,11 @@
/* Ensure the the in-branch simd clones are used on targets that support them.
Some targets use another call for the epilogue loops. */
-/* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 2 "vect" { target { ! { x86_64*-*-* || { i686*-*-* || aarch64*-*-* } } } } } } */
+/* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 2 "vect" { target { ! { x86_64-*-* || { i?86-*-* || aarch64*-*-* } } } } } } */
/* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 3 "vect" { target { aarch64*-*-* } } } } */
/* x86_64 fails to use in-branch clones for TYPE=char. */
-/* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 0 "vect" { target x86_64*-*-* i686*-*-* } } } */
+/* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 0 "vect" { target x86_64-*-* i?86-*-* } } } */
/* The LTO test produces two dump files and we scan the wrong one. */
/* { dg-skip-if "" { *-*-* } { "-flto" } { "" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-simd-clone-18c.c b/gcc/testsuite/gcc.dg/vect/vect-simd-clone-18c.c
index 0d1fc6d..e56e6bc 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-simd-clone-18c.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-simd-clone-18c.c
@@ -7,11 +7,11 @@
/* Ensure the the in-branch simd clones are used on targets that support them.
Some targets use another call for the epilogue loops. */
-/* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 2 "vect" { target { ! { x86_64*-*-* || { i686*-*-* || aarch64*-*-* } } } } } } */
+/* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 2 "vect" { target { ! { x86_64-*-* || { i?86-*-* || aarch64*-*-* } } } } } } */
/* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 3 "vect" { target { aarch64*-*-* } } } } */
/* x86_64 fails to use in-branch clones for TYPE=short. */
-/* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 0 "vect" { target x86_64*-*-* i686*-*-* } } } */
+/* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 0 "vect" { target x86_64-*-* i?86-*-* } } } */
/* The LTO test produces two dump files and we scan the wrong one. */
/* { dg-skip-if "" { *-*-* } { "-flto" } { "" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-simd-clone-18d.c b/gcc/testsuite/gcc.dg/vect/vect-simd-clone-18d.c
index 1e6c028..87e7379 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-simd-clone-18d.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-simd-clone-18d.c
@@ -7,11 +7,11 @@
/* Ensure the the in-branch simd clones are used on targets that support them.
Some targets use another call for the epilogue loops. */
-/* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 2 "vect" { target { ! { x86_64*-*-* || { i686*-*-* || aarch64*-*-* } } } } } } */
+/* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 2 "vect" { target { ! { x86_64-*-* || { i?86-*-* || aarch64*-*-* } } } } } } */
/* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 3 "vect" { target { aarch64*-*-* } } } } */
/* x86_64 fails to use in-branch clones for TYPE=char. */
-/* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 0 "vect" { target x86_64*-*-* i686*-*-* } } } */
+/* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 0 "vect" { target x86_64-*-* i?86-*-* } } } */
/* The LTO test produces two dump files and we scan the wrong one. */
/* { dg-skip-if "" { *-*-* } { "-flto" } { "" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-dot-s8b.c b/gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-dot-s8b.c
index 7513526..24858e1 100644
--- a/gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-dot-s8b.c
+++ b/gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-dot-s8b.c
@@ -46,8 +46,8 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vect_recog_dot_prod_pattern: detected(?:(?!failed)(?!Re-trying).)*succeeded" 1 "vect" } } */
-/* { dg-final { scan-tree-dump-times "vect_recog_widen_mult_pattern: detected(?:(?!failed)(?!Re-trying).)*succeeded" 1 "vect" } } */
+/* { dg-final { scan-tree-dump-times "vect_recog_dot_prod_pattern: detected(?:(?!failed)(?!Re-trying).)*succeeded" 1 "vect" { target { vect_widen_mult_qi_to_hi || vect_unpack } } } } */
+/* { dg-final { scan-tree-dump-times "vect_recog_widen_mult_pattern: detected(?:(?!failed)(?!Re-trying).)*succeeded" 1 "vect" { target { vect_widen_mult_qi_to_hi || vect_unpack } } } } */
/* When vectorizer is enhanced to vectorize accumulation into short for targets
that support accumulation into int (e.g. ia64) we'd have:
diff --git a/gcc/testsuite/gcc.target/aarch64/builtin_apply-1.c b/gcc/testsuite/gcc.target/aarch64/builtin_apply-1.c
new file mode 100644
index 0000000..d70abe0
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/builtin_apply-1.c
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-options "-mgeneral-regs-only" } */
+/* PR target/113486 */
+
+
+/* __builtin_apply should not use FP registers if
+ general registers only mode is requested. */
+void
+foo (void)
+{
+ __builtin_apply (foo, 0, 0);
+}
diff --git a/gcc/testsuite/gcc.target/aarch64/ccmp_3.c b/gcc/testsuite/gcc.target/aarch64/ccmp_3.c
new file mode 100644
index 0000000..a2b47fb
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/ccmp_3.c
@@ -0,0 +1,20 @@
+/* { dg-options "-O2" } */
+/* PR target/100942 */
+
+void foo(void);
+int f1(int a, int b)
+{
+ int c = a == 0 || b == 0;
+ if (c) foo();
+ return c;
+}
+
+/* We should get one cmp followed by ccmp and one cset. */
+/* { dg-final { scan-assembler "\tccmp\t" } } */
+/* { dg-final { scan-assembler-times "\tcset\t" 1 } } */
+/* { dg-final { scan-assembler-times "\tcmp\t" 1 } } */
+/* And not get 2 cmps and 2 (or more cset) and orr and a cbnz. */
+/* { dg-final { scan-assembler-not "\torr\t" } } */
+/* { dg-final { scan-assembler-not "\tcbnz\t" } } */
+/* { dg-final { scan-assembler-not "\tcbz\t" } } */
+
diff --git a/gcc/testsuite/gcc.target/aarch64/ccmp_4.c b/gcc/testsuite/gcc.target/aarch64/ccmp_4.c
new file mode 100644
index 0000000..bc0f57a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/ccmp_4.c
@@ -0,0 +1,35 @@
+/* { dg-options "-O2" } */
+/* PR target/100942 */
+
+void foo(void);
+int f1(int a, int b, int d)
+{
+ int c = a < 8 || b < 9;
+ int e = d < 11 || c;
+ if (e) foo();
+ return c;
+}
+
+/*
+ We really should get:
+ cmp w0, 7
+ ccmp w1, 8, 4, gt
+ cset w0, le
+ ccmp w2, 10, 4, gt
+ ble .L11
+
+ But we currently get:
+ cmp w0, 7
+ ccmp w1, 8, 4, gt
+ cset w0, le
+ cmp w0, 0
+ ccmp w2, 10, 4, eq
+ ble .L11
+ The middle cmp is not needed.
+ */
+
+/* We should end up with only one cmp and 2 ccmp and 1 cset but currently we get 2 cmp
+ though. */
+/* { dg-final { scan-assembler-times "\tccmp\t" 2 } } */
+/* { dg-final { scan-assembler-times "\tcset\t" 1 } } */
+/* { dg-final { scan-assembler-times "\tcmp\t" 1 { xfail *-*-* } } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/ccmp_5.c b/gcc/testsuite/gcc.target/aarch64/ccmp_5.c
new file mode 100644
index 0000000..7e52ae4
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/ccmp_5.c
@@ -0,0 +1,20 @@
+
+/* { dg-options "-O2" } */
+/* PR target/100942 */
+void f1(int a, int b, _Bool *x)
+{
+ x[0] = x[1] = a == 0 || b == 0;
+}
+
+void f2(int a, int b, int *x)
+{
+ x[0] = x[1] = a == 0 || b == 0;
+}
+
+
+/* Both functions should be using ccmp rather than 2 cset/orr. */
+/* { dg-final { scan-assembler-times "\tccmp\t" 2 } } */
+/* { dg-final { scan-assembler-times "\tcset\t" 2 } } */
+/* { dg-final { scan-assembler-times "\tcmp\t" 2 } } */
+/* { dg-final { scan-assembler-not "\torr\t" } } */
+
diff --git a/gcc/testsuite/gcc.target/aarch64/pr113114.c b/gcc/testsuite/gcc.target/aarch64/pr113114.c
new file mode 100644
index 0000000..5b0383c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/pr113114.c
@@ -0,0 +1,7 @@
+/* { dg-do compile } */
+/* { dg-options "-mabi=ilp32 -O -mearly-ldp-fusion -mlate-ldp-fusion" } */
+void foo_n(double *a) {
+ int i = 1;
+ for (; i < (int)foo_n; i++)
+ a[i] = a[i - 1] + a[i + 1] * a[i];
+}
diff --git a/gcc/testsuite/gcc.target/aarch64/pr113356.C b/gcc/testsuite/gcc.target/aarch64/pr113356.C
new file mode 100644
index 0000000..0de17a5
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/pr113356.C
@@ -0,0 +1,8 @@
+// { dg-do compile }
+// { dg-options "-Os -fnon-call-exceptions -mearly-ldp-fusion -fno-lifetime-dse -fno-forward-propagate" }
+struct Class1 {
+ virtual ~Class1() {}
+ unsigned Field1;
+};
+struct Class4 : virtual Class1 {};
+int main() { Class4 var1; }
diff --git a/gcc/testsuite/gcc.target/aarch64/pr113485.c b/gcc/testsuite/gcc.target/aarch64/pr113485.c
new file mode 100644
index 0000000..c702824
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/pr113485.c
@@ -0,0 +1,25 @@
+/* { dg-options "-O" } */
+
+#include <arm_neon.h>
+
+void test()
+{
+ while (1)
+ {
+ static const uint16_t jsimd_rgb_ycc_neon_consts[] = {19595, 0, 0, 0, 0, 0, 0, 0};
+ uint16x8_t consts = vld1q_u16(jsimd_rgb_ycc_neon_consts);
+
+ uint8_t tmp_buf[0];
+ uint8x8x3_t input_pixels = vld3_u8(tmp_buf);
+ uint16x8_t r = vmovl_u8(input_pixels.val[1]);
+ uint32x4_t y_l = vmull_laneq_u16(vget_low_u16(r), consts, 0);
+
+ uint32x4_t s = vdupq_n_u32(1);
+ uint16x4_t a = vrshrn_n_u32(s, 16);
+ uint16x4_t y = vrshrn_n_u32(y_l, 16);
+ uint16x8_t ay = vcombine_u16(a, y);
+
+ unsigned char ***out_buf;
+ vst1_u8(out_buf[1][0], vmovn_u16(ay));
+ }
+}
diff --git a/gcc/testsuite/gcc.target/aarch64/pr113550.c b/gcc/testsuite/gcc.target/aarch64/pr113550.c
new file mode 100644
index 0000000..0ff3c7b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/pr113550.c
@@ -0,0 +1,48 @@
+/* { dg-options "-O" } */
+/* { dg-do run } */
+
+#pragma GCC push_options
+#pragma GCC target "+ls64"
+#pragma GCC aarch64 "arm_acle.h"
+#pragma GCC pop_options
+
+#define DEF_FUNCTION(NAME, ARGS) \
+ __attribute__((noipa)) \
+ __arm_data512_t \
+ NAME ARGS \
+ { \
+ return *ptr; \
+ }
+
+DEF_FUNCTION (f0, (__arm_data512_t *ptr))
+DEF_FUNCTION (f1, (int x0, __arm_data512_t *ptr))
+DEF_FUNCTION (f2, (int x0, int x1, __arm_data512_t *ptr))
+DEF_FUNCTION (f3, (int x0, int x1, int x2, __arm_data512_t *ptr))
+DEF_FUNCTION (f4, (int x0, int x1, int x2, int x3, __arm_data512_t *ptr))
+DEF_FUNCTION (f5, (int x0, int x1, int x2, int x3, int x4,
+ __arm_data512_t *ptr))
+DEF_FUNCTION (f6, (int x0, int x1, int x2, int x3, int x4, int x5,
+ __arm_data512_t *ptr))
+DEF_FUNCTION (f7, (int x0, int x1, int x2, int x3, int x4, int x5, int x6,
+ __arm_data512_t *ptr))
+
+int
+main (void)
+{
+ __arm_data512_t x = { 0, 10, 20, 30, 40, 50, 60, 70 };
+ __arm_data512_t res[8] =
+ {
+ f0 (&x),
+ f1 (0, &x),
+ f2 (0, 1, &x),
+ f3 (0, 1, 2, &x),
+ f4 (0, 1, 2, 3, &x),
+ f5 (0, 1, 2, 3, 4, &x),
+ f6 (0, 1, 2, 3, 4, 5, &x),
+ f7 (0, 1, 2, 3, 4, 5, 6, &x)
+ };
+ for (int i = 0; i < 8; ++i)
+ if (__builtin_memcmp (&x, &res[i], sizeof (x)) != 0)
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/aarch64/pr113552.c b/gcc/testsuite/gcc.target/aarch64/pr113552.c
new file mode 100644
index 0000000..9c96b06
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/pr113552.c
@@ -0,0 +1,17 @@
+/* { dg-do compile } */
+/* { dg-options "-Ofast -march=armv8-a" } */
+
+__attribute__ ((__simd__ ("notinbranch"), const))
+double cos (double);
+
+void foo (float *a, double *b)
+{
+ for (int i = 0; i < 12; i+=3)
+ {
+ b[i] = cos (5.0 * a[i]);
+ b[i+1] = cos (5.0 * a[i+1]);
+ b[i+2] = cos (5.0 * a[i+2]);
+ }
+}
+
+/* { dg-final { scan-assembler-times {bl\t_ZGVnN2v_cos} 6 } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/pr113573.c b/gcc/testsuite/gcc.target/aarch64/pr113573.c
new file mode 100644
index 0000000..a8e445c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/pr113573.c
@@ -0,0 +1,40 @@
+/* { dg-options "-O2" } */
+
+#pragma GCC aarch64 "arm_neon.h"
+typedef __Uint8x8_t uint8x8_t;
+typedef __Uint16x4_t uint16x4_t;
+typedef __Int16x8_t int16x8_t;
+typedef __Uint16x8_t uint16x8_t;
+int jsimd_extbgrx_ycc_convert_neon_image_width,
+ jsimd_extbgrx_ycc_convert_neon___trans_tmp_1;
+uint16x4_t jsimd_extbgrx_ycc_convert_neon___trans_tmp_2;
+uint16x8_t vcombine_u16();
+uint16x8_t vmovl_u8(uint8x8_t __a) {
+ return __builtin_aarch64_uxtlv8hi_uu(__a);
+}
+__inline int __attribute__((__gnu_inline__)) vmull_laneq_u16();
+uint8x8x4_t vld4_u8();
+void jsimd_extbgrx_ycc_convert_neon() {
+ int scaled_128_5 = jsimd_extbgrx_ycc_convert_neon___trans_tmp_1,
+ cols_remaining = jsimd_extbgrx_ycc_convert_neon_image_width;
+ for (;;)
+ if (cols_remaining) {
+ uint8x8x4_t input_pixels = vld4_u8();
+ uint16x8_t r = vmovl_u8(input_pixels.val[2]);
+ uint16x8_t g = vmovl_u8(input_pixels.val[1]);
+ uint16x8_t b = vmovl_u8(input_pixels.val[0]);
+ int y_l = vmull_laneq_u16(r);
+ uint16x8_t __a = g;
+ jsimd_extbgrx_ycc_convert_neon___trans_tmp_2 =
+ (uint16x4_t)__builtin_aarch64_get_lowv8hi((int16x8_t)__a);
+ __a = b;
+ int cb_l = scaled_128_5;
+ int cb_h = scaled_128_5;
+ int cr_l = scaled_128_5;
+ int cr_h = scaled_128_5;
+ uint16x8_t y_u16 = vcombine_u16(y_l);
+ uint16x8_t cb_u16 = vcombine_u16(cb_l, cb_h);
+ uint16x8_t cr_u16 = vcombine_u16(cr_l, cr_h);
+ __a = y_u16 = cb_u16 = cr_u16;
+ }
+}
diff --git a/gcc/testsuite/gcc.target/aarch64/simd_pcs_attribute-3.c b/gcc/testsuite/gcc.target/aarch64/simd_pcs_attribute-3.c
index 95f6a68..c6dac6b 100644
--- a/gcc/testsuite/gcc.target/aarch64/simd_pcs_attribute-3.c
+++ b/gcc/testsuite/gcc.target/aarch64/simd_pcs_attribute-3.c
@@ -18,7 +18,7 @@ double foo(double x)
}
/* { dg-final { scan-assembler-not {\.variant_pcs\tfoo} } } */
-/* { dg-final { scan-assembler-times {\.variant_pcs\t_ZGVnM1v_foo} 1 } } */
+/* { dg-final { scan-assembler-not {\.variant_pcs\t_ZGVnM1v_foo} } } */
/* { dg-final { scan-assembler-times {\.variant_pcs\t_ZGVnM2v_foo} 1 } } */
-/* { dg-final { scan-assembler-times {\.variant_pcs\t_ZGVnN1v_foo} 1 } } */
+/* { dg-final { scan-assembler-not {\.variant_pcs\t_ZGVnN1v_foo} } } */
/* { dg-final { scan-assembler-times {\.variant_pcs\t_ZGVnN2v_foo} 1 } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general/dupq_5.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general/dupq_5.c
index 6ae8d4c..e88477b 100644
--- a/gcc/testsuite/gcc.target/aarch64/sve/acle/general/dupq_5.c
+++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/general/dupq_5.c
@@ -1,7 +1,7 @@
/* { dg-do compile } */
/* { dg-options "-O2 -mlittle-endian" } */
-#include <arm_sve.h>
+#pragma GCC aarch64 "arm_sve.h"
svint32_t
dupq (int x1, int x2, int x3, int x4)
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/pr109636_1.c b/gcc/testsuite/gcc.target/aarch64/sve/pr109636_1.c
new file mode 100644
index 0000000..5b37ddd
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/pr109636_1.c
@@ -0,0 +1,13 @@
+/* { dg-additional-options "-O -mtune=a64fx" } */
+
+typedef unsigned long long __attribute__((__vector_size__ (16))) V;
+typedef unsigned long long __attribute__((__vector_size__ (32))) W;
+
+extern void bar (V v);
+
+void foo (V v, W w)
+{
+ bar (__builtin_shuffle (v, __builtin_shufflevector ((V){}, w, 4, 5) / v));
+}
+
+/* { dg-final { scan-assembler {udiv\tz[0-9]+.d, p[0-9]+/m, z[0-9]+.d, z[0-9]+.d} } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/pr109636_2.c b/gcc/testsuite/gcc.target/aarch64/sve/pr109636_2.c
new file mode 100644
index 0000000..6d39dc8
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/pr109636_2.c
@@ -0,0 +1,13 @@
+/* { dg-additional-options "-O -mcpu=a64fx" } */
+
+typedef unsigned long long __attribute__((__vector_size__ (16))) V;
+typedef unsigned long long __attribute__((__vector_size__ (32))) W;
+
+extern void bar (V v);
+
+void foom (V v, W w)
+{
+ bar (__builtin_shuffle (v, __builtin_shufflevector ((V){}, w, 4, 5) * v));
+}
+
+/* { dg-final { scan-assembler {mul\tz[0-9]+.d, p[0-9]+/m, z[0-9]+.d, z[0-9]+.d} } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/pr113572.c b/gcc/testsuite/gcc.target/aarch64/sve/pr113572.c
new file mode 100644
index 0000000..a5e6b7e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/pr113572.c
@@ -0,0 +1,12 @@
+#include <arm_sve.h>
+
+uint64_t u;
+struct S { int i; } he;
+
+void
+foo ()
+{
+ svuint64_t vld_clz = svld1_u64 (svwhilelt_b64 (0, 4), (uint64_t *) &he);
+ vld_clz = svclz_u64_z (svwhilelt_b64 (0, 1), vld_clz);
+ svst1_u64 (svwhilelt_b64 (0, 1), &u, vld_clz);
+}
diff --git a/gcc/testsuite/gcc.target/aarch64/sve2/pr109636_1.c b/gcc/testsuite/gcc.target/aarch64/sve2/pr109636_1.c
new file mode 100644
index 0000000..2bea18a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve2/pr109636_1.c
@@ -0,0 +1,13 @@
+/* { dg-additional-options "-O -mtune=a64fx" } */
+
+typedef unsigned long long __attribute__((__vector_size__ (16))) V;
+typedef unsigned long long __attribute__((__vector_size__ (32))) W;
+
+extern void bar (V v);
+
+void foom (V v, W w)
+{
+ bar (__builtin_shuffle (v, __builtin_shufflevector ((V){}, w, 4, 5) * v));
+}
+
+/* { dg-final { scan-assembler {mul\tz[0-9]+.d, z[0-9]+.d, z[0-9]+.d} } } */
diff --git a/gcc/testsuite/gcc.target/arm/rev16.c b/gcc/testsuite/gcc.target/arm/rev16_1.c
index 1c869b3..1c869b3 100644
--- a/gcc/testsuite/gcc.target/arm/rev16.c
+++ b/gcc/testsuite/gcc.target/arm/rev16_1.c
diff --git a/gcc/testsuite/gcc.target/arm/rev16_2.c b/gcc/testsuite/gcc.target/arm/rev16_2.c
new file mode 100644
index 0000000..c6553b3
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/rev16_2.c
@@ -0,0 +1,20 @@
+/* { dg-options "-O2" } */
+/* { dg-do compile } */
+
+typedef unsigned int __u32;
+
+__u32
+__rev16_32_alt (__u32 x)
+{
+ return (((__u32)(x) & (__u32)0xff00ff00UL) >> 8)
+ | (((__u32)(x) & (__u32)0x00ff00ffUL) << 8);
+}
+
+__u32
+__rev16_32 (__u32 x)
+{
+ return (((__u32)(x) & (__u32)0x00ff00ffUL) << 8)
+ | (((__u32)(x) & (__u32)0xff00ff00UL) >> 8);
+}
+
+/* { dg-final { scan-assembler-times {rev16\tr[0-9]+, r[0-9]+} 2 } } */
diff --git a/gcc/testsuite/gcc.target/bpf/helper-skb-ancestor-cgroup-id.c b/gcc/testsuite/gcc.target/bpf/helper-skb-ancestor-cgroup-id.c
index 693f390..075dbe6 100644
--- a/gcc/testsuite/gcc.target/bpf/helper-skb-ancestor-cgroup-id.c
+++ b/gcc/testsuite/gcc.target/bpf/helper-skb-ancestor-cgroup-id.c
@@ -5,6 +5,7 @@
struct __sk_buff;
static uint64_t (*bpf_skb_ancestor_cgroup_id)(struct __sk_buff *skb, int ancestor_level) = (void *) 83;
+static uint64_t (* const const_bpf_skb_ancestor_cgroup_id)(struct __sk_buff *skb, int ancestor_level) = (void *) 84;
void
foo ()
@@ -13,7 +14,9 @@ foo ()
void *skb;
int ancestor_level;
- ret = bpf_skb_ancestor_cgroup_id (skb, ancestor_level);
+ ret = bpf_skb_ancestor_cgroup_id (skb, ancestor_level)
+ + const_bpf_skb_ancestor_cgroup_id (skb, ancestor_level);
}
/* { dg-final { scan-assembler "call\t83" } } */
+/* { dg-final { scan-assembler "call\t84" } } */
diff --git a/gcc/testsuite/gcc.target/bpf/naked-1.c b/gcc/testsuite/gcc.target/bpf/naked-1.c
index cbbc4c5..dc8ac26 100644
--- a/gcc/testsuite/gcc.target/bpf/naked-1.c
+++ b/gcc/testsuite/gcc.target/bpf/naked-1.c
@@ -9,4 +9,3 @@ int __attribute__((naked)) foo()
__asm__ volatile ("@ naked");
}
/* { dg-final { scan-assembler "\t@ naked" } } */
-/* { dg-final { scan-assembler "\texit\n" } } */
diff --git a/gcc/testsuite/gcc.target/bpf/naked-2.c b/gcc/testsuite/gcc.target/bpf/naked-2.c
new file mode 100644
index 0000000..25aebf8
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bpf/naked-2.c
@@ -0,0 +1,10 @@
+/* Verify that __attribute__((naked)) produces functions without implicit
+ `exit' instructions in the epilogue. */
+/* { dg-do compile } */
+/* { dg-options "-O0" } */
+
+int __attribute__((naked)) foo()
+{
+ __asm__ volatile ("exit");
+}
+/* { dg-final { scan-assembler-times "\texit" 1 } } */
diff --git a/gcc/testsuite/gcc.target/i386/adx-check.h b/gcc/testsuite/gcc.target/i386/adx-check.h
index cfed1a3..45435b9 100644
--- a/gcc/testsuite/gcc.target/i386/adx-check.h
+++ b/gcc/testsuite/gcc.target/i386/adx-check.h
@@ -1,5 +1,8 @@
#include <stdlib.h>
#include "cpuid.h"
+#ifdef DEBUG
+#include <stdio.h>
+#endif
static void adx_test (void);
diff --git a/gcc/testsuite/gcc.target/i386/avx512fp16-vscalefph-1b.c b/gcc/testsuite/gcc.target/i386/avx512fp16-vscalefph-1b.c
index 7c7288d..0ba9ec5 100644
--- a/gcc/testsuite/gcc.target/i386/avx512fp16-vscalefph-1b.c
+++ b/gcc/testsuite/gcc.target/i386/avx512fp16-vscalefph-1b.c
@@ -1,9 +1,6 @@
/* { dg-do run { target avx512fp16 } } */
/* { dg-options "-O2 -mavx512fp16 -mavx512dq" } */
-
-#define DEBUG
-
#define AVX512FP16
#include "avx512fp16-helper.h"
diff --git a/gcc/testsuite/gcc.target/i386/avx512fp16vl-vaddph-1b.c b/gcc/testsuite/gcc.target/i386/avx512fp16vl-vaddph-1b.c
index fcf6a90..1db7c56 100644
--- a/gcc/testsuite/gcc.target/i386/avx512fp16vl-vaddph-1b.c
+++ b/gcc/testsuite/gcc.target/i386/avx512fp16vl-vaddph-1b.c
@@ -1,7 +1,6 @@
/* { dg-do run { target avx512fp16 } } */
/* { dg-options "-O2 -mavx512fp16 -mavx512vl -mavx512dq" } */
-#define DEBUG
#define AVX512VL
#define AVX512F_LEN 256
#define AVX512F_LEN_HALF 128
diff --git a/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcmpph-1b.c b/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcmpph-1b.c
index c201a92..bbd366a 100644
--- a/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcmpph-1b.c
+++ b/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcmpph-1b.c
@@ -1,7 +1,6 @@
/* { dg-do run { target avx512fp16 } } */
/* { dg-options "-O2 -mavx512fp16 -mavx512vl -mavx512dq" } */
-#define DEBUG
#define AVX512VL
#define AVX512F_LEN 256
#define AVX512F_LEN_HALF 128
diff --git a/gcc/testsuite/gcc.target/i386/avx512fp16vl-vdivph-1b.c b/gcc/testsuite/gcc.target/i386/avx512fp16vl-vdivph-1b.c
index 48965c6..ba2f3f3 100644
--- a/gcc/testsuite/gcc.target/i386/avx512fp16vl-vdivph-1b.c
+++ b/gcc/testsuite/gcc.target/i386/avx512fp16vl-vdivph-1b.c
@@ -1,7 +1,6 @@
/* { dg-do run { target avx512fp16 } } */
/* { dg-options "-O2 -mavx512fp16 -mavx512vl -mavx512dq" } */
-#define DEBUG
#define AVX512VL
#define AVX512F_LEN 256
#define AVX512F_LEN_HALF 128
diff --git a/gcc/testsuite/gcc.target/i386/avx512fp16vl-vfpclassph-1b.c b/gcc/testsuite/gcc.target/i386/avx512fp16vl-vfpclassph-1b.c
index 6745f13..322d9cd 100644
--- a/gcc/testsuite/gcc.target/i386/avx512fp16vl-vfpclassph-1b.c
+++ b/gcc/testsuite/gcc.target/i386/avx512fp16vl-vfpclassph-1b.c
@@ -1,7 +1,6 @@
/* { dg-do run { target avx512fp16 } } */
/* { dg-options "-O2 -mavx512fp16 -mavx512vl -mavx512dq" } */
-#define DEBUG
#define AVX512VL
#define AVX512F_LEN 256
#define AVX512F_LEN_HALF 128
diff --git a/gcc/testsuite/gcc.target/i386/avx512fp16vl-vgetexpph-1b.c b/gcc/testsuite/gcc.target/i386/avx512fp16vl-vgetexpph-1b.c
index 7eb4fa4..1c2b28d 100644
--- a/gcc/testsuite/gcc.target/i386/avx512fp16vl-vgetexpph-1b.c
+++ b/gcc/testsuite/gcc.target/i386/avx512fp16vl-vgetexpph-1b.c
@@ -1,7 +1,6 @@
/* { dg-do run { target avx512fp16 } } */
/* { dg-options "-O2 -mavx512fp16 -mavx512vl -mavx512dq" } */
-#define DEBUG
#define AVX512VL
#define AVX512F_LEN 256
#define AVX512F_LEN_HALF 128
diff --git a/gcc/testsuite/gcc.target/i386/avx512fp16vl-vgetmantph-1b.c b/gcc/testsuite/gcc.target/i386/avx512fp16vl-vgetmantph-1b.c
index e5f8740..243e477 100644
--- a/gcc/testsuite/gcc.target/i386/avx512fp16vl-vgetmantph-1b.c
+++ b/gcc/testsuite/gcc.target/i386/avx512fp16vl-vgetmantph-1b.c
@@ -1,7 +1,6 @@
/* { dg-do run { target avx512fp16 } } */
/* { dg-options "-O2 -mavx512fp16 -mavx512vl -mavx512dq" } */
-#define DEBUG
#define AVX512VL
#define AVX512F_LEN 256
#define AVX512F_LEN_HALF 128
diff --git a/gcc/testsuite/gcc.target/i386/avx512fp16vl-vmaxph-1b.c b/gcc/testsuite/gcc.target/i386/avx512fp16vl-vmaxph-1b.c
index f9a3b70..bd022fc 100644
--- a/gcc/testsuite/gcc.target/i386/avx512fp16vl-vmaxph-1b.c
+++ b/gcc/testsuite/gcc.target/i386/avx512fp16vl-vmaxph-1b.c
@@ -1,7 +1,6 @@
/* { dg-do run { target avx512fp16 } } */
/* { dg-options "-O2 -mavx512fp16 -mavx512vl -mavx512dq" } */
-#define DEBUG
#define AVX512VL
#define AVX512F_LEN 256
#define AVX512F_LEN_HALF 128
diff --git a/gcc/testsuite/gcc.target/i386/avx512fp16vl-vminph-1b.c b/gcc/testsuite/gcc.target/i386/avx512fp16vl-vminph-1b.c
index 98808b0..d2c3014 100644
--- a/gcc/testsuite/gcc.target/i386/avx512fp16vl-vminph-1b.c
+++ b/gcc/testsuite/gcc.target/i386/avx512fp16vl-vminph-1b.c
@@ -1,7 +1,6 @@
/* { dg-do run { target avx512fp16 } } */
/* { dg-options "-O2 -mavx512fp16 -mavx512vl -mavx512dq" } */
-#define DEBUG
#define AVX512VL
#define AVX512F_LEN 256
#define AVX512F_LEN_HALF 128
diff --git a/gcc/testsuite/gcc.target/i386/avx512fp16vl-vmulph-1b.c b/gcc/testsuite/gcc.target/i386/avx512fp16vl-vmulph-1b.c
index 2b3ba050..31fb32a 100644
--- a/gcc/testsuite/gcc.target/i386/avx512fp16vl-vmulph-1b.c
+++ b/gcc/testsuite/gcc.target/i386/avx512fp16vl-vmulph-1b.c
@@ -1,7 +1,6 @@
/* { dg-do run { target avx512fp16 } } */
/* { dg-options "-O2 -mavx512fp16 -mavx512vl -mavx512dq" } */
-#define DEBUG
#define AVX512VL
#define AVX512F_LEN 256
#define AVX512F_LEN_HALF 128
diff --git a/gcc/testsuite/gcc.target/i386/avx512fp16vl-vrcpph-1b.c b/gcc/testsuite/gcc.target/i386/avx512fp16vl-vrcpph-1b.c
index a6b1e37..3c762e2 100644
--- a/gcc/testsuite/gcc.target/i386/avx512fp16vl-vrcpph-1b.c
+++ b/gcc/testsuite/gcc.target/i386/avx512fp16vl-vrcpph-1b.c
@@ -1,7 +1,6 @@
/* { dg-do run { target avx512fp16 } } */
/* { dg-options "-O2 -mavx512fp16 -mavx512vl -mavx512dq" } */
-#define DEBUG
#define AVX512VL
#define AVX512F_LEN 256
#define AVX512F_LEN_HALF 128
diff --git a/gcc/testsuite/gcc.target/i386/avx512fp16vl-vreduceph-1b.c b/gcc/testsuite/gcc.target/i386/avx512fp16vl-vreduceph-1b.c
index 3851597..06e69f2 100644
--- a/gcc/testsuite/gcc.target/i386/avx512fp16vl-vreduceph-1b.c
+++ b/gcc/testsuite/gcc.target/i386/avx512fp16vl-vreduceph-1b.c
@@ -1,7 +1,6 @@
/* { dg-do run { target avx512fp16 } } */
/* { dg-options "-O2 -mavx512fp16 -mavx512vl -mavx512dq" } */
-#define DEBUG
#define AVX512VL
#define AVX512F_LEN 256
#define AVX512F_LEN_HALF 128
diff --git a/gcc/testsuite/gcc.target/i386/avx512fp16vl-vrndscaleph-1b.c b/gcc/testsuite/gcc.target/i386/avx512fp16vl-vrndscaleph-1b.c
index 04b00e2..01f991d 100644
--- a/gcc/testsuite/gcc.target/i386/avx512fp16vl-vrndscaleph-1b.c
+++ b/gcc/testsuite/gcc.target/i386/avx512fp16vl-vrndscaleph-1b.c
@@ -1,7 +1,6 @@
/* { dg-do run { target avx512fp16 } } */
/* { dg-options "-O2 -mavx512fp16 -mavx512vl -mavx512dq" } */
-#define DEBUG
#define AVX512VL
#define AVX512F_LEN 256
#define AVX512F_LEN_HALF 128
diff --git a/gcc/testsuite/gcc.target/i386/avx512fp16vl-vrsqrtph-1b.c b/gcc/testsuite/gcc.target/i386/avx512fp16vl-vrsqrtph-1b.c
index a5e796b..c86221f 100644
--- a/gcc/testsuite/gcc.target/i386/avx512fp16vl-vrsqrtph-1b.c
+++ b/gcc/testsuite/gcc.target/i386/avx512fp16vl-vrsqrtph-1b.c
@@ -1,7 +1,6 @@
/* { dg-do run { target avx512fp16 } } */
/* { dg-options "-O2 -mavx512fp16 -mavx512vl -mavx512dq" } */
-#define DEBUG
#define AVX512VL
#define AVX512F_LEN 256
#define AVX512F_LEN_HALF 128
diff --git a/gcc/testsuite/gcc.target/i386/avx512fp16vl-vscalefph-1b.c b/gcc/testsuite/gcc.target/i386/avx512fp16vl-vscalefph-1b.c
index 5c12d08..8f505b5 100644
--- a/gcc/testsuite/gcc.target/i386/avx512fp16vl-vscalefph-1b.c
+++ b/gcc/testsuite/gcc.target/i386/avx512fp16vl-vscalefph-1b.c
@@ -1,7 +1,6 @@
/* { dg-do run { target avx512fp16 } } */
/* { dg-options "-O2 -mavx512fp16 -mavx512vl -mavx512dq" } */
-#define DEBUG
#define AVX512VL
#define AVX512F_LEN 256
#define AVX512F_LEN_HALF 128
diff --git a/gcc/testsuite/gcc.target/i386/avx512fp16vl-vsqrtph-1b.c b/gcc/testsuite/gcc.target/i386/avx512fp16vl-vsqrtph-1b.c
index 9b0a91d..f461293 100644
--- a/gcc/testsuite/gcc.target/i386/avx512fp16vl-vsqrtph-1b.c
+++ b/gcc/testsuite/gcc.target/i386/avx512fp16vl-vsqrtph-1b.c
@@ -1,7 +1,6 @@
/* { dg-do run { target avx512fp16 } } */
/* { dg-options "-O2 -mavx512fp16 -mavx512vl -mavx512dq" } */
-#define DEBUG
#define AVX512VL
#define AVX512F_LEN 256
#define AVX512F_LEN_HALF 128
diff --git a/gcc/testsuite/gcc.target/i386/avx512fp16vl-vsubph-1b.c b/gcc/testsuite/gcc.target/i386/avx512fp16vl-vsubph-1b.c
index fa16218..40da2ef 100644
--- a/gcc/testsuite/gcc.target/i386/avx512fp16vl-vsubph-1b.c
+++ b/gcc/testsuite/gcc.target/i386/avx512fp16vl-vsubph-1b.c
@@ -1,7 +1,6 @@
/* { dg-do run { target avx512fp16 } } */
/* { dg-options "-O2 -mavx512fp16 -mavx512vl -mavx512dq" } */
-#define DEBUG
#define AVX512VL
#define AVX512F_LEN 256
#define AVX512F_LEN_HALF 128
diff --git a/gcc/testsuite/gcc.target/i386/libcall-1.c b/gcc/testsuite/gcc.target/i386/libcall-1.c
index cb95aca..34a31dd 100644
--- a/gcc/testsuite/gcc.target/i386/libcall-1.c
+++ b/gcc/testsuite/gcc.target/i386/libcall-1.c
@@ -1,7 +1,7 @@
/* Make sure that external refences for libcalls are generated even for
indirect calls. */
-/* { dg-do compile { target int128 } } */
+/* { dg-do compile { target { int128 && lp64 } } } */
/* { dg-options "-O2 -mcmodel=large" } */
/* { dg-final { scan-assembler "globl\t__divti3" } } */
/* { dg-skip-if "PR90698" { *-*-darwin* } } */
diff --git a/gcc/testsuite/gcc.target/i386/no-callee-saved-1.c b/gcc/testsuite/gcc.target/i386/no-callee-saved-1.c
new file mode 100644
index 0000000..8fe36eb
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/no-callee-saved-1.c
@@ -0,0 +1,30 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mtune-ctrl=^prologue_using_move,^epilogue_using_move" } */
+
+extern int bar (int)
+#ifndef __x86_64__
+__attribute__ ((regparm(3)))
+#endif
+;
+
+__attribute__ ((no_callee_saved_registers))
+void
+foo (void *frame)
+{
+ int a,b,c,d,e,f,i;
+ a = bar (5);
+ b = bar (a);
+ c = bar (b);
+ d = bar (c);
+ e = bar (d);
+ f = bar (e);
+ for (i = 1; i < 10; i++)
+ {
+ a += bar (a + i) + bar (b + i) +
+ bar (c + i) + bar (d + i) +
+ bar (e + i) + bar (f + i);
+ }
+}
+
+/* { dg-final { scan-assembler-not "push" } } */
+/* { dg-final { scan-assembler-not "pop" } } */
diff --git a/gcc/testsuite/gcc.target/i386/no-callee-saved-10.c b/gcc/testsuite/gcc.target/i386/no-callee-saved-10.c
new file mode 100644
index 0000000..87766c6
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/no-callee-saved-10.c
@@ -0,0 +1,46 @@
+/* { dg-do compile { target *-*-linux* } } */
+/* { dg-options "-O2 -mgeneral-regs-only -mtune-ctrl=^prologue_using_move,^epilogue_using_move" } */
+
+extern void bar (void) __attribute__ ((no_callee_saved_registers));
+
+__attribute__ ((no_caller_saved_registers))
+void
+foo (void)
+{
+ bar ();
+}
+
+/* foo must save and restore all caller saved registers since bar won't
+ preserve any. */
+/* { dg-final { scan-assembler-not "jmp\[\\t \]+_?bar" } } */
+/* { dg-final { scan-assembler "call\[\\t \]+_?bar" } } */
+/* { dg-final { scan-assembler-times "push(?:l|q)\[\\t \]*%(?:e|r)ax" 1 } } */
+/* { dg-final { scan-assembler-times "push(?:l|q)\[\\t \]*%(?:e|r)bx" 1 } } */
+/* { dg-final { scan-assembler-times "push(?:l|q)\[\\t \]*%(?:e|r)cx" 1 } } */
+/* { dg-final { scan-assembler-times "push(?:l|q)\[\\t \]*%(?:e|r)dx" 1 } } */
+/* { dg-final { scan-assembler-times "push(?:l|q)\[\\t \]*%(?:e|r)bp" 1 } } */
+/* { dg-final { scan-assembler-times "push(?:l|q)\[\\t \]*%(?:e|r)si" 1 } } */
+/* { dg-final { scan-assembler-times "push(?:l|q)\[\\t \]*%(?:e|r)di" 1 } } */
+/* { dg-final { scan-assembler-times "pushq\[\\t \]*%r8" 1 { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "pushq\[\\t \]*%r9" 1 { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "pushq\[\\t \]*%r10" 1 { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "pushq\[\\t \]*%r11" 1 { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "pushq\[\\t \]*%r12" 1 { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "pushq\[\\t \]*%r13" 1 { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "pushq\[\\t \]*%r14" 1 { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "pushq\[\\t \]*%r15" 1 { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "pop(?:l|q)\[\\t \]*%(?:e|r)ax" 1 } } */
+/* { dg-final { scan-assembler-times "pop(?:l|q)\[\\t \]*%(?:e|r)bx" 1 } } */
+/* { dg-final { scan-assembler-times "pop(?:l|q)\[\\t \]*%(?:e|r)cx" 1 } } */
+/* { dg-final { scan-assembler-times "pop(?:l|q)\[\\t \]*%(?:e|r)dx" 1 } } */
+/* { dg-final { scan-assembler-times "pop(?:l|q)\[\\t \]*%(?:e|r)bp" 1 } } */
+/* { dg-final { scan-assembler-times "pop(?:l|q)\[\\t \]*%(?:e|r)si" 1 } } */
+/* { dg-final { scan-assembler-times "pop(?:l|q)\[\\t \]*%(?:e|r)di" 1 } } */
+/* { dg-final { scan-assembler-times "popq\[\\t \]*%r8" 1 { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "popq\[\\t \]*%r9" 1 { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "popq\[\\t \]*%r10" 1 { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "popq\[\\t \]*%r11" 1 { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "popq\[\\t \]*%r12" 1 { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "popq\[\\t \]*%r13" 1 { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "popq\[\\t \]*%r14" 1 { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "popq\[\\t \]*%r15" 1 { target { ! ia32 } } } } */
diff --git a/gcc/testsuite/gcc.target/i386/no-callee-saved-11.c b/gcc/testsuite/gcc.target/i386/no-callee-saved-11.c
new file mode 100644
index 0000000..902a764
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/no-callee-saved-11.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+extern void foo (void); /* { dg-note "previous declaration" } */
+
+__attribute__ ((no_callee_saved_registers))
+void
+foo (void) /* { dg-error "conflicting types" } */
+{
+}
+
diff --git a/gcc/testsuite/gcc.target/i386/no-callee-saved-12.c b/gcc/testsuite/gcc.target/i386/no-callee-saved-12.c
new file mode 100644
index 0000000..5524a4a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/no-callee-saved-12.c
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+extern void foo (void) __attribute__ ((no_callee_saved_registers)); /* { dg-note "previous declaration" } */
+
+void
+foo (void) /* { dg-error "conflicting types" } */
+{
+}
+
diff --git a/gcc/testsuite/gcc.target/i386/no-callee-saved-13.c b/gcc/testsuite/gcc.target/i386/no-callee-saved-13.c
new file mode 100644
index 0000000..6757e72
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/no-callee-saved-13.c
@@ -0,0 +1,16 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mtune-ctrl=^prologue_using_move,^epilogue_using_move" } */
+
+extern void foo (void);
+
+__attribute__ ((no_callee_saved_registers))
+void
+bar (void)
+{
+ foo ();
+}
+
+/* { dg-final { scan-assembler-not "push" } } */
+/* { dg-final { scan-assembler-not "pop" } } */
+/* { dg-final { scan-assembler-not "call\[\\t \]+_?foo" } } */
+/* { dg-final { scan-assembler "jmp\[\\t \]+_?foo" } } */
diff --git a/gcc/testsuite/gcc.target/i386/no-callee-saved-14.c b/gcc/testsuite/gcc.target/i386/no-callee-saved-14.c
new file mode 100644
index 0000000..2239e28
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/no-callee-saved-14.c
@@ -0,0 +1,16 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mtune-ctrl=^prologue_using_move,^epilogue_using_move" } */
+
+extern void bar (void) __attribute__ ((no_callee_saved_registers));
+
+__attribute__ ((no_callee_saved_registers))
+void
+foo (void)
+{
+ bar ();
+}
+
+/* { dg-final { scan-assembler-not "push" } } */
+/* { dg-final { scan-assembler-not "pop" } } */
+/* { dg-final { scan-assembler "jmp\[\\t \]+_?bar" } } */
+/* { dg-final { scan-assembler-not "call\[\\t \]+_?bar" } } */
diff --git a/gcc/testsuite/gcc.target/i386/no-callee-saved-15.c b/gcc/testsuite/gcc.target/i386/no-callee-saved-15.c
new file mode 100644
index 0000000..10135fe
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/no-callee-saved-15.c
@@ -0,0 +1,17 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mtune-ctrl=^prologue_using_move,^epilogue_using_move" } */
+
+typedef void (*fn_t) (void) __attribute__ ((no_callee_saved_registers));
+extern fn_t bar;
+
+__attribute__ ((no_callee_saved_registers))
+void
+foo (void)
+{
+ bar ();
+}
+
+/* { dg-final { scan-assembler-not "push" } } */
+/* { dg-final { scan-assembler-not "pop" } } */
+/* { dg-final { scan-assembler "jmp" } } */
+/* { dg-final { scan-assembler-not "call\[\\t \]+" } } */
diff --git a/gcc/testsuite/gcc.target/i386/no-callee-saved-16.c b/gcc/testsuite/gcc.target/i386/no-callee-saved-16.c
new file mode 100644
index 0000000..112d176
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/no-callee-saved-16.c
@@ -0,0 +1,16 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mtune-ctrl=^prologue_using_move,^epilogue_using_move" } */
+
+typedef void (*fn_t) (void) __attribute__ ((no_callee_saved_registers));
+
+__attribute__ ((no_callee_saved_registers))
+void
+foo (fn_t bar)
+{
+ bar ();
+}
+
+/* { dg-final { scan-assembler-not "push" } } */
+/* { dg-final { scan-assembler-not "pop" } } */
+/* { dg-final { scan-assembler "jmp" } } */
+/* { dg-final { scan-assembler-not "call\[\\t \]+" } } */
diff --git a/gcc/testsuite/gcc.target/i386/no-callee-saved-17.c b/gcc/testsuite/gcc.target/i386/no-callee-saved-17.c
new file mode 100644
index 0000000..1fd5daa
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/no-callee-saved-17.c
@@ -0,0 +1,16 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mtune-ctrl=^prologue_using_move,^epilogue_using_move" } */
+
+extern void foo (void) __attribute__ ((no_caller_saved_registers));
+
+__attribute__ ((no_callee_saved_registers))
+void
+bar (void)
+{
+ foo ();
+}
+
+/* { dg-final { scan-assembler-not "push" } } */
+/* { dg-final { scan-assembler-not "pop" } } */
+/* { dg-final { scan-assembler-not "call\[\\t \]+_?foo" } } */
+/* { dg-final { scan-assembler "jmp\[\\t \]+_?foo" } } */
diff --git a/gcc/testsuite/gcc.target/i386/no-callee-saved-18.c b/gcc/testsuite/gcc.target/i386/no-callee-saved-18.c
new file mode 100644
index 0000000..e710100
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/no-callee-saved-18.c
@@ -0,0 +1,51 @@
+/* { dg-do compile { target *-*-linux* } } */
+/* { dg-options "-O2 -mtune-ctrl=^prologue_using_move,^epilogue_using_move" } */
+
+#include <stdint.h>
+
+typedef void (*fn_t) (void) __attribute__ ((no_callee_saved_registers));
+
+void
+foo (uintptr_t p)
+{
+ ((fn_t) p) ();
+}
+
+/* foo must save and restore all caller saved registers since bar won't
+ preserve any. */
+/* { dg-final { scan-assembler-not "jmp" } } */
+/* { dg-final { scan-assembler "call\[\\t \]+" } } */
+/* { dg-final { scan-assembler-not "push(?:l|q)\[\\t \]*%(?:e|r)ax" } } */
+/* { dg-final { scan-assembler-times "push(?:l|q)\[\\t \]*%(?:e|r)bx" 1 } } */
+/* { dg-final { scan-assembler-not "push(?:l|q)\[\\t \]*%(?:e|r)cx" } } */
+/* { dg-final { scan-assembler-not "push(?:l|q)\[\\t \]*%(?:e|r)dx" } } */
+/* { dg-final { scan-assembler-times "push(?:l|q)\[\\t \]*%(?:e|r)bp" 1 } } */
+/* { dg-final { scan-assembler-times "pushl\[\\t \]*%esi" 1 { target ia32 } } } */
+/* { dg-final { scan-assembler-not "pushq\[\\t \]*%rsi" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "pushl\[\\t \]*%edi" 1 { target ia32 } } } */
+/* { dg-final { scan-assembler-not "pushq\[\\t \]*%rdi" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-not "pushq\[\\t \]*%r8" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-not "pushq\[\\t \]*%r9" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-not "pushq\[\\t \]*%r10" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-not "pushq\[\\t \]*%r11" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "pushq\[\\t \]*%r12" 1 { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "pushq\[\\t \]*%r13" 1 { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "pushq\[\\t \]*%r14" 1 { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "pushq\[\\t \]*%r15" 1 { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-not "pop(?:l|q)\[\\t \]*%(?:e|r)ax" } } */
+/* { dg-final { scan-assembler-times "pop(?:l|q)\[\\t \]*%(?:e|r)bx" 1 } } */
+/* { dg-final { scan-assembler-not "pop(?:l|q)\[\\t \]*%(?:e|r)cx" } } */
+/* { dg-final { scan-assembler-not "pop(?:l|q)\[\\t \]*%(?:e|r)dx" } } */
+/* { dg-final { scan-assembler-times "pop(?:l|q)\[\\t \]*%(?:e|r)bp" 1 } } */
+/* { dg-final { scan-assembler-times "popl\[\\t \]*%esi" 1 { target ia32 } } } */
+/* { dg-final { scan-assembler-not "popq\[\\t \]*%rsi" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "popl\[\\t \]*%edi" 1 { target ia32 } } } */
+/* { dg-final { scan-assembler-not "popq\[\\t \]*%rdi" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-not "popq\[\\t \]*%r8" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-not "popq\[\\t \]*%r9" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-not "popq\[\\t \]*%r10" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-not "popq\[\\t \]*%r11" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "popq\[\\t \]*%r12" 1 { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "popq\[\\t \]*%r13" 1 { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "popq\[\\t \]*%r14" 1 { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "popq\[\\t \]*%r15" 1 { target { ! ia32 } } } } */
diff --git a/gcc/testsuite/gcc.target/i386/no-callee-saved-2.c b/gcc/testsuite/gcc.target/i386/no-callee-saved-2.c
new file mode 100644
index 0000000..ce4ab3b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/no-callee-saved-2.c
@@ -0,0 +1,30 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mtune-ctrl=^prologue_using_move,^epilogue_using_move" } */
+
+extern int bar (int) __attribute__ ((no_caller_saved_registers))
+#ifndef __x86_64__
+__attribute__ ((regparm(3)))
+#endif
+;
+
+__attribute__ ((no_callee_saved_registers))
+void
+foo (void *frame)
+{
+ int a,b,c,d,e,f,i;
+ a = bar (5);
+ b = bar (a);
+ c = bar (b);
+ d = bar (c);
+ e = bar (d);
+ f = bar (e);
+ for (i = 1; i < 10; i++)
+ {
+ a += bar (a + i) + bar (b + i) +
+ bar (c + i) + bar (d + i) +
+ bar (e + i) + bar (f + i);
+ }
+}
+
+/* { dg-final { scan-assembler-not "push" } } */
+/* { dg-final { scan-assembler-not "pop" } } */
diff --git a/gcc/testsuite/gcc.target/i386/no-callee-saved-3.c b/gcc/testsuite/gcc.target/i386/no-callee-saved-3.c
new file mode 100644
index 0000000..453272e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/no-callee-saved-3.c
@@ -0,0 +1,8 @@
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+__attribute__ ((no_callee_saved_registers, no_caller_saved_registers))
+void
+foo (void) /* { dg-error "attributes are not compatible" } */
+{
+}
diff --git a/gcc/testsuite/gcc.target/i386/no-callee-saved-4.c b/gcc/testsuite/gcc.target/i386/no-callee-saved-4.c
new file mode 100644
index 0000000..ec566aa
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/no-callee-saved-4.c
@@ -0,0 +1,8 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mgeneral-regs-only" } */
+
+__attribute__ ((no_callee_saved_registers, interrupt))
+void
+foo (void *frame) /* { dg-error "attributes are not compatible" } */
+{
+}
diff --git a/gcc/testsuite/gcc.target/i386/no-callee-saved-5.c b/gcc/testsuite/gcc.target/i386/no-callee-saved-5.c
new file mode 100644
index 0000000..b28b211
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/no-callee-saved-5.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+typedef void (*fn_t) (void *) __attribute__ ((no_callee_saved_registers));
+
+void
+foo (void *frame)
+{
+}
+
+fn_t func = foo; /* { dg-error "incompatible pointer type" } */
diff --git a/gcc/testsuite/gcc.target/i386/no-callee-saved-6.c b/gcc/testsuite/gcc.target/i386/no-callee-saved-6.c
new file mode 100644
index 0000000..a7b3bda
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/no-callee-saved-6.c
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+typedef void (*fn_t) (void *) __attribute__ ((no_callee_saved_registers));
+
+__attribute__ ((no_callee_saved_registers))
+void
+foo (void *frame)
+{
+}
+
+fn_t func = foo;
diff --git a/gcc/testsuite/gcc.target/i386/no-callee-saved-7.c b/gcc/testsuite/gcc.target/i386/no-callee-saved-7.c
new file mode 100644
index 0000000..a1837fd
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/no-callee-saved-7.c
@@ -0,0 +1,49 @@
+/* { dg-do compile { target *-*-linux* } } */
+/* { dg-options "-O2 -mtune-ctrl=^prologue_using_move,^epilogue_using_move" } */
+
+extern void bar (void) __attribute__ ((no_callee_saved_registers));
+
+void
+foo (void)
+{
+ bar ();
+}
+
+/* foo must save and restore all caller saved registers since bar won't
+ preserve any. */
+/* { dg-final { scan-assembler-not "jmp\[\\t \]+_?bar" } } */
+/* { dg-final { scan-assembler "call\[\\t \]+_?bar" } } */
+/* { dg-final { scan-assembler-not "push(?:l|q)\[\\t \]*%(?:e|r)ax" } } */
+/* { dg-final { scan-assembler-times "push(?:l|q)\[\\t \]*%(?:e|r)bx" 1 } } */
+/* { dg-final { scan-assembler-not "push(?:l|q)\[\\t \]*%(?:e|r)cx" } } */
+/* { dg-final { scan-assembler-not "push(?:l|q)\[\\t \]*%(?:e|r)dx" } } */
+/* { dg-final { scan-assembler-times "push(?:l|q)\[\\t \]*%(?:e|r)bp" 1 } } */
+/* { dg-final { scan-assembler-times "pushl\[\\t \]*%esi" 1 { target ia32 } } } */
+/* { dg-final { scan-assembler-not "pushq\[\\t \]*%rsi" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "pushl\[\\t \]*%edi" 1 { target ia32 } } } */
+/* { dg-final { scan-assembler-not "pushq\[\\t \]*%rdi" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-not "pushq\[\\t \]*%r8" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-not "pushq\[\\t \]*%r9" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-not "pushq\[\\t \]*%r10" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-not "pushq\[\\t \]*%r11" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "pushq\[\\t \]*%r12" 1 { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "pushq\[\\t \]*%r13" 1 { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "pushq\[\\t \]*%r14" 1 { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "pushq\[\\t \]*%r15" 1 { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-not "pop(?:l|q)\[\\t \]*%(?:e|r)ax" } } */
+/* { dg-final { scan-assembler-times "pop(?:l|q)\[\\t \]*%(?:e|r)bx" 1 } } */
+/* { dg-final { scan-assembler-not "pop(?:l|q)\[\\t \]*%(?:e|r)cx" } } */
+/* { dg-final { scan-assembler-not "pop(?:l|q)\[\\t \]*%(?:e|r)dx" } } */
+/* { dg-final { scan-assembler-times "pop(?:l|q)\[\\t \]*%(?:e|r)bp" 1 } } */
+/* { dg-final { scan-assembler-times "popl\[\\t \]*%esi" 1 { target ia32 } } } */
+/* { dg-final { scan-assembler-not "popq\[\\t \]*%rsi" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "popl\[\\t \]*%edi" 1 { target ia32 } } } */
+/* { dg-final { scan-assembler-not "popq\[\\t \]*%rdi" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-not "popq\[\\t \]*%r8" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-not "popq\[\\t \]*%r9" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-not "popq\[\\t \]*%r10" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-not "popq\[\\t \]*%r11" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "popq\[\\t \]*%r12" 1 { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "popq\[\\t \]*%r13" 1 { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "popq\[\\t \]*%r14" 1 { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "popq\[\\t \]*%r15" 1 { target { ! ia32 } } } } */
diff --git a/gcc/testsuite/gcc.target/i386/no-callee-saved-8.c b/gcc/testsuite/gcc.target/i386/no-callee-saved-8.c
new file mode 100644
index 0000000..90b98a2
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/no-callee-saved-8.c
@@ -0,0 +1,50 @@
+/* { dg-do compile { target *-*-linux* } } */
+/* { dg-options "-O2 -mtune-ctrl=^prologue_using_move,^epilogue_using_move" } */
+
+typedef void (*fn_t) (void) __attribute__ ((no_callee_saved_registers));
+extern fn_t bar;
+
+void
+foo (void)
+{
+ bar ();
+}
+
+/* foo must save and restore all caller saved registers since bar won't
+ preserve any. */
+/* { dg-final { scan-assembler-not "jmp" } } */
+/* { dg-final { scan-assembler "call\[\\t \]+" } } */
+/* { dg-final { scan-assembler-not "push(?:l|q)\[\\t \]*%(?:e|r)ax" } } */
+/* { dg-final { scan-assembler-times "push(?:l|q)\[\\t \]*%(?:e|r)bx" 1 } } */
+/* { dg-final { scan-assembler-not "push(?:l|q)\[\\t \]*%(?:e|r)cx" } } */
+/* { dg-final { scan-assembler-not "push(?:l|q)\[\\t \]*%(?:e|r)dx" } } */
+/* { dg-final { scan-assembler-times "push(?:l|q)\[\\t \]*%(?:e|r)bp" 1 } } */
+/* { dg-final { scan-assembler-times "pushl\[\\t \]*%esi" 1 { target ia32 } } } */
+/* { dg-final { scan-assembler-not "pushq\[\\t \]*%rsi" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "pushl\[\\t \]*%edi" 1 { target ia32 } } } */
+/* { dg-final { scan-assembler-not "pushq\[\\t \]*%rdi" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-not "pushq\[\\t \]*%r8" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-not "pushq\[\\t \]*%r9" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-not "pushq\[\\t \]*%r10" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-not "pushq\[\\t \]*%r11" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "pushq\[\\t \]*%r12" 1 { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "pushq\[\\t \]*%r13" 1 { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "pushq\[\\t \]*%r14" 1 { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "pushq\[\\t \]*%r15" 1 { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-not "pop(?:l|q)\[\\t \]*%(?:e|r)ax" } } */
+/* { dg-final { scan-assembler-times "pop(?:l|q)\[\\t \]*%(?:e|r)bx" 1 } } */
+/* { dg-final { scan-assembler-not "pop(?:l|q)\[\\t \]*%(?:e|r)cx" } } */
+/* { dg-final { scan-assembler-not "pop(?:l|q)\[\\t \]*%(?:e|r)dx" } } */
+/* { dg-final { scan-assembler-times "pop(?:l|q)\[\\t \]*%(?:e|r)bp" 1 } } */
+/* { dg-final { scan-assembler-times "popl\[\\t \]*%esi" 1 { target ia32 } } } */
+/* { dg-final { scan-assembler-not "popq\[\\t \]*%rsi" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "popl\[\\t \]*%edi" 1 { target ia32 } } } */
+/* { dg-final { scan-assembler-not "popq\[\\t \]*%rdi" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-not "popq\[\\t \]*%r8" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-not "popq\[\\t \]*%r9" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-not "popq\[\\t \]*%r10" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-not "popq\[\\t \]*%r11" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "popq\[\\t \]*%r12" 1 { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "popq\[\\t \]*%r13" 1 { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "popq\[\\t \]*%r14" 1 { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "popq\[\\t \]*%r15" 1 { target { ! ia32 } } } } */
diff --git a/gcc/testsuite/gcc.target/i386/no-callee-saved-9.c b/gcc/testsuite/gcc.target/i386/no-callee-saved-9.c
new file mode 100644
index 0000000..e261100
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/no-callee-saved-9.c
@@ -0,0 +1,49 @@
+/* { dg-do compile { target *-*-linux* } } */
+/* { dg-options "-O2 -mtune-ctrl=^prologue_using_move,^epilogue_using_move" } */
+
+typedef void (*fn_t) (void) __attribute__ ((no_callee_saved_registers));
+
+void
+foo (fn_t bar)
+{
+ bar ();
+}
+
+/* foo must save and restore all caller saved registers since bar won't
+ preserve any. */
+/* { dg-final { scan-assembler-not "jmp" } } */
+/* { dg-final { scan-assembler "call\[\\t \]+" } } */
+/* { dg-final { scan-assembler-not "push(?:l|q)\[\\t \]*%(?:e|r)ax" } } */
+/* { dg-final { scan-assembler-times "push(?:l|q)\[\\t \]*%(?:e|r)bx" 1 } } */
+/* { dg-final { scan-assembler-not "push(?:l|q)\[\\t \]*%(?:e|r)cx" } } */
+/* { dg-final { scan-assembler-not "push(?:l|q)\[\\t \]*%(?:e|r)dx" } } */
+/* { dg-final { scan-assembler-times "push(?:l|q)\[\\t \]*%(?:e|r)bp" 1 } } */
+/* { dg-final { scan-assembler-times "pushl\[\\t \]*%esi" 1 { target ia32 } } } */
+/* { dg-final { scan-assembler-not "pushq\[\\t \]*%rsi" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "pushl\[\\t \]*%edi" 1 { target ia32 } } } */
+/* { dg-final { scan-assembler-not "pushq\[\\t \]*%rdi" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-not "pushq\[\\t \]*%r8" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-not "pushq\[\\t \]*%r9" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-not "pushq\[\\t \]*%r10" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-not "pushq\[\\t \]*%r11" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "pushq\[\\t \]*%r12" 1 { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "pushq\[\\t \]*%r13" 1 { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "pushq\[\\t \]*%r14" 1 { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "pushq\[\\t \]*%r15" 1 { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-not "pop(?:l|q)\[\\t \]*%(?:e|r)ax" } } */
+/* { dg-final { scan-assembler-times "pop(?:l|q)\[\\t \]*%(?:e|r)bx" 1 } } */
+/* { dg-final { scan-assembler-not "pop(?:l|q)\[\\t \]*%(?:e|r)cx" } } */
+/* { dg-final { scan-assembler-not "pop(?:l|q)\[\\t \]*%(?:e|r)dx" } } */
+/* { dg-final { scan-assembler-times "pop(?:l|q)\[\\t \]*%(?:e|r)bp" 1 } } */
+/* { dg-final { scan-assembler-times "popl\[\\t \]*%esi" 1 { target ia32 } } } */
+/* { dg-final { scan-assembler-not "popq\[\\t \]*%rsi" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "popl\[\\t \]*%edi" 1 { target ia32 } } } */
+/* { dg-final { scan-assembler-not "popq\[\\t \]*%rdi" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-not "popq\[\\t \]*%r8" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-not "popq\[\\t \]*%r9" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-not "popq\[\\t \]*%r10" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-not "popq\[\\t \]*%r11" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "popq\[\\t \]*%r12" 1 { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "popq\[\\t \]*%r13" 1 { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "popq\[\\t \]*%r14" 1 { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "popq\[\\t \]*%r15" 1 { target { ! ia32 } } } } */
diff --git a/gcc/testsuite/gcc.target/i386/part-vect-copysignhf.c b/gcc/testsuite/gcc.target/i386/part-vect-copysignhf.c
index 811617bc..0fdcbae 100644
--- a/gcc/testsuite/gcc.target/i386/part-vect-copysignhf.c
+++ b/gcc/testsuite/gcc.target/i386/part-vect-copysignhf.c
@@ -1,5 +1,5 @@
/* { dg-do run { target avx512fp16 } } */
-/* { dg-options "-O1 -mavx512fp16 -mavx512vl -ftree-vectorize -fdump-tree-slp-details -fdump-tree-optimized" } */
+/* { dg-options "-O1 -mavx512fp16 -mavx512vl -fdump-tree-slp-details -fdump-tree-optimized" } */
extern void abort ();
diff --git a/gcc/testsuite/gcc.target/i386/pr107057.c b/gcc/testsuite/gcc.target/i386/pr107057.c
index 40b49ac..f4ebc3d 100644
--- a/gcc/testsuite/gcc.target/i386/pr107057.c
+++ b/gcc/testsuite/gcc.target/i386/pr107057.c
@@ -1,4 +1,4 @@
-/* { dg-do compile { target { ! ia32 } } } */
+/* { dg-do compile { target lp64 } } */
/* { dg-options "-mavx -mcmodel=large -O3" } */
typedef double v2df __attribute__ ((vector_size (16)));
diff --git a/gcc/testsuite/gcc.target/i386/pr111267.c b/gcc/testsuite/gcc.target/i386/pr111267.c
new file mode 100644
index 0000000..e3d549d
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr111267.c
@@ -0,0 +1,14 @@
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+struct S { float a, b, c, d; };
+
+int
+bar (struct S x, struct S y)
+{
+ return x.b <= y.d && x.c >= y.a;
+}
+
+/* { dg-final { scan-assembler-not "movq" } } */
+/* { dg-final { scan-assembler-not "xchgq" } } */
+/* { dg-final { scan-assembler-not "shrq" } } */
+/* { dg-final { scan-assembler-not "movd" } } */
diff --git a/gcc/testsuite/gcc.target/i386/pr113122-1.c b/gcc/testsuite/gcc.target/i386/pr113122-1.c
new file mode 100644
index 0000000..959b007
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr113122-1.c
@@ -0,0 +1,10 @@
+/* PR target/113122 */
+/* { dg-do assemble { target { *-*-linux* && lp64 } } } */
+/* { dg-require-effective-target mfentry } */
+/* { dg-require-effective-target masm_intel } */
+/* { dg-options "-fprofile -mfentry -O2 -mcmodel=large -masm=intel" } */
+
+void
+func (void)
+{
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr113122-2.c b/gcc/testsuite/gcc.target/i386/pr113122-2.c
new file mode 100644
index 0000000..7423a77
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr113122-2.c
@@ -0,0 +1,11 @@
+/* PR target/113122 */
+/* { dg-do assemble { target { *-*-linux* && lp64 } } } */
+/* { dg-require-effective-target mfentry } */
+/* { dg-require-effective-target masm_intel } */
+/* { dg-require-effective-target fpic } */
+/* { dg-options "-fpic -fprofile -mfentry -O2 -mcmodel=large -masm=intel" } */
+
+void
+func (void)
+{
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr113122-3.c b/gcc/testsuite/gcc.target/i386/pr113122-3.c
new file mode 100644
index 0000000..71aa240
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr113122-3.c
@@ -0,0 +1,9 @@
+/* PR target/113122 */
+/* { dg-do assemble { target *-*-linux* } } */
+/* { dg-require-effective-target masm_intel } */
+/* { dg-options "-fprofile -O2 -masm=intel" } */
+
+void
+func (void)
+{
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr113122-4.c b/gcc/testsuite/gcc.target/i386/pr113122-4.c
new file mode 100644
index 0000000..00621e4
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr113122-4.c
@@ -0,0 +1,10 @@
+/* PR target/113122 */
+/* { dg-do assemble { target *-*-linux* } } */
+/* { dg-require-effective-target masm_intel } */
+/* { dg-require-effective-target fpic } */
+/* { dg-options "-fpic -fprofile -O2 -masm=intel" } */
+
+void
+func (void)
+{
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr113622-1.c b/gcc/testsuite/gcc.target/i386/pr113622-1.c
new file mode 100644
index 0000000..d3a51cd
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr113622-1.c
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mavx512f -w" } */
+
+typedef float __attribute__ ((vector_size (64))) vec;
+register vec a asm("zmm5"), b asm("zmm6"), c asm("zmm7");
+
+void
+test (void)
+{
+ for (int i = 0; i < 8; i++)
+ c[i] = a[i] < b[i] ? 0.1 : 0.2;
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr113622-2.c b/gcc/testsuite/gcc.target/i386/pr113622-2.c
new file mode 100644
index 0000000..669688a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr113622-2.c
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-options "-msse2 -w" } */
+
+typedef double __attribute__ ((vector_size (16))) vec;
+register vec a asm("xmm5"), b asm("xmm6"), c asm("xmm7");
+
+void
+test (void)
+{
+ for (int i = 0; i < 2; i++)
+ c[i] = a[i] < b[i] ? 0.1 : 0.2;
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr113622-3.c b/gcc/testsuite/gcc.target/i386/pr113622-3.c
new file mode 100644
index 0000000..d062b04
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr113622-3.c
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-options "-msse2" } */
+
+typedef double __attribute__ ((vector_size (16))) vec;
+
+void
+test (void)
+{
+ register vec a asm("xmm5"), b asm("xmm6"), c asm("xmm7");
+ for (int i = 0; i < 2; i++)
+ c[i] = a[i] < b[i] ? 0.1 : 0.2;
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr38534-1.c b/gcc/testsuite/gcc.target/i386/pr38534-1.c
new file mode 100644
index 0000000..9297959
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr38534-1.c
@@ -0,0 +1,26 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mtune-ctrl=^prologue_using_move,^epilogue_using_move" } */
+
+#define ARRAY_SIZE 256
+
+extern int array[ARRAY_SIZE][ARRAY_SIZE][ARRAY_SIZE];
+extern int value (int, int, int)
+#ifndef __x86_64__
+__attribute__ ((regparm(3)))
+#endif
+;
+
+void
+__attribute__((noreturn))
+no_return_to_caller (void)
+{
+ unsigned i, j, k;
+ for (i = ARRAY_SIZE; i > 0; --i)
+ for (j = ARRAY_SIZE; j > 0; --j)
+ for (k = ARRAY_SIZE; k > 0; --k)
+ array[i - 1][j - 1][k - 1] = value (i, j, k);
+ while (1);
+}
+
+/* { dg-final { scan-assembler-not "push" } } */
+/* { dg-final { scan-assembler-not "pop" } } */
diff --git a/gcc/testsuite/gcc.target/i386/pr38534-2.c b/gcc/testsuite/gcc.target/i386/pr38534-2.c
new file mode 100644
index 0000000..1fb0136
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr38534-2.c
@@ -0,0 +1,18 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mtune-ctrl=^prologue_using_move,^epilogue_using_move" } */
+
+extern void bar (void) __attribute__ ((no_callee_saved_registers));
+extern void fn (void) __attribute__ ((noreturn));
+
+__attribute__ ((noreturn))
+void
+foo (void)
+{
+ bar ();
+ fn ();
+}
+
+/* { dg-final { scan-assembler-not "push" } } */
+/* { dg-final { scan-assembler-not "pop" } } */
+/* { dg-final { scan-assembler-not "jmp\[\\t \]+_?bar" } } */
+/* { dg-final { scan-assembler "call\[\\t \]+_?bar" } } */
diff --git a/gcc/testsuite/gcc.target/i386/pr38534-3.c b/gcc/testsuite/gcc.target/i386/pr38534-3.c
new file mode 100644
index 0000000..87fc35f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr38534-3.c
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mtune-ctrl=^prologue_using_move,^epilogue_using_move" } */
+
+typedef void (*fn_t) (void) __attribute__ ((no_callee_saved_registers));
+extern fn_t bar;
+extern void fn (void) __attribute__ ((noreturn));
+
+__attribute__ ((noreturn))
+void
+foo (void)
+{
+ bar ();
+ fn ();
+}
+
+/* { dg-final { scan-assembler-not "push" } } */
+/* { dg-final { scan-assembler-not "pop" } } */
+/* { dg-final { scan-assembler-not "jmp" } } */
+/* { dg-final { scan-assembler "call\[\\t \]+" } } */
diff --git a/gcc/testsuite/gcc.target/i386/pr38534-4.c b/gcc/testsuite/gcc.target/i386/pr38534-4.c
new file mode 100644
index 0000000..561ebee
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr38534-4.c
@@ -0,0 +1,18 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mtune-ctrl=^prologue_using_move,^epilogue_using_move" } */
+
+typedef void (*fn_t) (void) __attribute__ ((no_callee_saved_registers));
+extern void fn (void) __attribute__ ((noreturn));
+
+__attribute__ ((noreturn))
+void
+foo (fn_t bar)
+{
+ bar ();
+ fn ();
+}
+
+/* { dg-final { scan-assembler-not "push" } } */
+/* { dg-final { scan-assembler-not "pop" } } */
+/* { dg-final { scan-assembler-not "jmp" } } */
+/* { dg-final { scan-assembler "call\[\\t \]+" } } */
diff --git a/gcc/testsuite/gcc.target/i386/pr38534-5.c b/gcc/testsuite/gcc.target/i386/pr38534-5.c
new file mode 100644
index 0000000..91c0c0f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr38534-5.c
@@ -0,0 +1,26 @@
+/* { dg-do compile } */
+/* { dg-options "-O0 -mtune-ctrl=^prologue_using_move,^epilogue_using_move" } */
+
+#define ARRAY_SIZE 256
+
+extern int array[ARRAY_SIZE][ARRAY_SIZE][ARRAY_SIZE];
+extern int value (int, int, int)
+#ifndef __x86_64__
+__attribute__ ((regparm(3)))
+#endif
+;
+
+void
+__attribute__((noreturn))
+no_return_to_caller (void)
+{
+ unsigned i, j, k;
+ for (i = ARRAY_SIZE; i > 0; --i)
+ for (j = ARRAY_SIZE; j > 0; --j)
+ for (k = ARRAY_SIZE; k > 0; --k)
+ array[i - 1][j - 1][k - 1] = value (i, j, k);
+ while (1);
+}
+
+/* { dg-final { scan-assembler "push" } } */
+/* { dg-final { scan-assembler-not "pop" } } */
diff --git a/gcc/testsuite/gcc.target/i386/pr38534-6.c b/gcc/testsuite/gcc.target/i386/pr38534-6.c
new file mode 100644
index 0000000..cf1463a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr38534-6.c
@@ -0,0 +1,26 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mtune-ctrl=^prologue_using_move,^epilogue_using_move" } */
+
+#define ARRAY_SIZE 256
+
+extern int array[ARRAY_SIZE][ARRAY_SIZE][ARRAY_SIZE];
+extern int value (int, int, int)
+#ifndef __x86_64__
+__attribute__ ((regparm(3)))
+#endif
+;
+
+void
+__attribute__((noreturn, optimize("-Og")))
+no_return_to_caller (void)
+{
+ unsigned i, j, k;
+ for (i = ARRAY_SIZE; i > 0; --i)
+ for (j = ARRAY_SIZE; j > 0; --j)
+ for (k = ARRAY_SIZE; k > 0; --k)
+ array[i - 1][j - 1][k - 1] = value (i, j, k);
+ while (1);
+}
+
+/* { dg-final { scan-assembler "push" } } */
+/* { dg-final { scan-assembler-not "pop" } } */
diff --git a/gcc/testsuite/gcc.target/i386/pr80833-1.c b/gcc/testsuite/gcc.target/i386/pr80833-1.c
index 3f702fb..d801e79 100644
--- a/gcc/testsuite/gcc.target/i386/pr80833-1.c
+++ b/gcc/testsuite/gcc.target/i386/pr80833-1.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -msse4.1 -mtune=intel -mregparm=2" } */
+/* { dg-options "-O2 -msse4.1 -mtune=intel -mregparm=2 -mno-stackrealign" } */
/* { dg-require-effective-target ia32 } */
long long test (long long a)
diff --git a/gcc/testsuite/gcc.target/i386/readeflags-1.c b/gcc/testsuite/gcc.target/i386/readeflags-1.c
index d0dd0da..90f2930 100644
--- a/gcc/testsuite/gcc.target/i386/readeflags-1.c
+++ b/gcc/testsuite/gcc.target/i386/readeflags-1.c
@@ -2,6 +2,9 @@
/* { dg-options "-O0" } */
#include <x86intrin.h>
+#ifdef DEBUG
+#include <stdio.h>
+#endif
extern void abort (void);
diff --git a/gcc/testsuite/gcc.target/i386/rtm-check.h b/gcc/testsuite/gcc.target/i386/rtm-check.h
index bdb5a6d..69788ad 100644
--- a/gcc/testsuite/gcc.target/i386/rtm-check.h
+++ b/gcc/testsuite/gcc.target/i386/rtm-check.h
@@ -1,5 +1,8 @@
#include <stdlib.h>
#include "cpuid.h"
+#ifdef DEBUG
+#include <stdio.h>
+#endif
static void rtm_test (void);
diff --git a/gcc/testsuite/gcc.target/i386/sha-check.h b/gcc/testsuite/gcc.target/i386/sha-check.h
index 5bc5a59..b9ffb5c 100644
--- a/gcc/testsuite/gcc.target/i386/sha-check.h
+++ b/gcc/testsuite/gcc.target/i386/sha-check.h
@@ -1,5 +1,8 @@
#include <stdlib.h>
#include "cpuid.h"
+#ifdef DEBUG
+#include <stdio.h>
+#endif
static void sha_test (void);
diff --git a/gcc/testsuite/gcc.target/i386/stack-check-17.c b/gcc/testsuite/gcc.target/i386/stack-check-17.c
index b3e41cb..061484e 100644
--- a/gcc/testsuite/gcc.target/i386/stack-check-17.c
+++ b/gcc/testsuite/gcc.target/i386/stack-check-17.c
@@ -23,19 +23,14 @@ f3 (void)
/* Verify no explicit probes. */
/* { dg-final { scan-assembler-not "or\[ql\]" } } */
-/* We also want to verify we did not use a push/pop sequence
- to probe *sp as the callee register saves are sufficient
- to probe *sp.
-
- y0/y1 are live across the call and thus must be allocated
+/* y0/y1 are live across the call and thus must be allocated
into either a stack slot or callee saved register. The former
would be rather dumb. So assume it does not happen.
- So search for two/four pushes for the callee register saves/argument pushes
- (plus one for the PIC register if needed on ia32) and no pops (since the
- function has no reachable epilogue). */
-/* { dg-final { scan-assembler-times "push\[ql\]" 2 { target { ! ia32 } } } } */
-/* { dg-final { scan-assembler-times "push\[ql\]" 4 { target { ia32 && nonpic } } } } */
-/* { dg-final { scan-assembler-times "push\[ql\]" 5 { target { ia32 && { ! nonpic } } } } } */
-/* { dg-final { scan-assembler-not "pop" } } */
+ So search for a push/pop sequence for stack probe and 2 argument
+ pushes on ia32. There is no need to save and restore the PIC
+ register on ia32 for a noreturn function. */
+/* { dg-final { scan-assembler-times "push\[ql\]" 1 { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "push\[ql\]" 3 { target ia32 } } } */
+/* { dg-final { scan-assembler-times "pop" 1 } } */
diff --git a/gcc/testsuite/gcc.target/i386/writeeflags-1.c b/gcc/testsuite/gcc.target/i386/writeeflags-1.c
index ceaab1a..7a57f41 100644
--- a/gcc/testsuite/gcc.target/i386/writeeflags-1.c
+++ b/gcc/testsuite/gcc.target/i386/writeeflags-1.c
@@ -2,6 +2,9 @@
/* { dg-options "-O0" } */
#include <x86intrin.h>
+#ifdef DEBUG
+#include <stdio.h>
+#endif
extern void abort (void);
diff --git a/gcc/testsuite/gcc.target/loongarch/explicit-relocs-auto-tls-ld-gd.c b/gcc/testsuite/gcc.target/loongarch/explicit-relocs-auto-tls-ld-gd.c
index 957ff98..ca55fcf 100644
--- a/gcc/testsuite/gcc.target/loongarch/explicit-relocs-auto-tls-ld-gd.c
+++ b/gcc/testsuite/gcc.target/loongarch/explicit-relocs-auto-tls-ld-gd.c
@@ -6,4 +6,5 @@ extern __thread int b __attribute__((visibility("default")));
int test() { return a + b; }
-/* { dg-final { scan-assembler-not "la.tls" { target tls_native } } } */
+/* { dg-final { scan-assembler "la\\.tls\\.ld" { target tls_native } } } */
+/* { dg-final { scan-assembler "la\\.tls\\.gd" { target tls_native } } } */
diff --git a/gcc/testsuite/gcc.target/loongarch/invariant-recip.c b/gcc/testsuite/gcc.target/loongarch/invariant-recip.c
new file mode 100644
index 0000000..2f64f6e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/invariant-recip.c
@@ -0,0 +1,33 @@
+/* { dg-do compile } */
+/* { dg-options "-Ofast -march=loongarch64 -mabi=lp64d -mrecip -mfrecipe -fdump-rtl-loop2_invariant " } */
+/* { dg-final { scan-rtl-dump "Decided to move dependent invariant" "loop2_invariant" } } */
+
+void
+nislfv_rain_plm (int im, int km, float dzl[im][km], float rql[im][km],
+ float dt)
+{
+ int i, k;
+ float con1, decfl;
+ float dz[km], qn[km], wi[km + 1];
+
+ for (i = 0; i < im; i++)
+ {
+ for (k = 0; k < km; k++)
+ {
+ dz[k] = dzl[i][k];
+ }
+ con1 = 0.05;
+ for (k = km - 1; k >= 0; k--)
+ {
+ decfl = (wi[k + 1] - wi[k]) * dt / dz[k];
+ if (decfl > con1)
+ {
+ wi[k] = wi[k + 1] - con1 * dz[k] / dt;
+ }
+ }
+ for (k = 0; k < km; k++)
+ {
+ rql[i][k] = qn[k];
+ }
+ }
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/short-circuit.c b/gcc/testsuite/gcc.target/loongarch/short-circuit.c
new file mode 100644
index 0000000..bed585e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/short-circuit.c
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -ffast-math -fdump-tree-gimple" } */
+
+int
+short_circuit (float *a)
+{
+ float t1x = a[0];
+ float t2x = a[1];
+ float t1y = a[2];
+ float t2y = a[3];
+ float t1z = a[4];
+ float t2z = a[5];
+
+ if (t1x > t2y || t2x < t1y || t1x > t2z || t2x < t1z || t1y > t2z || t2y < t1z)
+ return 0;
+
+ return 1;
+}
+/* { dg-final { scan-tree-dump-times "if" 6 "gimple" } } */
diff --git a/gcc/testsuite/gcc.target/loongarch/vect-extract.c b/gcc/testsuite/gcc.target/loongarch/vect-extract.c
new file mode 100644
index 0000000..ce126e3
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vect-extract.c
@@ -0,0 +1,20 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -ffast-math -mlasx -fno-vect-cost-model -fno-unroll-loops" } */
+/* { dg-final { scan-assembler-not "xvpickve.w" } } */
+/* { dg-final { scan-assembler-not "xvpickve.d" } } */
+
+float
+sum_float (float *a, int n) {
+ float res = 0.0;
+ for (int i = 0; i < n; i++)
+ res += a[i];
+ return res;
+}
+
+double
+sum_double (double *a, int n) {
+ double res = 0.0;
+ for (int i = 0; i < n; i++)
+ res += a[i];
+ return res;
+}
diff --git a/gcc/testsuite/gcc.target/m68k/pr108640.c b/gcc/testsuite/gcc.target/m68k/pr108640.c
new file mode 100644
index 0000000..5f3e8b4
--- /dev/null
+++ b/gcc/testsuite/gcc.target/m68k/pr108640.c
@@ -0,0 +1,7 @@
+/* { dg-do compile } */
+/* { do-options "-O1" } */
+
+int x;
+void andsi3(void) { x &= ~(1 << 16); }
+void iorsi3(void) { x |= (1 << 16); }
+void xorsi3(void) { x ^= (1 << 16); }
diff --git a/gcc/testsuite/gcc.target/m68k/pr110934.c b/gcc/testsuite/gcc.target/m68k/pr110934.c
new file mode 100644
index 0000000..8c21d46
--- /dev/null
+++ b/gcc/testsuite/gcc.target/m68k/pr110934.c
@@ -0,0 +1,9 @@
+/* { dg-do compile } */
+/* { do-options "-fzero-call-used-regs=used -fpic -O2" } */
+
+extern double clobber_fp0 (void);
+
+void foo (void)
+{
+ clobber_fp0 ();
+}
diff --git a/gcc/testsuite/gcc.target/m68k/pr82420.c b/gcc/testsuite/gcc.target/m68k/pr82420.c
new file mode 100644
index 0000000..5c84f29
--- /dev/null
+++ b/gcc/testsuite/gcc.target/m68k/pr82420.c
@@ -0,0 +1,9 @@
+/* { do-do compile } */
+/* { dg-options "-march=68000 -malign-int" } */
+
+int a;
+
+void f(void)
+{
+ a /= 3;
+}
diff --git a/gcc/testsuite/gcc.target/powerpc/block-cmp-1.c b/gcc/testsuite/gcc.target/powerpc/block-cmp-1.c
index bcf0cb2..cd076cf 100644
--- a/gcc/testsuite/gcc.target/powerpc/block-cmp-1.c
+++ b/gcc/testsuite/gcc.target/powerpc/block-cmp-1.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O2 -mdejagnu-cpu=power8 -mno-vsx" } */
+/* { dg-skip-if "" { has_arch_ppc64 && ilp32 } } */
/* { dg-final { scan-assembler-not {\mb[l]? memcmp\M} } } */
/* Test that it still can do expand for memcmpsi instead of calling library
diff --git a/gcc/testsuite/gcc.target/powerpc/block-cmp-4.c b/gcc/testsuite/gcc.target/powerpc/block-cmp-4.c
index c86feba..ee9a015 100644
--- a/gcc/testsuite/gcc.target/powerpc/block-cmp-4.c
+++ b/gcc/testsuite/gcc.target/powerpc/block-cmp-4.c
@@ -1,6 +1,7 @@
/* { dg-do compile { target be } } */
/* { dg-options "-O2 -mdejagnu-cpu=power7" } */
-/* { dg-final { scan-assembler-not {\mb[l]? memcmp\M} } } */
+/* { dg-skip-if "" { has_arch_ppc64 && ilp32 } } */
+/* { dg-final { scan-assembler-not {\mb[l]? memcmp\M} } } */
/* Test that it does expand for memcmpsi instead of calling library on
P7 BE when length is less than 32 bytes. */
diff --git a/gcc/testsuite/gcc.target/powerpc/block-cmp-8.c b/gcc/testsuite/gcc.target/powerpc/block-cmp-8.c
new file mode 100644
index 0000000..22a48c8
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/block-cmp-8.c
@@ -0,0 +1,8 @@
+/* { dg-do run { target ilp32 } } */
+/* { dg-options "-O2 -mpowerpc64" } */
+/* { dg-require-effective-target has_arch_ppc64 } */
+/* { dg-timeout-factor 2 } */
+
+/* Verify memcmp on m32 mpowerpc64 */
+
+#include "../../gcc.dg/memcmp-1.c"
diff --git a/gcc/testsuite/gcc.target/riscv/arch-23.c b/gcc/testsuite/gcc.target/riscv/arch-23.c
index fca5425..aacfc45 100644
--- a/gcc/testsuite/gcc.target/riscv/arch-23.c
+++ b/gcc/testsuite/gcc.target/riscv/arch-23.c
@@ -4,7 +4,6 @@ int foo()
{
}
-/* { dg-error "ISA string is not in canonical order. 'c'" "" { target *-*-* } 0 } */
/* { dg-error "extension 'w' is unsupported standard single letter extension" "" { target *-*-* } 0 } */
/* { dg-error "extension 'zvl' starts with 'z' but is unsupported standard extension" "" { target *-*-* } 0 } */
/* { dg-error "extension 's123' starts with 's' but is unsupported standard supervisor extension" "" { target *-*-* } 0 } */
diff --git a/gcc/testsuite/gcc.target/riscv/arch-27.c b/gcc/testsuite/gcc.target/riscv/arch-27.c
index 70143b2..95cebc1 100644
--- a/gcc/testsuite/gcc.target/riscv/arch-27.c
+++ b/gcc/testsuite/gcc.target/riscv/arch-27.c
@@ -4,4 +4,4 @@ int foo()
{
}
-/* { dg-error "ISA string is not in canonical order. 'e'" "" { target *-*-* } 0 } */
+/* { dg-error "i, e or g must be the first extension" "" { target *-*-* } 0 } */
diff --git a/gcc/testsuite/gcc.target/riscv/arch-28.c b/gcc/testsuite/gcc.target/riscv/arch-28.c
index 934399a..21c748e 100644
--- a/gcc/testsuite/gcc.target/riscv/arch-28.c
+++ b/gcc/testsuite/gcc.target/riscv/arch-28.c
@@ -4,4 +4,4 @@ int foo()
{
}
-/* { dg-error "ISA string is not in canonical order. 'e'" "" { target *-*-* } 0 } */
+/* { dg-error "i, e or g must be the first extension" "" { target *-*-* } 0 } */
diff --git a/gcc/testsuite/gcc.target/riscv/arch-33.c b/gcc/testsuite/gcc.target/riscv/arch-33.c
new file mode 100644
index 0000000..3fac928
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/arch-33.c
@@ -0,0 +1,5 @@
+/* { dg-do compile } */
+/* { dg-options "-march=rv64i_zba____zbs_mac_d -mabi=lp64d" } */
+int foo()
+{
+}
diff --git a/gcc/testsuite/gcc.target/riscv/arch-34.c b/gcc/testsuite/gcc.target/riscv/arch-34.c
new file mode 100644
index 0000000..9b9f1a7
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/arch-34.c
@@ -0,0 +1,5 @@
+/* { dg-do compile } */
+/* { dg-options "-march=rv64i_xtheadbs_zba_fcd -mabi=lp64d" } */
+int foo()
+{
+}
diff --git a/gcc/testsuite/gcc.target/riscv/attribute-10.c b/gcc/testsuite/gcc.target/riscv/attribute-10.c
index 868adef..4aaa2bb 100644
--- a/gcc/testsuite/gcc.target/riscv/attribute-10.c
+++ b/gcc/testsuite/gcc.target/riscv/attribute-10.c
@@ -3,4 +3,6 @@
int foo()
{
}
-/* { dg-error "unexpected ISA string at end:" "" { target { "riscv*-*-*" } } 0 } */
+/* { dg-error "extension 'u' is unsupported standard single letter extension" "" { target { "riscv*-*-*" } } 0 } */
+/* { dg-error "extension 'n' is unsupported standard single letter extension" "" { target { "riscv*-*-*" } } 0 } */
+/* { dg-error "i, e or g must be the first extension" "" { target { "riscv*-*-*" } } 0 } */
diff --git a/gcc/testsuite/gcc.target/riscv/cset-sext-rtl.c b/gcc/testsuite/gcc.target/riscv/cset-sext-rtl.c
new file mode 100644
index 0000000..e3611cc
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cset-sext-rtl.c
@@ -0,0 +1,87 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target rv64 } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-Og" "-Os" "-Oz" "-flto" } } */
+/* { dg-options "-march=rv64gc -mtune=sifive-5-series -mbranch-cost=6 -mmovcc -fdump-rtl-ce1" } */
+
+int __RTL (startwith ("ce1"))
+foo (long a, long b)
+{
+(function "foo"
+ (param "a"
+ (DECL_RTL (reg/v:DI <2> [ a ]))
+ (DECL_RTL_INCOMING (reg:DI a0 [ a ])))
+ (param "b"
+ (DECL_RTL (reg/v:DI <3> [ b ]))
+ (DECL_RTL_INCOMING (reg:DI a1 [ b ])))
+ (insn-chain
+ (block 2
+ (edge-from entry (flags "FALLTHRU"))
+ (cnote 6 [bb 2] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 2 (set (reg/v:DI <2> [ a ])
+ (reg:DI a0 [ a ])) "cset-sext.c":8:1
+ (expr_list:REG_DEAD (reg:DI a0 [ a ])))
+ (cinsn 3 (set (reg/v:DI <3> [ b ])
+ (reg:DI a1 [ b ])) "cset-sext.c":8:1
+ (expr_list:REG_DEAD (reg:DI a1 [ b ])))
+ (cnote 4 NOTE_INSN_FUNCTION_BEG)
+ (cjump_insn 8 (set (pc)
+ (if_then_else (eq (reg/v:DI <3> [ b ])
+ (const_int 0))
+ (label_ref:DI 24)
+ (pc))) "cset-sext.c":9:6
+ (expr_list:REG_DEAD (reg/v:DI <3> [ b ])
+ (int_list:REG_BR_PROB 365072228)))
+ (edge-to 4)
+ (edge-to 3 (flags "FALLTHRU"))
+ ) ;; block 2
+ (block 3
+ (edge-from 2 (flags "FALLTHRU"))
+ (cnote 9 [bb 3] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 10 (set (reg:SI <5>)
+ (ne:SI (reg/v:DI <2> [ a ])
+ (const_int 0))) "cset-sext.c":11:11
+ (expr_list:REG_DEAD (reg/v:DI <2> [ a ])))
+ (cinsn 11 (set (reg:DI <1> [ <retval> ])
+ (sign_extend:DI (reg:SI <5>))) "cset-sext.c":11:11
+ (expr_list:REG_DEAD (reg:SI <5>)))
+ (edge-to 5 (flags "FALLTHRU"))
+ ) ;; block 3
+ (block 4
+ (edge-from 2)
+ (clabel 24 3)
+ (cnote 23 [bb 4] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 5 (set (reg:DI <1> [ <retval> ])
+ (const_int 0)) "cset-sext.c":10:12)
+ (edge-to 5 (flags "FALLTHRU"))
+ ) ;; block 4
+ (block 5
+ (edge-from 4 (flags "FALLTHRU"))
+ (edge-from 3 (flags "FALLTHRU"))
+ (clabel 12 2)
+ (cnote 13 [bb 5] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 18 (set (reg/i:DI a0)
+ (reg:DI <1> [ <retval> ])) "cset-sext.c":15:1
+ (expr_list:REG_DEAD (reg:DI <1> [ <retval> ])))
+ (cinsn 19 (use (reg/i:DI a0)) "cset-sext.c":15:1)
+ (edge-to exit (flags "FALLTHRU"))
+ ) ;; block 5
+ ) ;; insn-chain
+ (crtl
+ (return_rtx
+ (reg/i:DI a0)
+ ) ;; return_rtx
+ ) ;; crtl
+) ;; function "foo"
+}
+
+/* Expect branchless assembly like:
+
+ snez a1,a1
+ neg a1,a1
+ snez a0,a0
+ and a0,a1,a0
+ */
+
+/* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_cmove_arith" 1 "ce1" } } */
+/* { dg-final { scan-assembler-times "\\ssnez\\s" 2 } } */
+/* { dg-final { scan-assembler-not "\\s(?:beq|bne)\\s" } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cset-sext-rtl32.c b/gcc/testsuite/gcc.target/riscv/cset-sext-rtl32.c
new file mode 100644
index 0000000..640576a7
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cset-sext-rtl32.c
@@ -0,0 +1,84 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target rv32 } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-Og" "-Os" "-Oz" "-flto" } } */
+/* { dg-options "-march=rv32gc -mtune=sifive-5-series -mbranch-cost=6 -mmovcc -fdump-rtl-ce1" } */
+
+int __RTL (startwith ("ce1"))
+foo (long a, long b)
+{
+(function "foo"
+ (param "a"
+ (DECL_RTL (reg/v:SI <2> [ a ]))
+ (DECL_RTL_INCOMING (reg:SI a0 [ a ])))
+ (param "b"
+ (DECL_RTL (reg/v:SI <3> [ b ]))
+ (DECL_RTL_INCOMING (reg:SI a1 [ b ])))
+ (insn-chain
+ (block 2
+ (edge-from entry (flags "FALLTHRU"))
+ (cnote 6 [bb 2] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 2 (set (reg/v:SI <2> [ a ])
+ (reg:SI a0 [ a ])) "cset-sext.c":8:1
+ (expr_list:REG_DEAD (reg:SI a0 [ a ])))
+ (cinsn 3 (set (reg/v:SI <3> [ b ])
+ (reg:SI a1 [ b ])) "cset-sext.c":8:1
+ (expr_list:REG_DEAD (reg:SI a1 [ b ])))
+ (cnote 4 NOTE_INSN_FUNCTION_BEG)
+ (cjump_insn 8 (set (pc)
+ (if_then_else (eq (reg/v:SI <3> [ b ])
+ (const_int 0))
+ (label_ref:SI 23)
+ (pc))) "cset-sext.c":9:6
+ (int_list:REG_BR_PROB 365072228))
+ (edge-to 4)
+ (edge-to 3 (flags "FALLTHRU"))
+ ) ;; block 2
+ (block 3
+ (edge-from 2 (flags "FALLTHRU"))
+ (cnote 9 [bb 3] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 10 (set (reg:SI <1> [ <retval> ])
+ (ne:SI (reg/v:SI <2> [ a ])
+ (const_int 0))) "cset-sext.c":11:11
+ (expr_list:REG_DEAD (reg/v:SI <2> [ a ])))
+ (edge-to 5 (flags "FALLTHRU"))
+ ) ;; block 3
+ (block 4
+ (edge-from 2)
+ (clabel 23 3)
+ (cnote 22 [bb 4] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 5 (set (reg:SI <1> [ <retval> ])
+ (const_int 0)) "cset-sext.c":10:12
+ (expr_list:REG_DEAD (reg/v:SI <3> [ b ])))
+ (edge-to 5 (flags "FALLTHRU"))
+ ) ;; block 4
+ (block 5
+ (edge-from 4 (flags "FALLTHRU"))
+ (edge-from 3 (flags "FALLTHRU"))
+ (clabel 16 1)
+ (cnote 19 [bb 5] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 17 (set (reg/i:SI a0)
+ (reg:SI <1> [ <retval> ])) "cset-sext.c":15:1
+ (expr_list:REG_DEAD (reg:SI <1> [ <retval> ])))
+ (cinsn 18 (use (reg/i:SI a0)) "cset-sext.c":15:1)
+ (edge-to exit (flags "FALLTHRU"))
+ ) ;; block 5
+ ) ;; insn-chain
+ (crtl
+ (return_rtx
+ (reg/i:SI a0)
+ ) ;; return_rtx
+ ) ;; crtl
+) ;; function "foo"
+}
+
+/* Expect branchless assembly like:
+
+ snez a1,a1
+ neg a1,a1
+ snez a0,a0
+ and a0,a1,a0
+ */
+
+/* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_cmove_arith" 1 "ce1" } } */
+/* { dg-final { scan-assembler-times "\\ssnez\\s" 2 } } */
+/* { dg-final { scan-assembler-not "\\s(?:beq|bne)\\s" } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cset-sext-sfb-rtl.c b/gcc/testsuite/gcc.target/riscv/cset-sext-sfb-rtl.c
new file mode 100644
index 0000000..93baa38
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cset-sext-sfb-rtl.c
@@ -0,0 +1,88 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target rv64 } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-Og" "-flto" } } */
+/* { dg-options "-march=rv64gc -mtune=sifive-7-series -mbranch-cost=1 -fdump-rtl-ce1" } */
+
+int __RTL (startwith ("ce1"))
+foo (long a, long b)
+{
+(function "foo"
+ (param "a"
+ (DECL_RTL (reg/v:DI <2> [ a ]))
+ (DECL_RTL_INCOMING (reg:DI a0 [ a ])))
+ (param "b"
+ (DECL_RTL (reg/v:DI <3> [ b ]))
+ (DECL_RTL_INCOMING (reg:DI a1 [ b ])))
+ (insn-chain
+ (block 2
+ (edge-from entry (flags "FALLTHRU"))
+ (cnote 6 [bb 2] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 2 (set (reg/v:DI <2> [ a ])
+ (reg:DI a0 [ a ])) "cset-sext-sfb.c":8:1
+ (expr_list:REG_DEAD (reg:DI a0 [ a ])))
+ (cinsn 3 (set (reg/v:DI <3> [ b ])
+ (reg:DI a1 [ b ])) "cset-sext-sfb.c":8:1
+ (expr_list:REG_DEAD (reg:DI a1 [ b ])))
+ (cnote 4 NOTE_INSN_FUNCTION_BEG)
+ (cjump_insn 8 (set (pc)
+ (if_then_else (eq (reg/v:DI <3> [ b ])
+ (const_int 0))
+ (label_ref:DI 24)
+ (pc))) "cset-sext-sfb.c":9:6
+ (expr_list:REG_DEAD (reg/v:DI <3> [ b ])
+ (int_list:REG_BR_PROB 365072228)))
+ (edge-to 4)
+ (edge-to 3 (flags "FALLTHRU"))
+ ) ;; block 2
+ (block 3
+ (edge-from 2 (flags "FALLTHRU"))
+ (cnote 9 [bb 3] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 10 (set (reg:SI <5>)
+ (ne:SI (reg/v:DI <2> [ a ])
+ (const_int 0))) "cset-sext-sfb.c":11:11
+ (expr_list:REG_DEAD (reg/v:DI <2> [ a ])))
+ (cinsn 11 (set (reg:DI <1> [ <retval> ])
+ (sign_extend:DI (reg:SI <5>))) "cset-sext-sfb.c":11:11
+ (expr_list:REG_DEAD (reg:SI <5>)))
+ (edge-to 5 (flags "FALLTHRU"))
+ ) ;; block 3
+ (block 4
+ (edge-from 2)
+ (clabel 24 3)
+ (cnote 23 [bb 4] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 5 (set (reg:DI <1> [ <retval> ])
+ (const_int 0)) "cset-sext-sfb.c":10:12)
+ (edge-to 5 (flags "FALLTHRU"))
+ ) ;; block 4
+ (block 5
+ (edge-from 4 (flags "FALLTHRU"))
+ (edge-from 3 (flags "FALLTHRU"))
+ (clabel 12 2)
+ (cnote 13 [bb 5] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 18 (set (reg/i:DI a0)
+ (reg:DI <1> [ <retval> ])) "cset-sext-sfb.c":15:1
+ (expr_list:REG_DEAD (reg:DI <1> [ <retval> ])))
+ (cinsn 19 (use (reg/i:DI a0)) "cset-sext-sfb.c":15:1)
+ (edge-to exit (flags "FALLTHRU"))
+ ) ;; block 5
+ ) ;; insn-chain
+ (crtl
+ (return_rtx
+ (reg/i:DI a0)
+ ) ;; return_rtx
+ ) ;; crtl
+) ;; function "foo"
+}
+
+/* Expect short forward branch assembly like:
+
+ snez a0,a0
+ bne a1,zero,1f # movcc
+ mv a0,zero
+1:
+ */
+
+/* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_cmove_arith" 1 "ce1" } } */
+/* { dg-final { scan-assembler-times "\\ssnez\\s" 1 } } */
+/* { dg-final { scan-assembler-times "\\sbne\\s\[^\\s\]+\\s# movcc\\s" 1 } } */
+/* { dg-final { scan-assembler-not "\\sbeq\\s" } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cset-sext-sfb-rtl32.c b/gcc/testsuite/gcc.target/riscv/cset-sext-sfb-rtl32.c
new file mode 100644
index 0000000..16b702b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cset-sext-sfb-rtl32.c
@@ -0,0 +1,85 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target rv32 } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-Og" "-flto" } } */
+/* { dg-options "-march=rv32gc -mtune=sifive-7-series -mbranch-cost=1 -fdump-rtl-ce1" } */
+
+int __RTL (startwith ("ce1"))
+foo (long a, long b)
+{
+(function "foo"
+ (param "a"
+ (DECL_RTL (reg/v:SI <2> [ a ]))
+ (DECL_RTL_INCOMING (reg:SI a0 [ a ])))
+ (param "b"
+ (DECL_RTL (reg/v:SI <3> [ b ]))
+ (DECL_RTL_INCOMING (reg:SI a1 [ b ])))
+ (insn-chain
+ (block 2
+ (edge-from entry (flags "FALLTHRU"))
+ (cnote 6 [bb 2] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 2 (set (reg/v:SI <2> [ a ])
+ (reg:SI a0 [ a ])) "cset-sext-sfb.c":8:1
+ (expr_list:REG_DEAD (reg:SI a0 [ a ])))
+ (cinsn 3 (set (reg/v:SI <3> [ b ])
+ (reg:SI a1 [ b ])) "cset-sext-sfb.c":8:1
+ (expr_list:REG_DEAD (reg:SI a1 [ b ])))
+ (cnote 4 NOTE_INSN_FUNCTION_BEG)
+ (cjump_insn 8 (set (pc)
+ (if_then_else (eq (reg/v:SI <3> [ b ])
+ (const_int 0))
+ (label_ref:SI 23)
+ (pc))) "cset-sext-sfb.c":9:6
+ (int_list:REG_BR_PROB 365072228))
+ (edge-to 4)
+ (edge-to 3 (flags "FALLTHRU"))
+ ) ;; block 2
+ (block 3
+ (edge-from 2 (flags "FALLTHRU"))
+ (cnote 9 [bb 3] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 10 (set (reg:SI <1> [ <retval> ])
+ (ne:SI (reg/v:SI <2> [ a ])
+ (const_int 0))) "cset-sext-sfb.c":11:11
+ (expr_list:REG_DEAD (reg/v:SI <2> [ a ])))
+ (edge-to 5 (flags "FALLTHRU"))
+ ) ;; block 3
+ (block 4
+ (edge-from 2)
+ (clabel 23 3)
+ (cnote 22 [bb 4] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 5 (set (reg:SI <1> [ <retval> ])
+ (const_int 0)) "cset-sext-sfb.c":10:12
+ (expr_list:REG_DEAD (reg/v:SI <3> [ b ])))
+ (edge-to 5 (flags "FALLTHRU"))
+ ) ;; block 4
+ (block 5
+ (edge-from 4 (flags "FALLTHRU"))
+ (edge-from 3 (flags "FALLTHRU"))
+ (clabel 16 1)
+ (cnote 19 [bb 5] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 17 (set (reg/i:SI a0)
+ (reg:SI <1> [ <retval> ])) "cset-sext-sfb.c":15:1
+ (expr_list:REG_DEAD (reg:SI <1> [ <retval> ])))
+ (cinsn 18 (use (reg/i:SI a0)) "cset-sext-sfb.c":15:1)
+ (edge-to exit (flags "FALLTHRU"))
+ ) ;; block 5
+ ) ;; insn-chain
+ (crtl
+ (return_rtx
+ (reg/i:SI a0)
+ ) ;; return_rtx
+ ) ;; crtl
+) ;; function "foo"
+}
+
+/* Expect short forward branch assembly like:
+
+ snez a0,a0
+ bne a1,zero,1f # movcc
+ mv a0,zero
+1:
+ */
+
+/* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_cmove_arith" 1 "ce1" } } */
+/* { dg-final { scan-assembler-times "\\ssnez\\s" 1 } } */
+/* { dg-final { scan-assembler-times "\\sbne\\s\[^\\s\]+\\s# movcc\\s" 1 } } */
+/* { dg-final { scan-assembler-not "\\sbeq\\s" } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cset-sext-thead-rtl.c b/gcc/testsuite/gcc.target/riscv/cset-sext-thead-rtl.c
new file mode 100644
index 0000000..9671796
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cset-sext-thead-rtl.c
@@ -0,0 +1,86 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target rv64 } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-Og" "-flto" } } */
+/* { dg-options "-march=rv64gc_xtheadcondmov -mtune=thead-c906 -mbranch-cost=1 -fdump-rtl-ce1" } */
+
+int __RTL (startwith ("ce1"))
+foo (long a, long b)
+{
+(function "foo"
+ (param "a"
+ (DECL_RTL (reg/v:DI <2> [ a ]))
+ (DECL_RTL_INCOMING (reg:DI a0 [ a ])))
+ (param "b"
+ (DECL_RTL (reg/v:DI <3> [ b ]))
+ (DECL_RTL_INCOMING (reg:DI a1 [ b ])))
+ (insn-chain
+ (block 2
+ (edge-from entry (flags "FALLTHRU"))
+ (cnote 6 [bb 2] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 2 (set (reg/v:DI <2> [ a ])
+ (reg:DI a0 [ a ])) "cset-sext-thead.c":8:1
+ (expr_list:REG_DEAD (reg:DI a0 [ a ])))
+ (cinsn 3 (set (reg/v:DI <3> [ b ])
+ (reg:DI a1 [ b ])) "cset-sext-thead.c":8:1
+ (expr_list:REG_DEAD (reg:DI a1 [ b ])))
+ (cnote 4 NOTE_INSN_FUNCTION_BEG)
+ (cjump_insn 8 (set (pc)
+ (if_then_else (eq (reg/v:DI <3> [ b ])
+ (const_int 0))
+ (label_ref:DI 24)
+ (pc))) "cset-sext-thead.c":9:6
+ (expr_list:REG_DEAD (reg/v:DI <3> [ b ])
+ (int_list:REG_BR_PROB 365072228)))
+ (edge-to 4)
+ (edge-to 3 (flags "FALLTHRU"))
+ ) ;; block 2
+ (block 3
+ (edge-from 2 (flags "FALLTHRU"))
+ (cnote 9 [bb 3] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 10 (set (reg:SI <5>)
+ (ne:SI (reg/v:DI <2> [ a ])
+ (const_int 0))) "cset-sext-thead.c":11:11
+ (expr_list:REG_DEAD (reg/v:DI <2> [ a ])))
+ (cinsn 11 (set (reg:DI <1> [ <retval> ])
+ (sign_extend:DI (reg:SI <5>))) "cset-sext-thead.c":11:11
+ (expr_list:REG_DEAD (reg:SI <5>)))
+ (edge-to 5 (flags "FALLTHRU"))
+ ) ;; block 3
+ (block 4
+ (edge-from 2)
+ (clabel 24 3)
+ (cnote 23 [bb 4] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 5 (set (reg:DI <1> [ <retval> ])
+ (const_int 0)) "cset-sext-thead.c":10:12)
+ (edge-to 5 (flags "FALLTHRU"))
+ ) ;; block 4
+ (block 5
+ (edge-from 4 (flags "FALLTHRU"))
+ (edge-from 3 (flags "FALLTHRU"))
+ (clabel 12 2)
+ (cnote 13 [bb 5] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 18 (set (reg/i:DI a0)
+ (reg:DI <1> [ <retval> ])) "cset-sext-thead.c":15:1
+ (expr_list:REG_DEAD (reg:DI <1> [ <retval> ])))
+ (cinsn 19 (use (reg/i:DI a0)) "cset-sext-thead.c":15:1)
+ (edge-to exit (flags "FALLTHRU"))
+ ) ;; block 5
+ ) ;; insn-chain
+ (crtl
+ (return_rtx
+ (reg/i:DI a0)
+ ) ;; return_rtx
+ ) ;; crtl
+) ;; function "foo"
+}
+
+/* Expect branchless assembly like:
+
+ snez a0,a0
+ th.mveqz a0,zero,a1
+ */
+
+/* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_cmove_arith" 1 "ce1" } } */
+/* { dg-final { scan-assembler-times "\\ssnez\\s" 1 } } */
+/* { dg-final { scan-assembler-times "\\s(?:th\\.mveqz|th\\.mvnez)\\s" 1 } } */
+/* { dg-final { scan-assembler-not "\\s(?:beq|bne)\\s" } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cset-sext-ventana-rtl.c b/gcc/testsuite/gcc.target/riscv/cset-sext-ventana-rtl.c
new file mode 100644
index 0000000..6436725
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cset-sext-ventana-rtl.c
@@ -0,0 +1,86 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target rv64 } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-Og" "-flto" } } */
+/* { dg-options "-march=rv64gc_xventanacondops -mtune=rocket -mbranch-cost=3 -fdump-rtl-ce1" } */
+
+int __RTL (startwith ("ce1"))
+foo (long a, long b)
+{
+(function "foo"
+ (param "a"
+ (DECL_RTL (reg/v:DI <2> [ a ]))
+ (DECL_RTL_INCOMING (reg:DI a0 [ a ])))
+ (param "b"
+ (DECL_RTL (reg/v:DI <3> [ b ]))
+ (DECL_RTL_INCOMING (reg:DI a1 [ b ])))
+ (insn-chain
+ (block 2
+ (edge-from entry (flags "FALLTHRU"))
+ (cnote 6 [bb 2] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 2 (set (reg/v:DI <2> [ a ])
+ (reg:DI a0 [ a ])) "cset-sext-ventana.c":8:1
+ (expr_list:REG_DEAD (reg:DI a0 [ a ])))
+ (cinsn 3 (set (reg/v:DI <3> [ b ])
+ (reg:DI a1 [ b ])) "cset-sext-ventana.c":8:1
+ (expr_list:REG_DEAD (reg:DI a1 [ b ])))
+ (cnote 4 NOTE_INSN_FUNCTION_BEG)
+ (cjump_insn 8 (set (pc)
+ (if_then_else (eq (reg/v:DI <3> [ b ])
+ (const_int 0))
+ (label_ref:DI 24)
+ (pc))) "cset-sext-ventana.c":9:6
+ (expr_list:REG_DEAD (reg/v:DI <3> [ b ])
+ (int_list:REG_BR_PROB 365072228)))
+ (edge-to 4)
+ (edge-to 3 (flags "FALLTHRU"))
+ ) ;; block 2
+ (block 3
+ (edge-from 2 (flags "FALLTHRU"))
+ (cnote 9 [bb 3] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 10 (set (reg:SI <5>)
+ (ne:SI (reg/v:DI <2> [ a ])
+ (const_int 0))) "cset-sext-ventana.c":11:11
+ (expr_list:REG_DEAD (reg/v:DI <2> [ a ])))
+ (cinsn 11 (set (reg:DI <1> [ <retval> ])
+ (sign_extend:DI (reg:SI <5>))) "cset-sext-ventana.c":11:11
+ (expr_list:REG_DEAD (reg:SI <5>)))
+ (edge-to 5 (flags "FALLTHRU"))
+ ) ;; block 3
+ (block 4
+ (edge-from 2)
+ (clabel 24 3)
+ (cnote 23 [bb 4] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 5 (set (reg:DI <1> [ <retval> ])
+ (const_int 0)) "cset-sext-ventana.c":10:12)
+ (edge-to 5 (flags "FALLTHRU"))
+ ) ;; block 4
+ (block 5
+ (edge-from 4 (flags "FALLTHRU"))
+ (edge-from 3 (flags "FALLTHRU"))
+ (clabel 12 2)
+ (cnote 13 [bb 5] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 18 (set (reg/i:DI a0)
+ (reg:DI <1> [ <retval> ])) "cset-sext-ventana.c":15:1
+ (expr_list:REG_DEAD (reg:DI <1> [ <retval> ])))
+ (cinsn 19 (use (reg/i:DI a0)) "cset-sext-ventana.c":15:1)
+ (edge-to exit (flags "FALLTHRU"))
+ ) ;; block 5
+ ) ;; insn-chain
+ (crtl
+ (return_rtx
+ (reg/i:DI a0)
+ ) ;; return_rtx
+ ) ;; crtl
+) ;; function "foo"
+}
+
+/* Expect branchless assembly like:
+
+ snez a0,a0
+ vt.maskc a0,a0,a1
+ */
+
+/* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_cmove_arith" 1 "ce1" } } */
+/* { dg-final { scan-assembler-times "\\ssnez\\s" 1 } } */
+/* { dg-final { scan-assembler-times "\\svt\\.maskc\\s" 1 } } */
+/* { dg-final { scan-assembler-not "\\s(?:beq|bne)\\s" } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cset-sext-zicond-rtl.c b/gcc/testsuite/gcc.target/riscv/cset-sext-zicond-rtl.c
new file mode 100644
index 0000000..f6c82d5
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cset-sext-zicond-rtl.c
@@ -0,0 +1,86 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target rv64 } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-Og" "-flto" } } */
+/* { dg-options "-march=rv64gc_zicond -mtune=rocket -mbranch-cost=3 -fdump-rtl-ce1" } */
+
+int __RTL (startwith ("ce1"))
+foo (long a, long b)
+{
+(function "foo"
+ (param "a"
+ (DECL_RTL (reg/v:DI <2> [ a ]))
+ (DECL_RTL_INCOMING (reg:DI a0 [ a ])))
+ (param "b"
+ (DECL_RTL (reg/v:DI <3> [ b ]))
+ (DECL_RTL_INCOMING (reg:DI a1 [ b ])))
+ (insn-chain
+ (block 2
+ (edge-from entry (flags "FALLTHRU"))
+ (cnote 6 [bb 2] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 2 (set (reg/v:DI <2> [ a ])
+ (reg:DI a0 [ a ])) "cset-sext-zicond.c":8:1
+ (expr_list:REG_DEAD (reg:DI a0 [ a ])))
+ (cinsn 3 (set (reg/v:DI <3> [ b ])
+ (reg:DI a1 [ b ])) "cset-sext-zicond.c":8:1
+ (expr_list:REG_DEAD (reg:DI a1 [ b ])))
+ (cnote 4 NOTE_INSN_FUNCTION_BEG)
+ (cjump_insn 8 (set (pc)
+ (if_then_else (eq (reg/v:DI <3> [ b ])
+ (const_int 0))
+ (label_ref:DI 24)
+ (pc))) "cset-sext-zicond.c":9:6
+ (expr_list:REG_DEAD (reg/v:DI <3> [ b ])
+ (int_list:REG_BR_PROB 365072228)))
+ (edge-to 4)
+ (edge-to 3 (flags "FALLTHRU"))
+ ) ;; block 2
+ (block 3
+ (edge-from 2 (flags "FALLTHRU"))
+ (cnote 9 [bb 3] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 10 (set (reg:SI <5>)
+ (ne:SI (reg/v:DI <2> [ a ])
+ (const_int 0))) "cset-sext-zicond.c":11:11
+ (expr_list:REG_DEAD (reg/v:DI <2> [ a ])))
+ (cinsn 11 (set (reg:DI <1> [ <retval> ])
+ (sign_extend:DI (reg:SI <5>))) "cset-sext-zicond.c":11:11
+ (expr_list:REG_DEAD (reg:SI <5>)))
+ (edge-to 5 (flags "FALLTHRU"))
+ ) ;; block 3
+ (block 4
+ (edge-from 2)
+ (clabel 24 3)
+ (cnote 23 [bb 4] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 5 (set (reg:DI <1> [ <retval> ])
+ (const_int 0)) "cset-sext-zicond.c":10:12)
+ (edge-to 5 (flags "FALLTHRU"))
+ ) ;; block 4
+ (block 5
+ (edge-from 4 (flags "FALLTHRU"))
+ (edge-from 3 (flags "FALLTHRU"))
+ (clabel 12 2)
+ (cnote 13 [bb 5] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 18 (set (reg/i:DI a0)
+ (reg:DI <1> [ <retval> ])) "cset-sext-zicond.c":15:1
+ (expr_list:REG_DEAD (reg:DI <1> [ <retval> ])))
+ (cinsn 19 (use (reg/i:DI a0)) "cset-sext-zicond.c":15:1)
+ (edge-to exit (flags "FALLTHRU"))
+ ) ;; block 5
+ ) ;; insn-chain
+ (crtl
+ (return_rtx
+ (reg/i:DI a0)
+ ) ;; return_rtx
+ ) ;; crtl
+) ;; function "foo"
+}
+
+/* Expect branchless assembly like:
+
+ snez a0,a0
+ czero.eqz a0,a0,a1
+ */
+
+/* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_cmove_arith" 1 "ce1" } } */
+/* { dg-final { scan-assembler-times "\\ssnez\\s" 1 } } */
+/* { dg-final { scan-assembler-times "\\sczero\\.eqz\\s" 1 } } */
+/* { dg-final { scan-assembler-not "\\s(?:beq|bne)\\s" } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cset-sext-zicond-rtl32.c b/gcc/testsuite/gcc.target/riscv/cset-sext-zicond-rtl32.c
new file mode 100644
index 0000000..6896df3
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cset-sext-zicond-rtl32.c
@@ -0,0 +1,83 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target rv32 } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-Og" "-flto" } } */
+/* { dg-options "-march=rv32gc_zicond -mtune=rocket -mbranch-cost=3 -fdump-rtl-ce1" } */
+
+int __RTL (startwith ("ce1"))
+foo (long a, long b)
+{
+(function "foo"
+ (param "a"
+ (DECL_RTL (reg/v:SI <2> [ a ]))
+ (DECL_RTL_INCOMING (reg:SI a0 [ a ])))
+ (param "b"
+ (DECL_RTL (reg/v:SI <3> [ b ]))
+ (DECL_RTL_INCOMING (reg:SI a1 [ b ])))
+ (insn-chain
+ (block 2
+ (edge-from entry (flags "FALLTHRU"))
+ (cnote 6 [bb 2] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 2 (set (reg/v:SI <2> [ a ])
+ (reg:SI a0 [ a ])) "cset-sext-zicond.c":8:1
+ (expr_list:REG_DEAD (reg:SI a0 [ a ])))
+ (cinsn 3 (set (reg/v:SI <3> [ b ])
+ (reg:SI a1 [ b ])) "cset-sext-zicond.c":8:1
+ (expr_list:REG_DEAD (reg:SI a1 [ b ])))
+ (cnote 4 NOTE_INSN_FUNCTION_BEG)
+ (cjump_insn 8 (set (pc)
+ (if_then_else (eq (reg/v:SI <3> [ b ])
+ (const_int 0))
+ (label_ref:SI 23)
+ (pc))) "cset-sext-zicond.c":9:6
+ (int_list:REG_BR_PROB 365072228))
+ (edge-to 4)
+ (edge-to 3 (flags "FALLTHRU"))
+ ) ;; block 2
+ (block 3
+ (edge-from 2 (flags "FALLTHRU"))
+ (cnote 9 [bb 3] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 10 (set (reg:SI <1> [ <retval> ])
+ (ne:SI (reg/v:SI <2> [ a ])
+ (const_int 0))) "cset-sext-zicond.c":11:11
+ (expr_list:REG_DEAD (reg/v:SI <2> [ a ])))
+ (edge-to 5 (flags "FALLTHRU"))
+ ) ;; block 3
+ (block 4
+ (edge-from 2)
+ (clabel 23 3)
+ (cnote 22 [bb 4] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 5 (set (reg:SI <1> [ <retval> ])
+ (const_int 0)) "cset-sext-zicond.c":10:12
+ (expr_list:REG_DEAD (reg/v:SI <3> [ b ])))
+ (edge-to 5 (flags "FALLTHRU"))
+ ) ;; block 4
+ (block 5
+ (edge-from 4 (flags "FALLTHRU"))
+ (edge-from 3 (flags "FALLTHRU"))
+ (clabel 16 1)
+ (cnote 19 [bb 5] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 17 (set (reg/i:SI a0)
+ (reg:SI <1> [ <retval> ])) "cset-sext-zicond.c":15:1
+ (expr_list:REG_DEAD (reg:SI <1> [ <retval> ])))
+ (cinsn 18 (use (reg/i:SI a0)) "cset-sext-zicond.c":15:1)
+ (edge-to exit (flags "FALLTHRU"))
+ ) ;; block 5
+ ) ;; insn-chain
+ (crtl
+ (return_rtx
+ (reg/i:SI a0)
+ ) ;; return_rtx
+ ) ;; crtl
+) ;; function "foo"
+}
+
+/* Expect branchless assembly like:
+
+ snez a0,a0
+ czero.eqz a0,a0,a1
+ */
+
+/* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_cmove_arith" 1 "ce1" } } */
+/* { dg-final { scan-assembler-times "\\ssnez\\s" 1 } } */
+/* { dg-final { scan-assembler-times "\\sczero\\.eqz\\s" 1 } } */
+/* { dg-final { scan-assembler-not "\\s(?:beq|bne)\\s" } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-alu-fail-compile.c b/gcc/testsuite/gcc.target/riscv/cv-alu-fail-compile.c
index bbdb2d5..89c7f6f 100644
--- a/gcc/testsuite/gcc.target/riscv/cv-alu-fail-compile.c
+++ b/gcc/testsuite/gcc.target/riscv/cv-alu-fail-compile.c
@@ -7,26 +7,26 @@ extern int d;
int
foo(int a, int b, int c)
{
- d += __builtin_riscv_cv_alu_slet (a, b); /* { dg-warning "implicit declaration of function" } */
- d += __builtin_riscv_cv_alu_sletu (a, b); /* { dg-warning "implicit declaration of function" } */
- d += __builtin_riscv_cv_alu_addN (a, b, 31); /* { dg-warning "implicit declaration of function" } */
- d += __builtin_riscv_cv_alu_addRN (a, b, 31); /* { dg-warning "implicit declaration of function" } */
- d += __builtin_riscv_cv_alu_adduN (a, b, 31); /* { dg-warning "implicit declaration of function" } */
- d += __builtin_riscv_cv_alu_adduRN (a, b, 31); /* { dg-warning "implicit declaration of function" } */
- d += __builtin_riscv_cv_alu_clip (a, 31); /* { dg-warning "implicit declaration of function" } */
- d += __builtin_riscv_cv_alu_clipu (a, 35); /* { dg-warning "implicit declaration of function" } */
- d += __builtin_riscv_cv_alu_extbs (a); /* { dg-warning "implicit declaration of function" } */
- d += __builtin_riscv_cv_alu_extbz (a); /* { dg-warning "implicit declaration of function" } */
- d += __builtin_riscv_cv_alu_exths (a); /* { dg-warning "implicit declaration of function" } */
- d += __builtin_riscv_cv_alu_exthz (a); /* { dg-warning "implicit declaration of function" } */
- d += __builtin_riscv_cv_alu_min (a, b); /* { dg-warning "implicit declaration of function" } */
- d += __builtin_riscv_cv_alu_minu (a, b); /* { dg-warning "implicit declaration of function" } */
- d += __builtin_riscv_cv_alu_max (a, b); /* { dg-warning "implicit declaration of function" } */
- d += __builtin_riscv_cv_alu_maxu (a, b); /* { dg-warning "implicit declaration of function" } */
- d += __builtin_riscv_cv_alu_subN (a, b, 31); /* { dg-warning "implicit declaration of function" } */
- d += __builtin_riscv_cv_alu_subRN (a, b, 31); /* { dg-warning "implicit declaration of function" } */
- d += __builtin_riscv_cv_alu_subuN (a, b, 31); /* { dg-warning "implicit declaration of function" } */
- d += __builtin_riscv_cv_alu_subuRN (a, b, 31); /* { dg-warning "implicit declaration of function" } */
+ d += __builtin_riscv_cv_alu_slet (a, b); /* { dg-error "implicit declaration of function" } */
+ d += __builtin_riscv_cv_alu_sletu (a, b); /* { dg-error "implicit declaration of function" } */
+ d += __builtin_riscv_cv_alu_addN (a, b, 31); /* { dg-error "implicit declaration of function" } */
+ d += __builtin_riscv_cv_alu_addRN (a, b, 31); /* { dg-error "implicit declaration of function" } */
+ d += __builtin_riscv_cv_alu_adduN (a, b, 31); /* { dg-error "implicit declaration of function" } */
+ d += __builtin_riscv_cv_alu_adduRN (a, b, 31); /* { dg-error "implicit declaration of function" } */
+ d += __builtin_riscv_cv_alu_clip (a, 31); /* { dg-error "implicit declaration of function" } */
+ d += __builtin_riscv_cv_alu_clipu (a, 35); /* { dg-error "implicit declaration of function" } */
+ d += __builtin_riscv_cv_alu_extbs (a); /* { dg-error "implicit declaration of function" } */
+ d += __builtin_riscv_cv_alu_extbz (a); /* { dg-error "implicit declaration of function" } */
+ d += __builtin_riscv_cv_alu_exths (a); /* { dg-error "implicit declaration of function" } */
+ d += __builtin_riscv_cv_alu_exthz (a); /* { dg-error "implicit declaration of function" } */
+ d += __builtin_riscv_cv_alu_min (a, b); /* { dg-error "implicit declaration of function" } */
+ d += __builtin_riscv_cv_alu_minu (a, b); /* { dg-error "implicit declaration of function" } */
+ d += __builtin_riscv_cv_alu_max (a, b); /* { dg-error "implicit declaration of function" } */
+ d += __builtin_riscv_cv_alu_maxu (a, b); /* { dg-error "implicit declaration of function" } */
+ d += __builtin_riscv_cv_alu_subN (a, b, 31); /* { dg-error "implicit declaration of function" } */
+ d += __builtin_riscv_cv_alu_subRN (a, b, 31); /* { dg-error "implicit declaration of function" } */
+ d += __builtin_riscv_cv_alu_subuN (a, b, 31); /* { dg-error "implicit declaration of function" } */
+ d += __builtin_riscv_cv_alu_subuRN (a, b, 31); /* { dg-error "implicit declaration of function" } */
return d;
}
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-abs-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-abs-b-compile-1.c
new file mode 100644
index 0000000..c8d5872
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-abs-b-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a)
+{
+ return __builtin_riscv_cv_simd_abs_b(a);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.abs\\.b" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-abs-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-abs-h-compile-1.c
new file mode 100644
index 0000000..9ebb905
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-abs-h-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a)
+{
+ return __builtin_riscv_cv_simd_abs_h(a);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.abs\\.h" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-add-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-add-b-compile-1.c
new file mode 100644
index 0000000..b362e90
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-add-b-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_add_b(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.add\\.b" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-add-div2-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-add-div2-compile-1.c
new file mode 100644
index 0000000..8e885a1
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-add-div2-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_add_h(a, b, 1);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.add\\.div2" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-add-div4-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-add-div4-compile-1.c
new file mode 100644
index 0000000..3edea7b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-add-div4-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_add_h(a, b, 2);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.add\\.div4" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-add-div8-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-add-div8-compile-1.c
new file mode 100644
index 0000000..df43c20
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-add-div8-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_add_h(a, b, 3);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.add\\.div8" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-add-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-add-h-compile-1.c
new file mode 100644
index 0000000..27b2cc3
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-add-h-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_add_h(a, b, 0);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.add\\.h" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-add-sc-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-add-sc-b-compile-1.c
new file mode 100644
index 0000000..43f37a8
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-add-sc-b-compile-1.c
@@ -0,0 +1,30 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_add_sc_b(a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_add_sc_b(a, -32);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_add_sc_b(a, 0);
+}
+
+int
+foo4 (int a)
+{
+ return __builtin_riscv_cv_simd_add_sc_b(a, 31);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.add\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.add\\.sci\\.b" 3 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-add-sc-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-add-sc-h-compile-1.c
new file mode 100644
index 0000000..99cd7b4
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-add-sc-h-compile-1.c
@@ -0,0 +1,30 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_add_sc_h(a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_add_sc_h(a, -32);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_add_sc_h(a, 0);
+}
+
+int
+foo4 (int a)
+{
+ return __builtin_riscv_cv_simd_add_sc_h(a, 31);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.add\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.add\\.sci\\.h" 3 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-and-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-and-b-compile-1.c
new file mode 100644
index 0000000..6be001d
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-and-b-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_and_b(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.and\\.b" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-and-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-and-h-compile-1.c
new file mode 100644
index 0000000..770c3e5
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-and-h-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_and_h(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.and\\.h" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-and-sc-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-and-sc-b-compile-1.c
new file mode 100644
index 0000000..616a923
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-and-sc-b-compile-1.c
@@ -0,0 +1,30 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_and_sc_b(a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_and_sc_b(a, -32);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_and_sc_b(a, 0);
+}
+
+int
+foo4 (int a)
+{
+ return __builtin_riscv_cv_simd_and_sc_b(a, 31);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.and\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.and\\.sci\\.b" 3 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-and-sc-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-and-sc-h-compile-1.c
new file mode 100644
index 0000000..73ceba6
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-and-sc-h-compile-1.c
@@ -0,0 +1,30 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_and_sc_h(a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_and_sc_h(a, -32);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_and_sc_h(a, 0);
+}
+
+int
+foo4 (int a)
+{
+ return __builtin_riscv_cv_simd_and_sc_h(a, 31);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.and\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.and\\.sci\\.h" 3 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-avg-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-avg-b-compile-1.c
new file mode 100644
index 0000000..21ae43a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-avg-b-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_avg_b(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.avg\\.b" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-avg-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-avg-h-compile-1.c
new file mode 100644
index 0000000..f2582d4
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-avg-h-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_avg_h(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.avg\\.h" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-avg-sc-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-avg-sc-b-compile-1.c
new file mode 100644
index 0000000..a72a9ef
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-avg-sc-b-compile-1.c
@@ -0,0 +1,30 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_avg_sc_b(a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_avg_sc_b(a, -32);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_avg_sc_b(a, 0);
+}
+
+int
+foo4 (int a)
+{
+ return __builtin_riscv_cv_simd_avg_sc_b(a, 31);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.avg\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.avg\\.sci\\.b" 3 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-avg-sc-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-avg-sc-h-compile-1.c
new file mode 100644
index 0000000..41cd20f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-avg-sc-h-compile-1.c
@@ -0,0 +1,30 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_avg_sc_h(a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_avg_sc_h(a, -32);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_avg_sc_h(a, 0);
+}
+
+int
+foo4 (int a)
+{
+ return __builtin_riscv_cv_simd_avg_sc_h(a, 31);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.avg\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.avg\\.sci\\.h" 3 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-avgu-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-avgu-b-compile-1.c
new file mode 100644
index 0000000..a17a923
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-avgu-b-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_avgu_b(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.avgu\\.b" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-avgu-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-avgu-h-compile-1.c
new file mode 100644
index 0000000..8f7c62c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-avgu-h-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_avgu_h(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.avgu\\.h" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-avgu-sc-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-avgu-sc-b-compile-1.c
new file mode 100644
index 0000000..7e00a5b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-avgu-sc-b-compile-1.c
@@ -0,0 +1,24 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_avgu_sc_b(a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_avgu_sc_b(a, 0);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_avgu_sc_b(a, 63);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.avgu\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.avgu\\.sci\\.b" 2 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-avgu-sc-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-avgu-sc-h-compile-1.c
new file mode 100644
index 0000000..f024d0e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-avgu-sc-h-compile-1.c
@@ -0,0 +1,24 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_avgu_sc_h(a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_avgu_sc_h(a, 0);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_avgu_sc_h(a, 63);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.avgu\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.avgu\\.sci\\.h" 2 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-cmpeq-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpeq-b-compile-1.c
new file mode 100644
index 0000000..7ac9cb2
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpeq-b-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpeq_b(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.cmpeq\\.b" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-cmpeq-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpeq-h-compile-1.c
new file mode 100644
index 0000000..8fc1eb0
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpeq-h-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpeq_h(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.cmpeq\\.h" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-cmpeq-sc-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpeq-sc-b-compile-1.c
new file mode 100644
index 0000000..5a0adcd
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpeq-sc-b-compile-1.c
@@ -0,0 +1,30 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpeq_sc_b(a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpeq_sc_b(a, -32);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpeq_sc_b(a, 0);
+}
+
+int
+foo4 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpeq_sc_b(a, 31);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.cmpeq\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpeq\\.sci\\.b" 3 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-cmpeq-sc-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpeq-sc-h-compile-1.c
new file mode 100644
index 0000000..c1aeb7e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpeq-sc-h-compile-1.c
@@ -0,0 +1,30 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpeq_sc_h(a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpeq_sc_h(a, -32);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpeq_sc_h(a, 0);
+}
+
+int
+foo4 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpeq_sc_h(a, 31);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.cmpeq\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpeq\\.sci\\.h" 3 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-cmpge-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpge-b-compile-1.c
new file mode 100644
index 0000000..74c5a17
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpge-b-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpge_b(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.cmpge\\.b" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-cmpge-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpge-h-compile-1.c
new file mode 100644
index 0000000..32b509e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpge-h-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpge_h(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.cmpge\\.h" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-cmpge-sc-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpge-sc-b-compile-1.c
new file mode 100644
index 0000000..4e4bbee
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpge-sc-b-compile-1.c
@@ -0,0 +1,30 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpge_sc_b(a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpge_sc_b(a, -32);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpge_sc_b(a, 0);
+}
+
+int
+foo4 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpge_sc_b(a, 31);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.cmpge\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpge\\.sci\\.b" 3 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-cmpge-sc-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpge-sc-h-compile-1.c
new file mode 100644
index 0000000..4443f65
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpge-sc-h-compile-1.c
@@ -0,0 +1,30 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpge_sc_h(a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpge_sc_h(a, -32);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpge_sc_h(a, 0);
+}
+
+int
+foo4 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpge_sc_h(a, 31);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.cmpge\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpge\\.sci\\.h" 3 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-cmpgeu-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpgeu-b-compile-1.c
new file mode 100644
index 0000000..0207c32
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpgeu-b-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpgeu_b(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.cmpgeu\\.b" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-cmpgeu-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpgeu-h-compile-1.c
new file mode 100644
index 0000000..b8da488
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpgeu-h-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpgeu_h(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.cmpgeu\\.h" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-cmpgeu-sc-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpgeu-sc-b-compile-1.c
new file mode 100644
index 0000000..e8e2e62
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpgeu-sc-b-compile-1.c
@@ -0,0 +1,24 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpgeu_sc_b(a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpgeu_sc_b(a, 0);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpgeu_sc_b(a, 63);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.cmpgeu\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpgeu\\.sci\\.b" 2 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-cmpgeu-sc-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpgeu-sc-h-compile-1.c
new file mode 100644
index 0000000..b669ea1
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpgeu-sc-h-compile-1.c
@@ -0,0 +1,24 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpgeu_sc_h(a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpgeu_sc_h(a, 0);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpgeu_sc_h(a, 63);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.cmpgeu\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpgeu\\.sci\\.h" 2 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-cmpgt-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpgt-b-compile-1.c
new file mode 100644
index 0000000..fb5f431
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpgt-b-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpgt_b(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.cmpgt\\.b" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-cmpgt-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpgt-h-compile-1.c
new file mode 100644
index 0000000..5d5a5a9
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpgt-h-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpgt_h(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.cmpgt\\.h" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-cmpgt-sc-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpgt-sc-b-compile-1.c
new file mode 100644
index 0000000..ab32a39
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpgt-sc-b-compile-1.c
@@ -0,0 +1,30 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpgt_sc_b(a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpgt_sc_b(a, -32);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpgt_sc_b(a, 0);
+}
+
+int
+foo4 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpgt_sc_b(a, 31);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.cmpgt\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpgt\\.sci\\.b" 3 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-cmpgt-sc-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpgt-sc-h-compile-1.c
new file mode 100644
index 0000000..6f55da3
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpgt-sc-h-compile-1.c
@@ -0,0 +1,30 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpgt_sc_h(a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpgt_sc_h(a, -32);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpgt_sc_h(a, 0);
+}
+
+int
+foo4 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpgt_sc_h(a, 31);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.cmpgt\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpgt\\.sci\\.h" 3 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-cmpgtu-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpgtu-b-compile-1.c
new file mode 100644
index 0000000..760cd48
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpgtu-b-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpgtu_b(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.cmpgtu\\.b" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-cmpgtu-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpgtu-h-compile-1.c
new file mode 100644
index 0000000..9453079
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpgtu-h-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpgtu_h(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.cmpgtu\\.h" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-cmpgtu-sc-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpgtu-sc-b-compile-1.c
new file mode 100644
index 0000000..8f33910
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpgtu-sc-b-compile-1.c
@@ -0,0 +1,24 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpgtu_sc_b(a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpgtu_sc_b(a, 0);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpgtu_sc_b(a, 63);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.cmpgtu\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpgtu\\.sci\\.b" 2 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-cmpgtu-sc-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpgtu-sc-h-compile-1.c
new file mode 100644
index 0000000..3f2d2a9
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpgtu-sc-h-compile-1.c
@@ -0,0 +1,24 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpgtu_sc_h(a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpgtu_sc_h(a, 0);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpgtu_sc_h(a, 63);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.cmpgtu\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpgtu\\.sci\\.h" 2 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-cmple-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-cmple-b-compile-1.c
new file mode 100644
index 0000000..b19e437
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-cmple-b-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmple_b(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.cmple\\.b" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-cmple-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-cmple-h-compile-1.c
new file mode 100644
index 0000000..adb26c1
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-cmple-h-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmple_h(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.cmple\\.h" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-cmple-sc-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-cmple-sc-b-compile-1.c
new file mode 100644
index 0000000..d14ca9a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-cmple-sc-b-compile-1.c
@@ -0,0 +1,30 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmple_sc_b(a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_cmple_sc_b(a, -32);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_cmple_sc_b(a, 0);
+}
+
+int
+foo4 (int a)
+{
+ return __builtin_riscv_cv_simd_cmple_sc_b(a, 31);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.cmple\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmple\\.sci\\.b" 3 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-cmple-sc-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-cmple-sc-h-compile-1.c
new file mode 100644
index 0000000..22c2218
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-cmple-sc-h-compile-1.c
@@ -0,0 +1,30 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmple_sc_h(a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_cmple_sc_h(a, -32);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_cmple_sc_h(a, 0);
+}
+
+int
+foo4 (int a)
+{
+ return __builtin_riscv_cv_simd_cmple_sc_h(a, 31);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.cmple\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmple\\.sci\\.h" 3 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-cmpleu-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpleu-b-compile-1.c
new file mode 100644
index 0000000..1d7f671
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpleu-b-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpleu_b(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.cmpleu\\.b" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-cmpleu-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpleu-h-compile-1.c
new file mode 100644
index 0000000..18bee44
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpleu-h-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpleu_h(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.cmpleu\\.h" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-cmpleu-sc-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpleu-sc-b-compile-1.c
new file mode 100644
index 0000000..a1adf91
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpleu-sc-b-compile-1.c
@@ -0,0 +1,24 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpleu_sc_b(a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpleu_sc_b(a, 0);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpleu_sc_b(a, 63);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.cmpleu\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpleu\\.sci\\.b" 2 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-cmpleu-sc-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpleu-sc-h-compile-1.c
new file mode 100644
index 0000000..f3823ff
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpleu-sc-h-compile-1.c
@@ -0,0 +1,24 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpleu_sc_h(a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpleu_sc_h(a, 0);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpleu_sc_h(a, 63);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.cmpleu\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpleu\\.sci\\.h" 2 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-cmplt-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-cmplt-b-compile-1.c
new file mode 100644
index 0000000..ee3a5b2
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-cmplt-b-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmplt_b(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.cmplt\\.b" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-cmplt-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-cmplt-h-compile-1.c
new file mode 100644
index 0000000..7ae45ff
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-cmplt-h-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmplt_h(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.cmplt\\.h" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-cmplt-sc-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-cmplt-sc-b-compile-1.c
new file mode 100644
index 0000000..ce6f280
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-cmplt-sc-b-compile-1.c
@@ -0,0 +1,30 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmplt_sc_b(a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_cmplt_sc_b(a, -32);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_cmplt_sc_b(a, 0);
+}
+
+int
+foo4 (int a)
+{
+ return __builtin_riscv_cv_simd_cmplt_sc_b(a, 31);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.cmplt\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmplt\\.sci\\.b" 3 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-cmplt-sc-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-cmplt-sc-h-compile-1.c
new file mode 100644
index 0000000..acd0c2c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-cmplt-sc-h-compile-1.c
@@ -0,0 +1,30 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmplt_sc_h(a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_cmplt_sc_h(a, -32);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_cmplt_sc_h(a, 0);
+}
+
+int
+foo4 (int a)
+{
+ return __builtin_riscv_cv_simd_cmplt_sc_h(a, 31);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.cmplt\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmplt\\.sci\\.h" 3 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-cmpltu-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpltu-b-compile-1.c
new file mode 100644
index 0000000..e3260f9
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpltu-b-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpltu_b(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.cmpltu\\.b" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-cmpltu-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpltu-h-compile-1.c
new file mode 100644
index 0000000..37f1f8b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpltu-h-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpltu_h(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.cmpltu\\.h" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-cmpltu-sc-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpltu-sc-b-compile-1.c
new file mode 100644
index 0000000..34e4e98
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpltu-sc-b-compile-1.c
@@ -0,0 +1,24 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpltu_sc_b(a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpltu_sc_b(a, 0);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpltu_sc_b(a, 63);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.cmpltu\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpltu\\.sci\\.b" 2 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-cmpltu-sc-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpltu-sc-h-compile-1.c
new file mode 100644
index 0000000..973b11e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpltu-sc-h-compile-1.c
@@ -0,0 +1,24 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpltu_sc_h(a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpltu_sc_h(a, 0);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpltu_sc_h(a, 63);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.cmpltu\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpltu\\.sci\\.h" 2 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-cmpne-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpne-b-compile-1.c
new file mode 100644
index 0000000..532aabb
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpne-b-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpne_b(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.cmpne\\.b" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-cmpne-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpne-h-compile-1.c
new file mode 100644
index 0000000..cfa0abc
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpne-h-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpne_h(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.cmpne\\.h" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-cmpne-sc-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpne-sc-b-compile-1.c
new file mode 100644
index 0000000..9554172
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpne-sc-b-compile-1.c
@@ -0,0 +1,30 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpne_sc_b(a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpne_sc_b(a, -32);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpne_sc_b(a, 0);
+}
+
+int
+foo4 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpne_sc_b(a, 31);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.cmpne\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpne\\.sci\\.b" 3 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-cmpne-sc-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpne-sc-h-compile-1.c
new file mode 100644
index 0000000..f2d9e65
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-cmpne-sc-h-compile-1.c
@@ -0,0 +1,30 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpne_sc_h(a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpne_sc_h(a, -32);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpne_sc_h(a, 0);
+}
+
+int
+foo4 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpne_sc_h(a, 31);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.cmpne\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpne\\.sci\\.h" 3 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-cplxconj-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-cplxconj-compile-1.c
new file mode 100644
index 0000000..194a704
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-cplxconj-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a)
+{
+ return __builtin_riscv_cv_simd_cplxconj(a);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.cplxconj" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-cplxmul-i-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-cplxmul-i-compile-1.c
new file mode 100644
index 0000000..dab59c6
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-cplxmul-i-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b, int c)
+{
+ return __builtin_riscv_cv_simd_cplxmul_i(a, b, c, 0);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.cplxmul\\.i" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-cplxmul-i-div2-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-cplxmul-i-div2-compile-1.c
new file mode 100644
index 0000000..27da60a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-cplxmul-i-div2-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b, int c)
+{
+ return __builtin_riscv_cv_simd_cplxmul_i(a, b, c, 1);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.cplxmul\\.i\\.div2" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-cplxmul-i-div4-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-cplxmul-i-div4-compile-1.c
new file mode 100644
index 0000000..f9fd78e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-cplxmul-i-div4-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b, int c)
+{
+ return __builtin_riscv_cv_simd_cplxmul_i(a, b, c, 2);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.cplxmul\\.i\\.div4" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-cplxmul-i-div8-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-cplxmul-i-div8-compile-1.c
new file mode 100644
index 0000000..0cacf8d
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-cplxmul-i-div8-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b, int c)
+{
+ return __builtin_riscv_cv_simd_cplxmul_i(a, b, c, 3);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.cplxmul\\.i\\.div8" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-cplxmul-r-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-cplxmul-r-compile-1.c
new file mode 100644
index 0000000..60c378a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-cplxmul-r-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b, int c)
+{
+ return __builtin_riscv_cv_simd_cplxmul_r(a, b, c, 0);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.cplxmul\\.r" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-cplxmul-r-div2-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-cplxmul-r-div2-compile-1.c
new file mode 100644
index 0000000..a2bb0df
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-cplxmul-r-div2-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b, int c)
+{
+ return __builtin_riscv_cv_simd_cplxmul_r(a, b, c, 1);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.cplxmul\\.r\\.div2" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-cplxmul-r-div4-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-cplxmul-r-div4-compile-1.c
new file mode 100644
index 0000000..0f9d986
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-cplxmul-r-div4-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b, int c)
+{
+ return __builtin_riscv_cv_simd_cplxmul_r(a, b, c, 2);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.cplxmul\\.r\\.div4" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-cplxmul-r-div8-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-cplxmul-r-div8-compile-1.c
new file mode 100644
index 0000000..7c025c7
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-cplxmul-r-div8-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b, int c)
+{
+ return __builtin_riscv_cv_simd_cplxmul_r(a, b, c, 3);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.cplxmul\\.r\\.div8" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-dotsp-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-dotsp-b-compile-1.c
new file mode 100644
index 0000000..4b522da
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-dotsp-b-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_dotsp_b(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.dotsp\\.b" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-dotsp-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-dotsp-h-compile-1.c
new file mode 100644
index 0000000..12fa58b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-dotsp-h-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_dotsp_h(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.dotsp\\.h" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-dotsp-sc-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-dotsp-sc-b-compile-1.c
new file mode 100644
index 0000000..1ba74ff
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-dotsp-sc-b-compile-1.c
@@ -0,0 +1,30 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_dotsp_sc_b(a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_dotsp_sc_b(a, -32);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_dotsp_sc_b(a, 0);
+}
+
+int
+foo4 (int a)
+{
+ return __builtin_riscv_cv_simd_dotsp_sc_b(a, 31);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.dotsp\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.dotsp\\.sci\\.b" 3 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-dotsp-sc-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-dotsp-sc-h-compile-1.c
new file mode 100644
index 0000000..1968471
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-dotsp-sc-h-compile-1.c
@@ -0,0 +1,30 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_dotsp_sc_h(a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_dotsp_sc_h(a, -32);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_dotsp_sc_h(a, 0);
+}
+
+int
+foo4 (int a)
+{
+ return __builtin_riscv_cv_simd_dotsp_sc_h(a, 31);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.dotsp\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.dotsp\\.sci\\.h" 3 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-dotup-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-dotup-b-compile-1.c
new file mode 100644
index 0000000..a65464e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-dotup-b-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_dotup_b(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.dotup\\.b" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-dotup-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-dotup-h-compile-1.c
new file mode 100644
index 0000000..4214508
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-dotup-h-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_dotup_h(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.dotup\\.h" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-dotup-sc-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-dotup-sc-b-compile-1.c
new file mode 100644
index 0000000..51e9154
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-dotup-sc-b-compile-1.c
@@ -0,0 +1,24 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_dotup_sc_b(a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_dotup_sc_b(a, 0);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_dotup_sc_b(a, 63);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.dotup\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.dotup\\.sci\\.b" 2 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-dotup-sc-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-dotup-sc-h-compile-1.c
new file mode 100644
index 0000000..28b423f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-dotup-sc-h-compile-1.c
@@ -0,0 +1,24 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_dotup_sc_h(a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_dotup_sc_h(a, 0);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_dotup_sc_h(a, 63);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.dotup\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.dotup\\.sci\\.h" 2 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-dotusp-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-dotusp-b-compile-1.c
new file mode 100644
index 0000000..b5281bd
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-dotusp-b-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_dotusp_b(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.dotusp\\.b" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-dotusp-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-dotusp-h-compile-1.c
new file mode 100644
index 0000000..5545b5e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-dotusp-h-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_dotusp_h(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.dotusp\\.h" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-dotusp-sc-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-dotusp-sc-b-compile-1.c
new file mode 100644
index 0000000..7db3f1c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-dotusp-sc-b-compile-1.c
@@ -0,0 +1,30 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_dotusp_sc_b(a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_dotusp_sc_b(a, -32);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_dotusp_sc_b(a, 0);
+}
+
+int
+foo4 (int a)
+{
+ return __builtin_riscv_cv_simd_dotusp_sc_b(a, 31);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.dotusp\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.dotusp\\.sci\\.b" 3 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-dotusp-sc-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-dotusp-sc-h-compile-1.c
new file mode 100644
index 0000000..1af83c5
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-dotusp-sc-h-compile-1.c
@@ -0,0 +1,30 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_dotusp_sc_h(a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_dotusp_sc_h(a, -32);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_dotusp_sc_h(a, 0);
+}
+
+int
+foo4 (int a)
+{
+ return __builtin_riscv_cv_simd_dotusp_sc_h(a, 31);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.dotusp\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.dotusp\\.sci\\.h" 3 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-extract-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-extract-b-compile-1.c
new file mode 100644
index 0000000..10133fe
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-extract-b-compile-1.c
@@ -0,0 +1,23 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a)
+{
+ return __builtin_riscv_cv_simd_extract_b (a, 0);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_extract_b (a, 3);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_extract_b (a, 255);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.extract\\.b" 3 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-extract-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-extract-h-compile-1.c
new file mode 100644
index 0000000..a507e01
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-extract-h-compile-1.c
@@ -0,0 +1,23 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a)
+{
+ return __builtin_riscv_cv_simd_extract_h (a, 0);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_extract_h (a, 1);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_extract_h (a, 255);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.extract\\.h" 3 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-extractu-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-extractu-b-compile-1.c
new file mode 100644
index 0000000..1ea6702
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-extractu-b-compile-1.c
@@ -0,0 +1,23 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a)
+{
+ return __builtin_riscv_cv_simd_extractu_b (a, 0);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_extractu_b (a, 3);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_extractu_b (a, 255);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.extractu\\.b" 3 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-extractu-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-extractu-h-compile-1.c
new file mode 100644
index 0000000..499e578
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-extractu-h-compile-1.c
@@ -0,0 +1,23 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a)
+{
+ return __builtin_riscv_cv_simd_extractu_h (a, 0);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_extractu_h (a, 1);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_extractu_h (a, 255);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.extractu\\.h" 3 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-insert-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-insert-b-compile-1.c
new file mode 100644
index 0000000..d7c9d4e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-insert-b-compile-1.c
@@ -0,0 +1,23 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_insert_b (a, b, 0);
+}
+
+int
+foo2 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_insert_b (a, b, 3);
+}
+
+int
+foo3 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_insert_b (a, b, 255);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.insert\\.b" 3 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-insert-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-insert-h-compile-1.c
new file mode 100644
index 0000000..e10389e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-insert-h-compile-1.c
@@ -0,0 +1,23 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_insert_h (a, b, 0);
+}
+
+int
+foo2 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_insert_h (a, b, 1);
+}
+
+int
+foo3 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_insert_h (a, b, 255);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.insert\\.h" 3 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-march-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-march-compile-1.c
new file mode 100644
index 0000000..3fe0149
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-march-compile-1.c
@@ -0,0 +1,1765 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_add_h(a, b, 0);
+}
+
+
+int
+foo2 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_add_b(a, b);
+}
+
+
+int
+foo3 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_add_sc_h(a, b);
+}
+
+
+int
+foo4 (int a)
+{
+ return __builtin_riscv_cv_simd_add_sc_h(a, 20);
+}
+
+
+int
+foo5 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_add_sc_b(a, b);
+}
+
+
+int
+foo6 (int a)
+{
+ return __builtin_riscv_cv_simd_add_sc_b(a, 20);
+}
+
+
+int
+foo7 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sub_h(a, b, 0);
+}
+
+
+int
+foo8 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sub_b(a, b);
+}
+
+
+int
+foo9 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sub_sc_h(a, b);
+}
+
+
+int
+foo10 (int a)
+{
+ return __builtin_riscv_cv_simd_sub_sc_h(a, 20);
+}
+
+
+int
+foo11 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sub_sc_b(a, b);
+}
+
+
+int
+foo12 (int a)
+{
+ return __builtin_riscv_cv_simd_sub_sc_b(a, 20);
+}
+
+
+int
+foo13 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_avg_h(a, b);
+}
+
+
+int
+foo14 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_avg_b(a, b);
+}
+
+
+int
+foo15 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_avg_sc_h(a, b);
+}
+
+
+int
+foo16 (int a)
+{
+ return __builtin_riscv_cv_simd_avg_sc_h(a, 20);
+}
+
+
+int
+foo17 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_avg_sc_b(a, b);
+}
+
+
+int
+foo18 (int a)
+{
+ return __builtin_riscv_cv_simd_avg_sc_b(a, 20);
+}
+
+
+int
+foo19 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_avgu_h(a, b);
+}
+
+
+int
+foo20 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_avgu_b(a, b);
+}
+
+
+int
+foo21 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_avgu_sc_h(a, b);
+}
+
+
+int
+foo22 (int a)
+{
+ return __builtin_riscv_cv_simd_avgu_sc_h(a, 20);
+}
+
+
+int
+foo23 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_avgu_sc_b(a, b);
+}
+
+
+int
+foo24 (int a)
+{
+ return __builtin_riscv_cv_simd_avgu_sc_b(a, 20);
+}
+
+
+int
+foo25 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_min_h(a, b);
+}
+
+
+int
+foo26 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_min_b(a, b);
+}
+
+
+int
+foo27 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_min_sc_h(a, b);
+}
+
+
+int
+foo28 (int a)
+{
+ return __builtin_riscv_cv_simd_min_sc_h(a, 20);
+}
+
+
+int
+foo29 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_min_sc_b(a, b);
+}
+
+
+int
+foo30 (int a)
+{
+ return __builtin_riscv_cv_simd_min_sc_b(a, 20);
+}
+
+
+int
+foo31 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_minu_h(a, b);
+}
+
+
+int
+foo32 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_minu_b(a, b);
+}
+
+
+int
+foo33 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_minu_sc_h(a, b);
+}
+
+
+int
+foo34 (int a)
+{
+ return __builtin_riscv_cv_simd_minu_sc_h(a, 20);
+}
+
+
+int
+foo35 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_minu_sc_b(a, b);
+}
+
+
+int
+foo36 (int a)
+{
+ return __builtin_riscv_cv_simd_minu_sc_b(a, 20);
+}
+
+
+int
+foo37 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_max_h(a, b);
+}
+
+
+int
+foo38 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_max_b(a, b);
+}
+
+
+int
+foo39 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_max_sc_h(a, b);
+}
+
+
+int
+foo40 (int a)
+{
+ return __builtin_riscv_cv_simd_max_sc_h(a, 20);
+}
+
+
+int
+foo41 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_max_sc_b(a, b);
+}
+
+
+int
+foo42 (int a)
+{
+ return __builtin_riscv_cv_simd_max_sc_b(a, 20);
+}
+
+
+int
+foo43 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_maxu_h(a, b);
+}
+
+
+int
+foo44 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_maxu_b(a, b);
+}
+
+
+int
+foo45 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_maxu_sc_h(a, b);
+}
+
+
+int
+foo46 (int a)
+{
+ return __builtin_riscv_cv_simd_maxu_sc_h(a, 20);
+}
+
+
+int
+foo47 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_maxu_sc_b(a, b);
+}
+
+
+int
+foo48 (int a)
+{
+ return __builtin_riscv_cv_simd_maxu_sc_b(a, 20);
+}
+
+
+int
+foo49 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_srl_h(a, b);
+}
+
+
+int
+foo50 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_srl_b(a, b);
+}
+
+
+int
+foo51 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_srl_sc_h(a, b);
+}
+
+
+int
+foo52 (int a)
+{
+ return __builtin_riscv_cv_simd_srl_sc_h(a, 20);
+}
+
+
+int
+foo53 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_srl_sc_b(a, b);
+}
+
+
+int
+foo54 (int a)
+{
+ return __builtin_riscv_cv_simd_srl_sc_b(a, 20);
+}
+
+
+int
+foo55 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sra_h(a, b);
+}
+
+
+int
+foo56 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sra_b(a, b);
+}
+
+
+int
+foo57 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sra_sc_h(a, b);
+}
+
+
+int
+foo58 (int a)
+{
+ return __builtin_riscv_cv_simd_sra_sc_h(a, 20);
+}
+
+
+int
+foo59 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sra_sc_b(a, b);
+}
+
+
+int
+foo60 (int a)
+{
+ return __builtin_riscv_cv_simd_sra_sc_b(a, 20);
+}
+
+
+int
+foo61 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sll_h(a, b);
+}
+
+
+int
+foo62 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sll_b(a, b);
+}
+
+
+int
+foo63 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sll_sc_h(a, b);
+}
+
+
+int
+foo64 (int a)
+{
+ return __builtin_riscv_cv_simd_sll_sc_h(a, 20);
+}
+
+
+int
+foo65 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sll_sc_b(a, b);
+}
+
+
+int
+foo66 (int a)
+{
+ return __builtin_riscv_cv_simd_sll_sc_b(a, 20);
+}
+
+
+int
+foo67 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_or_h(a, b);
+}
+
+
+int
+foo68 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_or_b(a, b);
+}
+
+
+int
+foo69 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_or_sc_h(a, b);
+}
+
+
+int
+foo70 (int a)
+{
+ return __builtin_riscv_cv_simd_or_sc_h(a, 20);
+}
+
+
+int
+foo71 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_or_sc_b(a, b);
+}
+
+
+int
+foo72 (int a)
+{
+ return __builtin_riscv_cv_simd_or_sc_b(a, 20);
+}
+
+
+int
+foo73 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_xor_h(a, b);
+}
+
+
+int
+foo74 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_xor_b(a, b);
+}
+
+
+int
+foo75 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_xor_sc_h(a, b);
+}
+
+
+int
+foo76 (int a)
+{
+ return __builtin_riscv_cv_simd_xor_sc_h(a, 20);
+}
+
+
+int
+foo77 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_xor_sc_b(a, b);
+}
+
+
+int
+foo78 (int a)
+{
+ return __builtin_riscv_cv_simd_xor_sc_b(a, 20);
+}
+
+
+int
+foo79 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_and_h(a, b);
+}
+
+
+int
+foo80 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_and_b(a, b);
+}
+
+
+int
+foo81 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_and_sc_h(a, b);
+}
+
+
+int
+foo82 (int a)
+{
+ return __builtin_riscv_cv_simd_and_sc_h(a, 20);
+}
+
+
+int
+foo83 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_and_sc_b(a, b);
+}
+
+
+int
+foo84 (int a)
+{
+ return __builtin_riscv_cv_simd_and_sc_b(a, 20);
+}
+
+
+int
+foo85 (int a)
+{
+ return __builtin_riscv_cv_simd_abs_h(a);
+}
+
+
+int
+foo86 (int a)
+{
+ return __builtin_riscv_cv_simd_abs_b(a);
+}
+
+
+int
+foo87 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_dotup_h(a, b);
+}
+
+
+int
+foo88 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_dotup_b(a, b);
+}
+
+
+int
+foo89 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_dotup_sc_h(a, b);
+}
+
+
+int
+foo90 (int a)
+{
+ return __builtin_riscv_cv_simd_dotup_sc_h(a, 20);
+}
+
+
+int
+foo91 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_dotup_sc_b(a, b);
+}
+
+
+int
+foo92 (int a)
+{
+ return __builtin_riscv_cv_simd_dotup_sc_b(a, 20);
+}
+
+
+int
+foo93 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_dotusp_h(a, b);
+}
+
+
+int
+foo94 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_dotusp_b(a, b);
+}
+
+
+int
+foo95 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_dotusp_sc_h(a, b);
+}
+
+
+int
+foo96 (int a)
+{
+ return __builtin_riscv_cv_simd_dotusp_sc_h(a, 20);
+}
+
+
+int
+foo97 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_dotusp_sc_b(a, b);
+}
+
+
+int
+foo98 (int a)
+{
+ return __builtin_riscv_cv_simd_dotusp_sc_b(a, 20);
+}
+
+
+int
+foo99 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_dotsp_h(a, b);
+}
+
+
+int
+foo100 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_dotsp_b(a, b);
+}
+
+
+int
+foo101 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_dotsp_sc_h(a, b);
+}
+
+
+int
+foo102 (int a)
+{
+ return __builtin_riscv_cv_simd_dotsp_sc_h(a, 20);
+}
+
+
+int
+foo103 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_dotsp_sc_b(a, b);
+}
+
+
+int
+foo104 (int a)
+{
+ return __builtin_riscv_cv_simd_dotsp_sc_b(a, 20);
+}
+
+
+int
+foo105 (int a, int b, int c)
+{
+ return __builtin_riscv_cv_simd_sdotup_h(a, b, c);
+}
+
+
+int
+foo106 (int a, int b, int c)
+{
+ return __builtin_riscv_cv_simd_sdotup_b(a, b, c);
+}
+
+
+int
+foo107 (int a, int b, int c)
+{
+ return __builtin_riscv_cv_simd_sdotup_sc_h(a, b, c);
+}
+
+
+int
+foo108 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sdotup_sc_h(a, 20, b);
+}
+
+
+int
+foo109 (int a, int b, int c)
+{
+ return __builtin_riscv_cv_simd_sdotup_sc_b(a, b, c);
+}
+
+
+int
+foo110 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sdotup_sc_b(a, 20, b);
+}
+
+
+int
+foo111 (int a, int b, int c)
+{
+ return __builtin_riscv_cv_simd_sdotusp_h(a, b, c);
+}
+
+
+int
+foo112 (int a, int b, int c)
+{
+ return __builtin_riscv_cv_simd_sdotusp_b(a, b, c);
+}
+
+
+int
+foo113 (int a, int b, int c)
+{
+ return __builtin_riscv_cv_simd_sdotusp_sc_h(a, b, c);
+}
+
+
+int
+foo114 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sdotusp_sc_h(a, 20, b);
+}
+
+
+int
+foo115 (int a, int b, int c)
+{
+ return __builtin_riscv_cv_simd_sdotusp_sc_b(a, b, c);
+}
+
+
+int
+foo116 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sdotusp_sc_b(a, 20, b);
+}
+
+
+int
+foo117 (int a, int b, int c)
+{
+ return __builtin_riscv_cv_simd_sdotsp_h(a, b, c);
+}
+
+
+int
+foo118 (int a, int b, int c)
+{
+ return __builtin_riscv_cv_simd_sdotsp_b(a, b, c);
+}
+
+
+int
+foo119 (int a, int b, int c)
+{
+ return __builtin_riscv_cv_simd_sdotsp_sc_h(a, b, c);
+}
+
+
+int
+foo120 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sdotsp_sc_h(a, 20, b);
+}
+
+
+int
+foo121 (int a, int b, int c)
+{
+ return __builtin_riscv_cv_simd_sdotsp_sc_b(a, b, c);
+}
+
+
+int
+foo122 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sdotsp_sc_b(a, 20, b);
+}
+
+
+int
+foo123 (int a)
+{
+ return __builtin_riscv_cv_simd_extract_h(a, 20);
+}
+
+
+int
+foo124 (int a)
+{
+ return __builtin_riscv_cv_simd_extract_b(a, 20);
+}
+
+
+int
+foo125 (int a)
+{
+ return __builtin_riscv_cv_simd_extractu_h(a, 20);
+}
+
+
+int
+foo126 (int a)
+{
+ return __builtin_riscv_cv_simd_extractu_b(a, 20);
+}
+
+
+int
+foo127 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_insert_h(a, b, 20);
+}
+
+
+int
+foo128 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_insert_b(a, b, 20);
+}
+
+
+int
+foo129 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_shuffle_h(a, b);
+}
+
+
+int
+foo130 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_shuffle_b(a, b);
+}
+
+
+int
+foo131 (int a)
+{
+ return __builtin_riscv_cv_simd_shuffle_sci_h(a, 20);
+}
+
+
+int
+foo132 (int a)
+{
+ return __builtin_riscv_cv_simd_shuffle_sci_b(a, 0);
+}
+
+
+int
+foo133 (int a)
+{
+ return __builtin_riscv_cv_simd_shuffle_sci_b(a, 64);
+}
+
+
+int
+foo134 (int a)
+{
+ return __builtin_riscv_cv_simd_shuffle_sci_b(a, 128);
+}
+
+
+int
+foo135 (int a)
+{
+ return __builtin_riscv_cv_simd_shuffle_sci_b(a, 192);
+}
+
+
+int
+foo136 (int a, int b, int c)
+{
+ return __builtin_riscv_cv_simd_shuffle2_h(a, b, c);
+}
+
+
+int
+foo137 (int a, int b, int c)
+{
+ return __builtin_riscv_cv_simd_shuffle2_b(a, b, c);
+}
+
+
+int
+foo138 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_packlo_h(a, b);
+}
+
+
+int
+foo139 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_packhi_h(a, b);
+}
+
+
+int
+foo140 (int a, int b, int c)
+{
+ return __builtin_riscv_cv_simd_packhi_b(a, b, c);
+}
+
+
+int
+foo141 (int a, int b, int c)
+{
+ return __builtin_riscv_cv_simd_packlo_b(a, b, c);
+}
+
+
+int
+foo142 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpeq_h(a, b);
+}
+
+
+int
+foo143 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpeq_b(a, b);
+}
+
+
+int
+foo144 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpeq_sc_h(a, b);
+}
+
+
+int
+foo145 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpeq_sc_h(a, 20);
+}
+
+
+int
+foo146 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpeq_sc_b(a, b);
+}
+
+
+int
+foo147 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpeq_sc_b(a, 20);
+}
+
+
+int
+foo148 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpne_h(a, b);
+}
+
+
+int
+foo149 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpne_b(a, b);
+}
+
+
+int
+foo150 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpne_sc_h(a, b);
+}
+
+
+int
+foo151 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpne_sc_h(a, 20);
+}
+
+
+int
+foo152 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpne_sc_b(a, b);
+}
+
+
+int
+foo153 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpne_sc_b(a, 20);
+}
+
+
+int
+foo154 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpgt_h(a, b);
+}
+
+
+int
+foo155 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpgt_b(a, b);
+}
+
+
+int
+foo156 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpgt_sc_h(a, b);
+}
+
+
+int
+foo157 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpgt_sc_h(a, 20);
+}
+
+
+int
+foo158 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpgt_sc_b(a, b);
+}
+
+
+int
+foo159 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpgt_sc_b(a, 20);
+}
+
+
+int
+foo160 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpge_h(a, b);
+}
+
+
+int
+foo161 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpge_b(a, b);
+}
+
+
+int
+foo162 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpge_sc_h(a, b);
+}
+
+
+int
+foo163 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpge_sc_h(a, 20);
+}
+
+
+int
+foo164 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpge_sc_b(a, b);
+}
+
+
+int
+foo165 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpge_sc_b(a, 20);
+}
+
+
+int
+foo166 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmplt_h(a, b);
+}
+
+
+int
+foo167 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmplt_b(a, b);
+}
+
+
+int
+foo168 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmplt_sc_h(a, b);
+}
+
+
+int
+foo169 (int a)
+{
+ return __builtin_riscv_cv_simd_cmplt_sc_h(a, 20);
+}
+
+
+int
+foo170 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmplt_sc_b(a, b);
+}
+
+
+int
+foo171 (int a)
+{
+ return __builtin_riscv_cv_simd_cmplt_sc_b(a, 20);
+}
+
+
+int
+foo172 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmple_h(a, b);
+}
+
+
+int
+foo173 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmple_b(a, b);
+}
+
+
+int
+foo174 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmple_sc_h(a, b);
+}
+
+
+int
+foo175 (int a)
+{
+ return __builtin_riscv_cv_simd_cmple_sc_h(a, 20);
+}
+
+
+int
+foo176 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmple_sc_b(a, b);
+}
+
+
+int
+foo177 (int a)
+{
+ return __builtin_riscv_cv_simd_cmple_sc_b(a, 20);
+}
+
+
+int
+foo178 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpgtu_h(a, b);
+}
+
+
+int
+foo179 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpgtu_b(a, b);
+}
+
+
+int
+foo180 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpgtu_sc_h(a, b);
+}
+
+
+int
+foo181 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpgtu_sc_h(a, 20);
+}
+
+
+int
+foo182 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpgtu_sc_b(a, b);
+}
+
+
+int
+foo183 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpgtu_sc_b(a, 20);
+}
+
+
+int
+foo184 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpgeu_h(a, b);
+}
+
+
+int
+foo185 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpgeu_b(a, b);
+}
+
+
+int
+foo186 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpgeu_sc_h(a, b);
+}
+
+
+int
+foo187 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpgeu_sc_h(a, 20);
+}
+
+
+int
+foo188 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpgeu_sc_b(a, b);
+}
+
+
+int
+foo189 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpgeu_sc_b(a, 20);
+}
+
+
+int
+foo190 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpltu_h(a, b);
+}
+
+
+int
+foo191 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpltu_b(a, b);
+}
+
+
+int
+foo192 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpltu_sc_h(a, b);
+}
+
+
+int
+foo193 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpltu_sc_h(a, 20);
+}
+
+
+int
+foo194 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpltu_sc_b(a, b);
+}
+
+
+int
+foo195 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpltu_sc_b(a, 20);
+}
+
+
+int
+foo196 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpleu_h(a, b);
+}
+
+
+int
+foo197 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpleu_b(a, b);
+}
+
+
+int
+foo198 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpleu_sc_h(a, b);
+}
+
+
+int
+foo199 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpleu_sc_h(a, 20);
+}
+
+
+int
+foo200 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_cmpleu_sc_b(a, b);
+}
+
+
+int
+foo201 (int a)
+{
+ return __builtin_riscv_cv_simd_cmpleu_sc_b(a, 20);
+}
+
+
+int
+foo202 (int a, int b, int c)
+{
+ return __builtin_riscv_cv_simd_cplxmul_r(a, b, c, 0);
+}
+
+
+int
+foo203 (int a, int b, int c)
+{
+ return __builtin_riscv_cv_simd_cplxmul_i(a, b, c, 0);
+}
+
+
+int
+foo204 (int a, int b, int c)
+{
+ return __builtin_riscv_cv_simd_cplxmul_r(a, b, c, 1);
+}
+
+
+int
+foo205 (int a, int b, int c)
+{
+ return __builtin_riscv_cv_simd_cplxmul_i(a, b, c, 1);
+}
+
+
+int
+foo206 (int a, int b, int c)
+{
+ return __builtin_riscv_cv_simd_cplxmul_r(a, b, c, 2);
+}
+
+
+int
+foo207 (int a, int b, int c)
+{
+ return __builtin_riscv_cv_simd_cplxmul_i(a, b, c, 2);
+}
+
+
+int
+foo208 (int a, int b, int c)
+{
+ return __builtin_riscv_cv_simd_cplxmul_r(a, b, c, 3);
+}
+
+
+int
+foo209 (int a, int b, int c)
+{
+ return __builtin_riscv_cv_simd_cplxmul_i(a, b, c, 3);
+}
+
+
+int
+foo210 (int a)
+{
+ return __builtin_riscv_cv_simd_cplxconj(a);
+}
+
+
+int
+foo211 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_subrotmj(a, b, 0);
+}
+
+
+int
+foo212 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_subrotmj(a, b, 1);
+}
+
+
+int
+foo213 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_subrotmj(a, b, 2);
+}
+
+
+int
+foo214 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_subrotmj(a, b, 3);
+}
+
+
+int
+foo215 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_add_h(a, b, 1);
+}
+
+
+int
+foo216 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_add_h(a, b, 2);
+}
+
+
+int
+foo217 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_add_h(a, b, 3);
+}
+
+
+int
+foo218 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sub_h(a, b, 1);
+}
+
+
+int
+foo219 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sub_h(a, b, 2);
+}
+
+
+int
+foo220 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sub_h(a, b, 3);
+}
+
+
+/* { dg-final { scan-assembler-times "cv\\.add\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.add\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.add\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.add\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.add\\.sci\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.add\\.sci\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sub\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sub\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sub\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sub\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sub\\.sci\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sub\\.sci\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.avg\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.avg\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.avg\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.avg\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.avg\\.sci\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.avg\\.sci\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.avgu\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.avgu\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.avgu\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.avgu\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.avgu\\.sci\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.avgu\\.sci\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.min\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.min\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.min\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.min\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.min\\.sci\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.min\\.sci\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.minu\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.minu\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.minu\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.minu\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.minu\\.sci\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.minu\\.sci\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.max\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.max\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.max\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.max\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.max\\.sci\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.max\\.sci\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.maxu\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.maxu\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.maxu\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.maxu\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.maxu\\.sci\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.maxu\\.sci\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.srl\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.srl\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.srl\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.srl\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.srl\\.sci\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.srl\\.sci\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sra\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sra\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sra\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sra\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sra\\.sci\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sra\\.sci\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sll\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sll\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sll\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sll\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sll\\.sci\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sll\\.sci\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.or\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.or\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.or\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.or\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.or\\.sci\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.or\\.sci\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.xor\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.xor\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.xor\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.xor\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.xor\\.sci\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.xor\\.sci\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.and\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.and\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.and\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.and\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.and\\.sci\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.and\\.sci\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.abs\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.abs\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.dotup\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.dotup\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.dotup\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.dotup\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.dotup\\.sci\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.dotup\\.sci\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.dotusp\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.dotusp\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.dotusp\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.dotusp\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.dotusp\\.sci\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.dotusp\\.sci\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.dotsp\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.dotsp\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.dotsp\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.dotsp\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.dotsp\\.sci\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.dotsp\\.sci\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sdotup\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sdotup\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sdotup\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sdotup\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sdotup\\.sci\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sdotup\\.sci\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sdotusp\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sdotusp\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sdotusp\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sdotusp\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sdotusp\\.sci\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sdotusp\\.sci\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sdotsp\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sdotsp\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sdotsp\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sdotsp\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sdotsp\\.sci\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sdotsp\\.sci\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.extract\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.extract\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.extractu\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.extractu\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.insert\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.insert\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.shuffle\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.shuffle\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.shuffle\\.sci\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.shufflei0\\.sci\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.shufflei1\\.sci\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.shufflei2\\.sci\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.shufflei3\\.sci\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.shuffle2\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.shuffle2\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.pack" 4 } } */
+/* { dg-final { scan-assembler-times "cv\\.pack\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.packhi\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.packlo\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpeq\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpeq\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpeq\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpeq\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpeq\\.sci\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpeq\\.sci\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpne\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpne\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpne\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpne\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpne\\.sci\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpne\\.sci\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpgt\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpgt\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpgt\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpgt\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpgt\\.sci\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpgt\\.sci\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpge\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpge\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpge\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpge\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpge\\.sci\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpge\\.sci\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmplt\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmplt\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmplt\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmplt\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmplt\\.sci\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmplt\\.sci\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmple\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmple\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmple\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmple\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmple\\.sci\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmple\\.sci\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpgtu\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpgtu\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpgtu\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpgtu\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpgtu\\.sci\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpgtu\\.sci\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpgeu\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpgeu\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpgeu\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpgeu\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpgeu\\.sci\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpgeu\\.sci\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpltu\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpltu\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpltu\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpltu\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpltu\\.sci\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpltu\\.sci\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpleu\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpleu\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpleu\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpleu\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpleu\\.sci\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cmpleu\\.sci\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cplxmul\\.r" 4 } } */
+/* { dg-final { scan-assembler-times "cv\\.cplxmul\\.i" 4 } } */
+/* { dg-final { scan-assembler-times "cv\\.cplxmul\\.r\\.div2" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cplxmul\\.i\\.div2" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cplxmul\\.r\\.div4" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cplxmul\\.i\\.div4" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cplxmul\\.r\\.div8" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cplxmul\\.i\\.div8" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.cplxconj" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.subrotmj" 4 } } */
+/* { dg-final { scan-assembler-times "cv\\.subrotmj\\.div2" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.subrotmj\\.div4" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.subrotmj\\.div8" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.add\\.div2" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.add\\.div4" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.add\\.div8" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sub\\.div2" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sub\\.div4" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sub\\.div8" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-max-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-max-b-compile-1.c
new file mode 100644
index 0000000..05c5b07
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-max-b-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_max_b(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.max\\.b" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-max-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-max-h-compile-1.c
new file mode 100644
index 0000000..a24308b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-max-h-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_max_h(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.max\\.h" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-max-sc-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-max-sc-b-compile-1.c
new file mode 100644
index 0000000..a82ceba
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-max-sc-b-compile-1.c
@@ -0,0 +1,30 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_max_sc_b(a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_max_sc_b(a, -32);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_max_sc_b(a, 0);
+}
+
+int
+foo4 (int a)
+{
+ return __builtin_riscv_cv_simd_max_sc_b(a, 31);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.max\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.max\\.sci\\.b" 3 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-max-sc-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-max-sc-h-compile-1.c
new file mode 100644
index 0000000..baa52d5
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-max-sc-h-compile-1.c
@@ -0,0 +1,30 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_max_sc_h(a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_max_sc_h(a, -32);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_max_sc_h(a, 0);
+}
+
+int
+foo4 (int a)
+{
+ return __builtin_riscv_cv_simd_max_sc_h(a, 31);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.max\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.max\\.sci\\.h" 3 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-maxu-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-maxu-b-compile-1.c
new file mode 100644
index 0000000..e6a9695
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-maxu-b-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_maxu_b(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.maxu\\.b" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-maxu-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-maxu-h-compile-1.c
new file mode 100644
index 0000000..ee95b13
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-maxu-h-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_maxu_h(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.maxu\\.h" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-maxu-sc-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-maxu-sc-b-compile-1.c
new file mode 100644
index 0000000..48a3c6f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-maxu-sc-b-compile-1.c
@@ -0,0 +1,24 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_maxu_sc_b(a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_maxu_sc_b(a, 0);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_maxu_sc_b(a, 63);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.maxu\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.maxu\\.sci\\.b" 2 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-maxu-sc-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-maxu-sc-h-compile-1.c
new file mode 100644
index 0000000..0a77677
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-maxu-sc-h-compile-1.c
@@ -0,0 +1,24 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_maxu_sc_h(a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_maxu_sc_h(a, 0);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_maxu_sc_h(a, 63);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.maxu\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.maxu\\.sci\\.h" 2 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-min-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-min-b-compile-1.c
new file mode 100644
index 0000000..474d96d
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-min-b-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_min_b(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.min\\.b" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-min-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-min-h-compile-1.c
new file mode 100644
index 0000000..493bbdc
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-min-h-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_min_h(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.min\\.h" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-min-sc-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-min-sc-b-compile-1.c
new file mode 100644
index 0000000..30ede85
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-min-sc-b-compile-1.c
@@ -0,0 +1,30 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_min_sc_b(a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_min_sc_b(a, -32);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_min_sc_b(a, 0);
+}
+
+int
+foo4 (int a)
+{
+ return __builtin_riscv_cv_simd_min_sc_b(a, 31);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.min\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.min\\.sci\\.b" 3 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-min-sc-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-min-sc-h-compile-1.c
new file mode 100644
index 0000000..a99b012
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-min-sc-h-compile-1.c
@@ -0,0 +1,30 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_min_sc_h(a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_min_sc_h(a, -32);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_min_sc_h(a, 0);
+}
+
+int
+foo4 (int a)
+{
+ return __builtin_riscv_cv_simd_min_sc_h(a, 31);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.min\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.min\\.sci\\.h" 3 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-minu-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-minu-b-compile-1.c
new file mode 100644
index 0000000..43582b2
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-minu-b-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_minu_b(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.minu\\.b" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-minu-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-minu-h-compile-1.c
new file mode 100644
index 0000000..e44113b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-minu-h-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_minu_h(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.minu\\.h" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-minu-sc-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-minu-sc-b-compile-1.c
new file mode 100644
index 0000000..eec0a56
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-minu-sc-b-compile-1.c
@@ -0,0 +1,24 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_minu_sc_b(a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_minu_sc_b(a, 0);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_minu_sc_b(a, 63);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.minu\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.minu\\.sci\\.b" 2 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-minu-sc-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-minu-sc-h-compile-1.c
new file mode 100644
index 0000000..6fc29ab
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-minu-sc-h-compile-1.c
@@ -0,0 +1,24 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_minu_sc_h(a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_minu_sc_h(a, 0);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_minu_sc_h(a, 63);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.minu\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.minu\\.sci\\.h" 2 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-neg-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-neg-b-compile-1.c
new file mode 100644
index 0000000..3f8bb7c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-neg-b-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a)
+{
+ return __builtin_riscv_cv_simd_neg_b(a);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.sub\\.b" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-neg-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-neg-h-compile-1.c
new file mode 100644
index 0000000..2b6ecb0
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-neg-h-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a)
+{
+ return __builtin_riscv_cv_simd_neg_h(a);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.sub\\.h" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-or-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-or-b-compile-1.c
new file mode 100644
index 0000000..d6bd54f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-or-b-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_or_b(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.or\\.b" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-or-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-or-h-compile-1.c
new file mode 100644
index 0000000..cff54f3
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-or-h-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_or_h(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.or\\.h" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-or-sc-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-or-sc-b-compile-1.c
new file mode 100644
index 0000000..cd8b2dc
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-or-sc-b-compile-1.c
@@ -0,0 +1,30 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_or_sc_b(a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_or_sc_b(a, -32);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_or_sc_b(a, 0);
+}
+
+int
+foo4 (int a)
+{
+ return __builtin_riscv_cv_simd_or_sc_b(a, 31);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.or\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.or\\.sci\\.b" 3 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-or-sc-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-or-sc-h-compile-1.c
new file mode 100644
index 0000000..95352fe
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-or-sc-h-compile-1.c
@@ -0,0 +1,30 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_or_sc_h(a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_or_sc_h(a, -32);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_or_sc_h(a, 0);
+}
+
+int
+foo4 (int a)
+{
+ return __builtin_riscv_cv_simd_or_sc_h(a, 31);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.or\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.or\\.sci\\.h" 3 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-pack-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-pack-compile-1.c
new file mode 100644
index 0000000..286d366
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-pack-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_packlo_h(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.pack" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-pack-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-pack-h-compile-1.c
new file mode 100644
index 0000000..2d7f1b0
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-pack-h-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_packhi_h(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.pack\\.h" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-packhi-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-packhi-b-compile-1.c
new file mode 100644
index 0000000..deb25d0
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-packhi-b-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b, int c)
+{
+ return __builtin_riscv_cv_simd_packhi_b(a, b, c);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.packhi\\.b" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-packlo-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-packlo-b-compile-1.c
new file mode 100644
index 0000000..2348930
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-packlo-b-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b, int c)
+{
+ return __builtin_riscv_cv_simd_packlo_b(a, b, c);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.packlo\\.b" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-sdotsp-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-sdotsp-b-compile-1.c
new file mode 100644
index 0000000..14e5baa
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-sdotsp-b-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b, int c)
+{
+ return __builtin_riscv_cv_simd_sdotsp_b(a, b, c);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.sdotsp\\.b" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-sdotsp-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-sdotsp-h-compile-1.c
new file mode 100644
index 0000000..e0d7f58
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-sdotsp-h-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b, int c)
+{
+ return __builtin_riscv_cv_simd_sdotsp_h(a, b, c);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.sdotsp\\.h" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-sdotsp-sc-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-sdotsp-sc-b-compile-1.c
new file mode 100644
index 0000000..2f31414
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-sdotsp-sc-b-compile-1.c
@@ -0,0 +1,30 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b, int c)
+{
+ return __builtin_riscv_cv_simd_sdotsp_sc_b(a, b, c);
+}
+
+int
+foo2 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sdotsp_sc_b(a, -32, b);
+}
+
+int
+foo3 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sdotsp_sc_b(a, 0, b);
+}
+
+int
+foo4 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sdotsp_sc_b(a, 31, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.sdotsp\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sdotsp\\.sci\\.b" 3 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-sdotsp-sc-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-sdotsp-sc-h-compile-1.c
new file mode 100644
index 0000000..03481e2
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-sdotsp-sc-h-compile-1.c
@@ -0,0 +1,30 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b, int c)
+{
+ return __builtin_riscv_cv_simd_sdotsp_sc_h(a, b, c);
+}
+
+int
+foo2 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sdotsp_sc_h(a, -32, b);
+}
+
+int
+foo3 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sdotsp_sc_h(a, 0, b);
+}
+
+int
+foo4 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sdotsp_sc_h(a, 31, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.sdotsp\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sdotsp\\.sci\\.h" 3 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-sdotup-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-sdotup-b-compile-1.c
new file mode 100644
index 0000000..63017c8
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-sdotup-b-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b, int c)
+{
+ return __builtin_riscv_cv_simd_sdotup_b(a, b, c);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.sdotup\\.b" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-sdotup-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-sdotup-h-compile-1.c
new file mode 100644
index 0000000..70f1264
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-sdotup-h-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b, int c)
+{
+ return __builtin_riscv_cv_simd_sdotup_h(a, b, c);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.sdotup\\.h" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-sdotup-sc-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-sdotup-sc-b-compile-1.c
new file mode 100644
index 0000000..812faab
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-sdotup-sc-b-compile-1.c
@@ -0,0 +1,24 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b, int c)
+{
+ return __builtin_riscv_cv_simd_sdotup_sc_b(a, b, c);
+}
+
+int
+foo2 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sdotup_sc_b(a, 0, b);
+}
+
+int
+foo3 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sdotup_sc_b(a, 63, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.sdotup\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sdotup\\.sci\\.b" 2 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-sdotup-sc-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-sdotup-sc-h-compile-1.c
new file mode 100644
index 0000000..546a13b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-sdotup-sc-h-compile-1.c
@@ -0,0 +1,24 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b, int c)
+{
+ return __builtin_riscv_cv_simd_sdotup_sc_h(a, b, c);
+}
+
+int
+foo2 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sdotup_sc_h(a, 0, b);
+}
+
+int
+foo3 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sdotup_sc_h(a, 63, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.sdotup\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sdotup\\.sci\\.h" 2 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-sdotusp-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-sdotusp-b-compile-1.c
new file mode 100644
index 0000000..f0b5221
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-sdotusp-b-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b, int c)
+{
+ return __builtin_riscv_cv_simd_sdotusp_b(a, b, c);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.sdotusp\\.b" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-sdotusp-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-sdotusp-h-compile-1.c
new file mode 100644
index 0000000..8078c96
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-sdotusp-h-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b, int c)
+{
+ return __builtin_riscv_cv_simd_sdotusp_h(a, b, c);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.sdotusp\\.h" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-sdotusp-sc-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-sdotusp-sc-b-compile-1.c
new file mode 100644
index 0000000..d1ce8fe
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-sdotusp-sc-b-compile-1.c
@@ -0,0 +1,30 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b, int c)
+{
+ return __builtin_riscv_cv_simd_sdotusp_sc_b(a, b, c);
+}
+
+int
+foo2 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sdotusp_sc_b(a, -32, b);
+}
+
+int
+foo3 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sdotusp_sc_b(a, 0, b);
+}
+
+int
+foo4 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sdotusp_sc_b(a, 31, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.sdotusp\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sdotusp\\.sci\\.b" 3 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-sdotusp-sc-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-sdotusp-sc-h-compile-1.c
new file mode 100644
index 0000000..5541020
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-sdotusp-sc-h-compile-1.c
@@ -0,0 +1,30 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b, int c)
+{
+ return __builtin_riscv_cv_simd_sdotusp_sc_h(a, b, c);
+}
+
+int
+foo2 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sdotusp_sc_h(a, -32, b);
+}
+
+int
+foo3 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sdotusp_sc_h(a, 0, b);
+}
+
+int
+foo4 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sdotusp_sc_h(a, 31, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.sdotusp\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sdotusp\\.sci\\.h" 3 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-shuffle-sci-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-shuffle-sci-h-compile-1.c
new file mode 100644
index 0000000..08c7a81
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-shuffle-sci-h-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a)
+{
+ return __builtin_riscv_cv_simd_shuffle_sci_h(a, 0);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.shuffle\\.sci\\.h" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-shuffle2-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-shuffle2-b-compile-1.c
new file mode 100644
index 0000000..7475a84
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-shuffle2-b-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b, int c)
+{
+ return __builtin_riscv_cv_simd_shuffle2_b(a, b, c);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.shuffle2\\.b" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-shuffle2-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-shuffle2-h-compile-1.c
new file mode 100644
index 0000000..fe4fcc6
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-shuffle2-h-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b, int c)
+{
+ return __builtin_riscv_cv_simd_shuffle2_h(a, b, c);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.shuffle2\\.h" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-shufflei0-sci-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-shufflei0-sci-b-compile-1.c
new file mode 100644
index 0000000..024e4e2
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-shufflei0-sci-b-compile-1.c
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a)
+{
+ return __builtin_riscv_cv_simd_shuffle_sci_b (a, 0);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_shuffle_sci_b (a, 63);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.shufflei0\\.sci\\.b" 2 } } */
+/* { dg-final { scan-assembler-times "cv\\.shufflei0\\.sci\\.b\t\[a-z\]\[0-99\],\[a-z\]\[0-99\],0" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.shufflei0\\.sci\\.b\t\[a-z\]\[0-99\],\[a-z\]\[0-99\],63" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-shufflei1-sci-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-shufflei1-sci-b-compile-1.c
new file mode 100644
index 0000000..7b971c1
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-shufflei1-sci-b-compile-1.c
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a)
+{
+ return __builtin_riscv_cv_simd_shuffle_sci_b (a, 64);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_shuffle_sci_b (a, 127);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.shufflei1\\.sci\\.b" 2 } } */
+/* { dg-final { scan-assembler-times "cv\\.shufflei1\\.sci\\.b\t\[a-z\]\[0-99\],\[a-z\]\[0-99\],0" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.shufflei1\\.sci\\.b\t\[a-z\]\[0-99\],\[a-z\]\[0-99\],63" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-shufflei2-sci-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-shufflei2-sci-b-compile-1.c
new file mode 100644
index 0000000..6399598
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-shufflei2-sci-b-compile-1.c
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+unsigned int
+foo1 (unsigned int a)
+{
+ return __builtin_riscv_cv_simd_shuffle_sci_b (a, 128);
+}
+
+unsigned int
+foo2 (unsigned int a)
+{
+ return __builtin_riscv_cv_simd_shuffle_sci_b (a, 191);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.shufflei2\\.sci\\.b" 2 } } */
+/* { dg-final { scan-assembler-times "cv\\.shufflei2\\.sci\\.b\t\[a-z\]\[0-99\],\[a-z\]\[0-99\],0" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.shufflei2\\.sci\\.b\t\[a-z\]\[0-99\],\[a-z\]\[0-99\],63" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-shufflei3-sci-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-shufflei3-sci-b-compile-1.c
new file mode 100644
index 0000000..6f02cb5
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-shufflei3-sci-b-compile-1.c
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a)
+{
+ return __builtin_riscv_cv_simd_shuffle_sci_b (a, 192);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_shuffle_sci_b (a, 255);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.shufflei3\\.sci\\.b" 2 } } */
+/* { dg-final { scan-assembler-times "cv\\.shufflei3\\.sci\\.b\t\[a-z\]\[0-99\],\[a-z\]\[0-99\],0" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.shufflei3\\.sci\\.b\t\[a-z\]\[0-99\],\[a-z\]\[0-99\],63" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-sll-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-sll-b-compile-1.c
new file mode 100644
index 0000000..1392e7b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-sll-b-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sll_b(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.sll\\.b" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-sll-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-sll-h-compile-1.c
new file mode 100644
index 0000000..84eba751
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-sll-h-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sll_h(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.sll\\.h" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-sll-sc-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-sll-sc-b-compile-1.c
new file mode 100644
index 0000000..fa56156
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-sll-sc-b-compile-1.c
@@ -0,0 +1,24 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sll_sc_b (a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_sll_sc_b (a, 0);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_sll_sc_b (a, 63);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.sll\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sll\\.sci\\.b" 2 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-sll-sc-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-sll-sc-h-compile-1.c
new file mode 100644
index 0000000..12a1ffd
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-sll-sc-h-compile-1.c
@@ -0,0 +1,24 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sll_sc_h (a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_sll_sc_h (a, 0);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_sll_sc_h (a, 63);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.sll\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sll\\.sci\\.h" 2 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-sra-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-sra-b-compile-1.c
new file mode 100644
index 0000000..c569302
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-sra-b-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sra_b(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.sra\\.b" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-sra-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-sra-h-compile-1.c
new file mode 100644
index 0000000..033aabb
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-sra-h-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sra_h(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.sra\\.h" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-sra-sc-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-sra-sc-b-compile-1.c
new file mode 100644
index 0000000..133d919
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-sra-sc-b-compile-1.c
@@ -0,0 +1,24 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sra_sc_b (a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_sra_sc_b (a, 0);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_sra_sc_b (a, 63);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.sra\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sra\\.sci\\.b" 2 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-sra-sc-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-sra-sc-h-compile-1.c
new file mode 100644
index 0000000..2830f44
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-sra-sc-h-compile-1.c
@@ -0,0 +1,24 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sra_sc_h (a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_sra_sc_h (a, 0);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_sra_sc_h (a, 63);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.sra\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sra\\.sci\\.h" 2 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-srl-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-srl-b-compile-1.c
new file mode 100644
index 0000000..ae848b1
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-srl-b-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_srl_b(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.srl\\.b" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-srl-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-srl-h-compile-1.c
new file mode 100644
index 0000000..797524e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-srl-h-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_srl_h(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.srl\\.h" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-srl-sc-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-srl-sc-b-compile-1.c
new file mode 100644
index 0000000..e62f8fa
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-srl-sc-b-compile-1.c
@@ -0,0 +1,24 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_srl_sc_b (a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_srl_sc_b (a, 0);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_srl_sc_b (a, 63);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.srl\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.srl\\.sci\\.b" 2 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-srl-sc-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-srl-sc-h-compile-1.c
new file mode 100644
index 0000000..6f7592a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-srl-sc-h-compile-1.c
@@ -0,0 +1,24 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_srl_sc_h (a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_srl_sc_h (a, 0);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_srl_sc_h (a, 63);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.srl\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.srl\\.sci\\.h" 2 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-sub-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-sub-b-compile-1.c
new file mode 100644
index 0000000..45120bc
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-sub-b-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sub_b(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.sub\\.b" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-sub-div2-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-sub-div2-compile-1.c
new file mode 100644
index 0000000..e79a001
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-sub-div2-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sub_h(a, b, 1);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.sub\\.div2" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-sub-div4-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-sub-div4-compile-1.c
new file mode 100644
index 0000000..d8630f7
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-sub-div4-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sub_h(a, b, 2);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.sub\\.div4" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-sub-div8-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-sub-div8-compile-1.c
new file mode 100644
index 0000000..efad600
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-sub-div8-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sub_h(a, b, 3);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.sub\\.div8" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-sub-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-sub-h-compile-1.c
new file mode 100644
index 0000000..a80e441
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-sub-h-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sub_h(a, b, 0);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.sub\\.h" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-sub-sc-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-sub-sc-b-compile-1.c
new file mode 100644
index 0000000..30ce646
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-sub-sc-b-compile-1.c
@@ -0,0 +1,30 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sub_sc_b(a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_sub_sc_b(a, -32);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_sub_sc_b(a, 0);
+}
+
+int
+foo4 (int a)
+{
+ return __builtin_riscv_cv_simd_sub_sc_b(a, 31);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.sub\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sub\\.sci\\.b" 3 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-sub-sc-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-sub-sc-h-compile-1.c
new file mode 100644
index 0000000..ac6d27d
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-sub-sc-h-compile-1.c
@@ -0,0 +1,30 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_sub_sc_h(a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_sub_sc_h(a, -32);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_sub_sc_h(a, 0);
+}
+
+int
+foo4 (int a)
+{
+ return __builtin_riscv_cv_simd_sub_sc_h(a, 31);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.sub\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.sub\\.sci\\.h" 3 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-subrotmj-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-subrotmj-compile-1.c
new file mode 100644
index 0000000..8ecac97
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-subrotmj-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_subrotmj(a, b, 0);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.subrotmj" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-subrotmj-div2-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-subrotmj-div2-compile-1.c
new file mode 100644
index 0000000..c77395d
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-subrotmj-div2-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_subrotmj(a, b, 1);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.subrotmj\\.div2" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-subrotmj-div4-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-subrotmj-div4-compile-1.c
new file mode 100644
index 0000000..e53c6d1
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-subrotmj-div4-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_subrotmj(a, b, 2);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.subrotmj\\.div4" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-subrotmj-div8-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-subrotmj-div8-compile-1.c
new file mode 100644
index 0000000..ebd431e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-subrotmj-div8-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_subrotmj(a, b, 3);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.subrotmj\\.div8" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-xor-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-xor-b-compile-1.c
new file mode 100644
index 0000000..56ba1cd
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-xor-b-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_xor_b(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.xor\\.b" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-xor-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-xor-h-compile-1.c
new file mode 100644
index 0000000..d07bcea
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-xor-h-compile-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_xor_h(a, b);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.xor\\.h" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-xor-sc-b-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-xor-sc-b-compile-1.c
new file mode 100644
index 0000000..7fe0f79
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-xor-sc-b-compile-1.c
@@ -0,0 +1,30 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_xor_sc_b(a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_xor_sc_b(a, -32);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_xor_sc_b(a, 0);
+}
+
+int
+foo4 (int a)
+{
+ return __builtin_riscv_cv_simd_xor_sc_b(a, 31);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.xor\\.sc\\.b" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.xor\\.sci\\.b" 3 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/cv-simd-xor-sc-h-compile-1.c b/gcc/testsuite/gcc.target/riscv/cv-simd-xor-sc-h-compile-1.c
new file mode 100644
index 0000000..5227a2b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/cv-simd-xor-sc-h-compile-1.c
@@ -0,0 +1,30 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target cv_simd } */
+/* { dg-options "-march=rv32i_xcvsimd -mabi=ilp32" } */
+
+int
+foo1 (int a, int b)
+{
+ return __builtin_riscv_cv_simd_xor_sc_h(a, b);
+}
+
+int
+foo2 (int a)
+{
+ return __builtin_riscv_cv_simd_xor_sc_h(a, -32);
+}
+
+int
+foo3 (int a)
+{
+ return __builtin_riscv_cv_simd_xor_sc_h(a, 0);
+}
+
+int
+foo4 (int a)
+{
+ return __builtin_riscv_cv_simd_xor_sc_h(a, 31);
+}
+
+/* { dg-final { scan-assembler-times "cv\\.xor\\.sc\\.h" 1 } } */
+/* { dg-final { scan-assembler-times "cv\\.xor\\.sci\\.h" 3 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/pr105314-rtl.c b/gcc/testsuite/gcc.target/riscv/pr105314-rtl.c
new file mode 100644
index 0000000..693291f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/pr105314-rtl.c
@@ -0,0 +1,78 @@
+/* PR rtl-optimization/105314 */
+/* { dg-do compile } */
+/* { dg-require-effective-target rv64 } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-Og" "-Os" "-Oz" "-flto" } } */
+/* { dg-options "-fdump-rtl-ce1" } */
+
+long __RTL (startwith ("ce1"))
+foo (long a, long b, long c)
+{
+(function "foo"
+ (param "a"
+ (DECL_RTL (reg/v:DI <1> [ a ]))
+ (DECL_RTL_INCOMING (reg:DI a0 [ a ])))
+ (param "b"
+ (DECL_RTL (reg/v:DI <2> [ b ]))
+ (DECL_RTL_INCOMING (reg:DI a1 [ b ])))
+ (param "c"
+ (DECL_RTL (reg/v:DI <3> [ c ]))
+ (DECL_RTL_INCOMING (reg:DI a2 [ c ])))
+ (insn-chain
+ (block 2
+ (edge-from entry (flags "FALLTHRU"))
+ (cnote 8 [bb 2] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 2 (set (reg/v:DI <1> [ a ])
+ (reg:DI a0 [ a ])) "pr105314.c":8:1
+ (expr_list:REG_DEAD (reg:DI a0 [ a ])))
+ (cinsn 4 (set (reg/v:DI <3> [ c ])
+ (reg:DI a2 [ c ])) "pr105314.c":8:1
+ (expr_list:REG_DEAD (reg:DI a2 [ c ])))
+ (cnote 5 NOTE_INSN_FUNCTION_BEG)
+ (cjump_insn 10 (set (pc)
+ (if_then_else (ne (reg/v:DI <3> [ c ])
+ (const_int 0))
+ (label_ref:DI 23)
+ (pc))) "pr105314.c":9:6
+ (expr_list:REG_DEAD (reg/v:DI <3> [ c ])
+ (int_list:REG_BR_PROB 536870916)))
+ (edge-to 4)
+ (edge-to 3 (flags "FALLTHRU"))
+ ) ;; block 2
+ (block 3
+ (edge-from 2 (flags "FALLTHRU"))
+ (cnote 11 [bb 3] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 6 (set (reg/v:DI <0> [ <retval> ])
+ (reg/v:DI <1> [ a ])) "pr105314.c":9:6
+ (expr_list:REG_DEAD (reg/v:DI <1> [ a ])))
+ (edge-to 5 (flags "FALLTHRU"))
+ ) ;; block 3
+ (block 4
+ (edge-from 2)
+ (clabel 23 3)
+ (cnote 22 [bb 4] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 7 (set (reg/v:DI <0> [ <retval> ])
+ (const_int 0)) "pr105314.c":10:7)
+ (edge-to 5 (flags "FALLTHRU"))
+ ) ;; block 4
+ (block 5
+ (edge-from 4 (flags "FALLTHRU"))
+ (edge-from 3 (flags "FALLTHRU"))
+ (clabel 16 1)
+ (cnote 19 [bb 5] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 17 (set (reg/i:DI a0)
+ (reg/v:DI <0> [ <retval> ])) "pr105314.c":12:1
+ (expr_list:REG_DEAD (reg/v:DI <0> [ <retval> ])))
+ (cinsn 18 (use (reg/i:DI a0)) "pr105314.c":12:1)
+ (edge-to exit (flags "FALLTHRU"))
+ ) ;; block 5
+ ) ;; insn-chain
+ (crtl
+ (return_rtx
+ (reg/i:DI a0)
+ ) ;; return_rtx
+ ) ;; crtl
+) ;; function "foo"
+}
+
+/* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_store_flag_mask" 1 "ce1" } } */
+/* { dg-final { scan-assembler-not "\\s(?:beq|bne)\\s" } } */
diff --git a/gcc/testsuite/gcc.target/riscv/pr105314-rtl32.c b/gcc/testsuite/gcc.target/riscv/pr105314-rtl32.c
new file mode 100644
index 0000000..9f9600f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/pr105314-rtl32.c
@@ -0,0 +1,78 @@
+/* PR rtl-optimization/105314 */
+/* { dg-do compile } */
+/* { dg-require-effective-target rv32 } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-Og" "-Os" "-Oz" "-flto" } } */
+/* { dg-options "-fdump-rtl-ce1" } */
+
+long __RTL (startwith ("ce1"))
+foo (long a, long b, long c)
+{
+(function "foo"
+ (param "a"
+ (DECL_RTL (reg/v:SI <1> [ a ]))
+ (DECL_RTL_INCOMING (reg:SI a0 [ a ])))
+ (param "b"
+ (DECL_RTL (reg/v:SI <2> [ b ]))
+ (DECL_RTL_INCOMING (reg:SI a1 [ b ])))
+ (param "c"
+ (DECL_RTL (reg/v:SI <3> [ c ]))
+ (DECL_RTL_INCOMING (reg:SI a2 [ c ])))
+ (insn-chain
+ (block 2
+ (edge-from entry (flags "FALLTHRU"))
+ (cnote 8 [bb 2] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 2 (set (reg/v:SI <1> [ a ])
+ (reg:SI a0 [ a ])) "pr105314.c":8:1
+ (expr_list:REG_DEAD (reg:SI a0 [ a ])))
+ (cinsn 4 (set (reg/v:SI <3> [ c ])
+ (reg:SI a2 [ c ])) "pr105314.c":8:1
+ (expr_list:REG_DEAD (reg:SI a2 [ c ])))
+ (cnote 5 NOTE_INSN_FUNCTION_BEG)
+ (cjump_insn 10 (set (pc)
+ (if_then_else (ne (reg/v:SI <3> [ c ])
+ (const_int 0))
+ (label_ref:SI 23)
+ (pc))) "pr105314.c":9:6
+ (expr_list:REG_DEAD (reg/v:SI <3> [ c ])
+ (int_list:REG_BR_PROB 536870916)))
+ (edge-to 4)
+ (edge-to 3 (flags "FALLTHRU"))
+ ) ;; block 2
+ (block 3
+ (edge-from 2 (flags "FALLTHRU"))
+ (cnote 11 [bb 3] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 6 (set (reg/v:SI <0> [ <retval> ])
+ (reg/v:SI <1> [ a ])) "pr105314.c":9:6
+ (expr_list:REG_DEAD (reg/v:SI <1> [ a ])))
+ (edge-to 5 (flags "FALLTHRU"))
+ ) ;; block 3
+ (block 4
+ (edge-from 2)
+ (clabel 23 3)
+ (cnote 22 [bb 4] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 7 (set (reg/v:SI <0> [ <retval> ])
+ (const_int 0)) "pr105314.c":10:7)
+ (edge-to 5 (flags "FALLTHRU"))
+ ) ;; block 4
+ (block 5
+ (edge-from 4 (flags "FALLTHRU"))
+ (edge-from 3 (flags "FALLTHRU"))
+ (clabel 16 1)
+ (cnote 19 [bb 5] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 17 (set (reg/i:SI a0)
+ (reg/v:SI <0> [ <retval> ])) "pr105314.c":12:1
+ (expr_list:REG_DEAD (reg/v:SI <0> [ <retval> ])))
+ (cinsn 18 (use (reg/i:SI a0)) "pr105314.c":12:1)
+ (edge-to exit (flags "FALLTHRU"))
+ ) ;; block 5
+ ) ;; insn-chain
+ (crtl
+ (return_rtx
+ (reg/i:SI a0)
+ ) ;; return_rtx
+ ) ;; crtl
+) ;; function "foo"
+}
+
+/* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_store_flag_mask" 1 "ce1" } } */
+/* { dg-final { scan-assembler-not "\\s(?:beq|bne)\\s" } } */
diff --git a/gcc/testsuite/gcc.target/riscv/pr105314.c b/gcc/testsuite/gcc.target/riscv/pr105314.c
index 6b6a607..1a7ea67 100644
--- a/gcc/testsuite/gcc.target/riscv/pr105314.c
+++ b/gcc/testsuite/gcc.target/riscv/pr105314.c
@@ -1,7 +1,7 @@
/* PR rtl-optimization/105314 */
/* { dg-do compile } */
-/* { dg-options "-O2" } */
-/* { dg-final { scan-assembler-not "\tbeq\t" } } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-Og" "-Os" "-Oz" } } */
+/* { dg-options "-fdump-rtl-ce1" } */
long
foo (long a, long b, long c)
@@ -10,3 +10,6 @@ foo (long a, long b, long c)
a = 0;
return a;
}
+
+/* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_store_flag_mask" 1 "ce1" } } */
+/* { dg-final { scan-assembler-not "\\s(?:beq|bne)\\s" } } */
diff --git a/gcc/testsuite/gcc.target/riscv/pr113095.c b/gcc/testsuite/gcc.target/riscv/pr113095.c
new file mode 100644
index 0000000..04321b5
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/pr113095.c
@@ -0,0 +1,21 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -march=rv32gc -mabi=ilp32d -mtune=sifive-7-series" { target { rv32 } } } */
+/* { dg-options "-O2 -march=rv64gc -mabi=lp64d -mtune=sifive-7-series" {target { rv64 } } } */
+
+extern void abort (void);
+extern void exit (int);
+
+unsigned short __attribute__ ((noinline, noclone))
+foo (unsigned short x) {
+ if (x == 1)
+ x ^= 0x4002;
+
+ return x;
+}
+
+int main () {
+ if (foo(1) != 0x4003)
+ abort ();
+
+ exit(0);
+}
diff --git a/gcc/testsuite/gcc.target/riscv/predef-__riscv_th_v_intrinsic.c b/gcc/testsuite/gcc.target/riscv/predef-__riscv_th_v_intrinsic.c
new file mode 100644
index 0000000..550b903
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/predef-__riscv_th_v_intrinsic.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-options "-march=rv64imafdcxtheadvector -mabi=lp64d" } */
+
+int main () {
+
+#if __riscv_th_v_intrinsic != 11000
+#error "__riscv_th_v_intrinsic"
+#endif
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/shift-rv32gcv.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/shift-rv32gcv.c
index befa4b8..d534885 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/shift-rv32gcv.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/shift-rv32gcv.c
@@ -4,5 +4,5 @@
#include "shift-template.h"
/* { dg-final { scan-assembler-times {\tvsll\.vv} 8 } } */
-/* { dg-final { scan-assembler-times {\tvsrl\.vv} 4 } } */
+/* { dg-final { scan-assembler-times {\tvsrl\.vv} 2 } } */
/* { dg-final { scan-assembler-times {\tvsra\.vv} 4 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/shift-rv64gcv.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/shift-rv64gcv.c
index 976b29f..a533dc7 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/shift-rv64gcv.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/shift-rv64gcv.c
@@ -4,5 +4,5 @@
#include "shift-template.h"
/* { dg-final { scan-assembler-times {\tvsll\.vv} 8 } } */
-/* { dg-final { scan-assembler-times {\tvsrl\.vv} 4 } } */
+/* { dg-final { scan-assembler-times {\tvsrl\.vv} 2 } } */
/* { dg-final { scan-assembler-times {\tvsra\.vv} 4 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/cmp/cmp_vi-1.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/cmp/cmp_vi-1.c
new file mode 100644
index 0000000..10c232f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/cmp/cmp_vi-1.c
@@ -0,0 +1,16 @@
+/* { dg-do compile } */
+/* { dg-options "-march=rv64gcv -mabi=lp64d -O3" } */
+
+#include "macro.h"
+
+CMP_VI (ne_char, char, n, !=, 15)
+CMP_VI (ne_short, short, n, !=, 15)
+CMP_VI (ne_int, int, n, !=, 15)
+CMP_VI (ne_long, long, n, !=, 15)
+CMP_VI (ne_unsigned_char, unsigned char, n, !=, 15)
+CMP_VI (ne_unsigned_short, unsigned short, n, !=, 15)
+CMP_VI (ne_unsigned_int, unsigned int, n, !=, 15)
+CMP_VI (ne_unsigned_long, unsigned long, n, !=, 15)
+
+/* { dg-final { scan-assembler-times {vmsne\.vi} 16 } } */
+/* { dg-final { scan-assembler-not {vmsne\.vv} } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/cmp/cmp_vi-2.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/cmp/cmp_vi-2.c
new file mode 100644
index 0000000..92bea59
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/cmp/cmp_vi-2.c
@@ -0,0 +1,16 @@
+/* { dg-do compile } */
+/* { dg-options "-march=rv64gcv -mabi=lp64d -O3" } */
+
+#include "macro.h"
+
+CMP_VI (ne_char, char, n, !=, -16)
+CMP_VI (ne_short, short, n, !=, -16)
+CMP_VI (ne_int, int, n, !=, -16)
+CMP_VI (ne_long, long, n, !=, -16)
+CMP_VI (ne_unsigned_char, unsigned char, n, !=, -16)
+CMP_VI (ne_unsigned_short, unsigned short, n, !=, -16)
+CMP_VI (ne_unsigned_int, unsigned int, n, !=, -16)
+CMP_VI (ne_unsigned_long, unsigned long, n, !=, -16)
+
+/* { dg-final { scan-assembler-times {vmsne\.vi} 13 } } */
+/* { dg-final { scan-assembler-not {vmsne\.vv} } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/cmp/cmp_vi-3.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/cmp/cmp_vi-3.c
new file mode 100644
index 0000000..c900327
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/cmp/cmp_vi-3.c
@@ -0,0 +1,28 @@
+/* { dg-do compile } */
+/* { dg-options "-march=rv64gcv -mabi=lp64d -O3 --param=riscv-autovec-lmul=dynamic -fdump-tree-optimized-details" } */
+
+#include "macro.h"
+
+CMP_VI (ne_char, char, 4, !=, 15)
+CMP_VI (ne_short, short, 4, !=, 15)
+CMP_VI (ne_int, int, 4, !=, 15)
+CMP_VI (ne_long, long, 4, !=, 15)
+CMP_VI (ne_unsigned_char, unsigned char, 4, !=, 15)
+CMP_VI (ne_unsigned_short, unsigned short, 4, !=, 15)
+CMP_VI (ne_unsigned_int, unsigned int, 4, !=, 15)
+CMP_VI (ne_unsigned_long, unsigned long, 4, !=, 15)
+
+/* { dg-final { scan-assembler-times {vmsne\.vi} 32 } } */
+/* { dg-final { scan-assembler-not {vmsne\.vv} } } */
+/* { dg-final { scan-tree-dump-not "1,1" "optimized" } } */
+/* { dg-final { scan-tree-dump-not "2,2" "optimized" } } */
+/* { dg-final { scan-tree-dump-not "4,4" "optimized" } } */
+/* { dg-final { scan-tree-dump-not "16,16" "optimized" } } */
+/* { dg-final { scan-tree-dump-not "32,32" "optimized" } } */
+/* { dg-final { scan-tree-dump-not "64,64" "optimized" } } */
+/* { dg-final { scan-tree-dump-not "128,128" "optimized" } } */
+/* { dg-final { scan-tree-dump-not "256,256" "optimized" } } */
+/* { dg-final { scan-tree-dump-not "512,512" "optimized" } } */
+/* { dg-final { scan-tree-dump-not "1024,1024" "optimized" } } */
+/* { dg-final { scan-tree-dump-not "2048,2048" "optimized" } } */
+/* { dg-final { scan-tree-dump-not "4096,4096" "optimized" } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/cmp/cmp_vi-4.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/cmp/cmp_vi-4.c
new file mode 100644
index 0000000..544ff75
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/cmp/cmp_vi-4.c
@@ -0,0 +1,28 @@
+/* { dg-do compile } */
+/* { dg-options "-march=rv64gcv -mabi=lp64d -O3 --param=riscv-autovec-lmul=dynamic -fdump-tree-optimized-details" } */
+
+#include "macro.h"
+
+CMP_VI (ne_char, char, 4, !=, -16)
+CMP_VI (ne_short, short, 4, !=, -16)
+CMP_VI (ne_int, int, 4, !=, -16)
+CMP_VI (ne_long, long, 4, !=, -16)
+CMP_VI (ne_unsigned_char, unsigned char, 4, !=, -16)
+CMP_VI (ne_unsigned_short, unsigned short, 4, !=, -16)
+CMP_VI (ne_unsigned_int, unsigned int, 4, !=, -16)
+CMP_VI (ne_unsigned_long, unsigned long, 4, !=, -16)
+
+/* { dg-final { scan-assembler-times {vmsne\.vi} 20 } } */
+/* { dg-final { scan-assembler-not {vmsne\.vv} } } */
+/* { dg-final { scan-tree-dump-not "1,1" "optimized" } } */
+/* { dg-final { scan-tree-dump-not "2,2" "optimized" } } */
+/* { dg-final { scan-tree-dump-not "4,4" "optimized" } } */
+/* { dg-final { scan-tree-dump-not "16,16" "optimized" } } */
+/* { dg-final { scan-tree-dump-not "32,32" "optimized" } } */
+/* { dg-final { scan-tree-dump-not "64,64" "optimized" } } */
+/* { dg-final { scan-tree-dump-not "128,128" "optimized" } } */
+/* { dg-final { scan-tree-dump-not "256,256" "optimized" } } */
+/* { dg-final { scan-tree-dump-not "512,512" "optimized" } } */
+/* { dg-final { scan-tree-dump-not "1024,1024" "optimized" } } */
+/* { dg-final { scan-tree-dump-not "2048,2048" "optimized" } } */
+/* { dg-final { scan-tree-dump-not "4096,4096" "optimized" } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/cmp/cmp_vi-5.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/cmp/cmp_vi-5.c
new file mode 100644
index 0000000..b7a5a43
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/cmp/cmp_vi-5.c
@@ -0,0 +1,16 @@
+/* { dg-do compile } */
+/* { dg-options "-march=rv64gcv -mabi=lp64d -O3" } */
+
+#include "macro.h"
+
+CMP_VI (eq_char, char, n, ==, 15)
+CMP_VI (eq_short, short, n, ==, 15)
+CMP_VI (eq_int, int, n, ==, 15)
+CMP_VI (eq_long, long, n, ==, 15)
+CMP_VI (eq_unsigned_char, unsigned char, n, ==, 15)
+CMP_VI (eq_unsigned_short, unsigned short, n, ==, 15)
+CMP_VI (eq_unsigned_int, unsigned int, n, ==, 15)
+CMP_VI (eq_unsigned_long, unsigned long, n, ==, 15)
+
+/* { dg-final { scan-assembler-times {vmseq\.vi} 16 } } */
+/* { dg-final { scan-assembler-not {vmseq\.vv} } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/cmp/cmp_vi-6.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/cmp/cmp_vi-6.c
new file mode 100644
index 0000000..f297ac8
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/cmp/cmp_vi-6.c
@@ -0,0 +1,16 @@
+/* { dg-do compile } */
+/* { dg-options "-march=rv64gcv -mabi=lp64d -O3" } */
+
+#include "macro.h"
+
+CMP_VI (eq_char, char, n, ==, -16)
+CMP_VI (eq_short, short, n, ==, -16)
+CMP_VI (eq_int, int, n, ==, -16)
+CMP_VI (eq_long, long, n, ==, -16)
+CMP_VI (eq_unsigned_char, unsigned char, n, ==, -16)
+CMP_VI (eq_unsigned_short, unsigned short, n, ==, -16)
+CMP_VI (eq_unsigned_int, unsigned int, n, ==, -16)
+CMP_VI (eq_unsigned_long, unsigned long, n, ==, -16)
+
+/* { dg-final { scan-assembler-times {vmseq\.vi} 13 } } */
+/* { dg-final { scan-assembler-not {vmseq\.vv} } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/cmp/cmp_vi-7.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/cmp/cmp_vi-7.c
new file mode 100644
index 0000000..63ded00
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/cmp/cmp_vi-7.c
@@ -0,0 +1,28 @@
+/* { dg-do compile } */
+/* { dg-options "-march=rv64gcv -mabi=lp64d -O3 --param=riscv-autovec-lmul=dynamic -fdump-tree-optimized-details" } */
+
+#include "macro.h"
+
+CMP_VI (eq_char, char, 4, ==, 15)
+CMP_VI (eq_short, short, 4, ==, 15)
+CMP_VI (eq_int, int, 4, ==, 15)
+CMP_VI (eq_long, long, 4, ==, 15)
+CMP_VI (eq_unsigned_char, unsigned char, 4, ==, 15)
+CMP_VI (eq_unsigned_short, unsigned short, 4, ==, 15)
+CMP_VI (eq_unsigned_int, unsigned int, 4, ==, 15)
+CMP_VI (eq_unsigned_long, unsigned long, 4, ==, 15)
+
+/* { dg-final { scan-assembler-times {vmseq\.vi} 32 } } */
+/* { dg-final { scan-assembler-not {vmseq\.vv} } } */
+/* { dg-final { scan-tree-dump-not "1,1" "optimized" } } */
+/* { dg-final { scan-tree-dump-not "2,2" "optimized" } } */
+/* { dg-final { scan-tree-dump-not "4,4" "optimized" } } */
+/* { dg-final { scan-tree-dump-not "16,16" "optimized" } } */
+/* { dg-final { scan-tree-dump-not "32,32" "optimized" } } */
+/* { dg-final { scan-tree-dump-not "64,64" "optimized" } } */
+/* { dg-final { scan-tree-dump-not "128,128" "optimized" } } */
+/* { dg-final { scan-tree-dump-not "256,256" "optimized" } } */
+/* { dg-final { scan-tree-dump-not "512,512" "optimized" } } */
+/* { dg-final { scan-tree-dump-not "1024,1024" "optimized" } } */
+/* { dg-final { scan-tree-dump-not "2048,2048" "optimized" } } */
+/* { dg-final { scan-tree-dump-not "4096,4096" "optimized" } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/cmp/cmp_vi-8.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/cmp/cmp_vi-8.c
new file mode 100644
index 0000000..f29b5f1
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/cmp/cmp_vi-8.c
@@ -0,0 +1,28 @@
+/* { dg-do compile } */
+/* { dg-options "-march=rv64gcv -mabi=lp64d -O3 --param=riscv-autovec-lmul=dynamic -fdump-tree-optimized-details" } */
+
+#include "macro.h"
+
+CMP_VI (eq_char, char, 4, ==, -16)
+CMP_VI (eq_short, short, 4, ==, -16)
+CMP_VI (eq_int, int, 4, ==, -16)
+CMP_VI (eq_long, long, 4, ==, -16)
+CMP_VI (eq_unsigned_char, unsigned char, 4, ==, -16)
+CMP_VI (eq_unsigned_short, unsigned short, 4, ==, -16)
+CMP_VI (eq_unsigned_int, unsigned int, 4, ==, -16)
+CMP_VI (eq_unsigned_long, unsigned long, 4, ==, -16)
+
+/* { dg-final { scan-assembler-times {vmseq\.vi} 20 } } */
+/* { dg-final { scan-assembler-not {vmseq\.vv} } } */
+/* { dg-final { scan-tree-dump-not "1,1" "optimized" } } */
+/* { dg-final { scan-tree-dump-not "2,2" "optimized" } } */
+/* { dg-final { scan-tree-dump-not "4,4" "optimized" } } */
+/* { dg-final { scan-tree-dump-not "16,16" "optimized" } } */
+/* { dg-final { scan-tree-dump-not "32,32" "optimized" } } */
+/* { dg-final { scan-tree-dump-not "64,64" "optimized" } } */
+/* { dg-final { scan-tree-dump-not "128,128" "optimized" } } */
+/* { dg-final { scan-tree-dump-not "256,256" "optimized" } } */
+/* { dg-final { scan-tree-dump-not "512,512" "optimized" } } */
+/* { dg-final { scan-tree-dump-not "1024,1024" "optimized" } } */
+/* { dg-final { scan-tree-dump-not "2048,2048" "optimized" } } */
+/* { dg-final { scan-tree-dump-not "4096,4096" "optimized" } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/cmp/cmp_vi-9.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/cmp/cmp_vi-9.c
new file mode 100644
index 0000000..bfc1a68
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/cmp/cmp_vi-9.c
@@ -0,0 +1,18 @@
+/* { dg-do compile } */
+/* { dg-options "-march=rv64gcv -mabi=lp64d -O3" } */
+
+#include "macro.h"
+
+CMP_VI (le_char, char, n, <=, 15)
+CMP_VI (le_short, short, n, <=, 15)
+CMP_VI (le_int, int, n, <=, 15)
+CMP_VI (le_long, long, n, <=, 15)
+CMP_VI (le_unsigned_char, unsigned char, n, <=, 15)
+CMP_VI (le_unsigned_short, unsigned short, n, <=, 15)
+CMP_VI (le_unsigned_int, unsigned int, n, <=, 15)
+CMP_VI (le_unsigned_long, unsigned long, n, <=, 15)
+
+/* { dg-final { scan-assembler-times {vmsle\.vi} 7 } } */
+/* { dg-final { scan-assembler-times {vmsleu\.vi} 9 } } */
+/* { dg-final { scan-assembler-not {vmsle\.vv} } } */
+/* { dg-final { scan-assembler-not {vmsleu\.vv} } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/cmp/macro.h b/gcc/testsuite/gcc.target/riscv/rvv/autovec/cmp/macro.h
new file mode 100644
index 0000000..3fe6ee8
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/cmp/macro.h
@@ -0,0 +1,11 @@
+#define CMP_VI(NAME, TYPE, NITERS, OP, IMM) \
+ void NAME (int n, TYPE **__restrict a) \
+ { \
+ int b; \
+ int c; \
+ int d; \
+ for (b = 0; b < NITERS; b++) \
+ for (int e = 8; e > 0; e--) \
+ a[b][e] = a[b][e] OP IMM; \
+ }
+
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr112971.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr112971.c
new file mode 100644
index 0000000..816ebd3
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr112971.c
@@ -0,0 +1,18 @@
+/* { dg-do compile } */
+/* { dg-options "-march=rv64gcv_zvl256b -mabi=lp64d -O3 -fno-vect-cost-model" } */
+
+int a;
+short b[9];
+char c, d;
+void e() {
+ d = 0;
+ for (;; d++) {
+ if (b[d])
+ break;
+ a = 8;
+ for (; a >= 0; a--) {
+ char *f = &c;
+ *f &= d == (a & d);
+ }
+ }
+}
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr113469.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr113469.c
new file mode 100644
index 0000000..d1c118c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr113469.c
@@ -0,0 +1,54 @@
+/* { dg-do compile } */
+/* { dg-options "-march=rv32gcv -mabi=ilp32d -O3 -fno-vect-cost-model" } */
+
+struct a {
+ int b;
+ int c : 1;
+ int : 1;
+} d();
+typedef struct
+{
+ int e;
+ struct {
+ int f;
+ };
+} g;
+int i;
+char k, l, n;
+void *m;
+char *o;
+void h();
+char *j();
+void p(int buf, __builtin_va_list ab, int q) {
+ do {
+ void *r[] = {&&s, &&t, &&u, &&v, &&w};
+ int c;
+ goto *m;
+ s:
+ c = 1;
+ while (1) {
+ t:
+ u:
+ ae:
+ void *af = __builtin_va_arg(ab, void *);
+ h(p);
+ o = j(i);
+ if (o == 0)
+ goto ae;
+ l = 'S';
+ break;
+ v:
+ g ah;
+ __builtin_memset(&ah, '\0', sizeof(g));
+ h(n, __builtin_va_arg(ab, int), &ah);
+ break;
+ w:
+ if (__builtin_expect(q, 0))
+ c = 0;
+ struct a ai = {'S', c};
+ d(buf, ai, af);
+ }
+ } while (k);
+}
+
+/* { dg-final { scan-assembler-times {vsetivli\tzero,\s*4,\s*e8,\s*mf4,\s*t[au],\s*m[au]} 2 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/mod-1.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/mod-1.c
index 57bbf8f..17d2784 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/mod-1.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/mod-1.c
@@ -53,5 +53,5 @@ DEF_OP_VV (mod, 128, int64_t, %)
DEF_OP_VV (mod, 256, int64_t, %)
DEF_OP_VV (mod, 512, int64_t, %)
-/* { dg-final { scan-assembler-times {vremu?\.vv\s+v[0-9]+,\s*v[0-9]+,\s*v[0-9]+} 42 } } */
+/* { dg-final { scan-assembler-times {vremu?\.vv\s+v[0-9]+,\s*v[0-9]+,\s*v[0-9]+} 47 } } */
/* { dg-final { scan-assembler-not {csrr} } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/shift-1.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/shift-1.c
index cb5a1db..ee8da25 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/shift-1.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/shift-1.c
@@ -53,5 +53,5 @@ DEF_OP_VV (shift, 128, int64_t, >>)
DEF_OP_VV (shift, 256, int64_t, >>)
DEF_OP_VV (shift, 512, int64_t, >>)
-/* { dg-final { scan-assembler-times {vsra\.vv\s+v[0-9]+,\s*v[0-9]+,\s*v[0-9]+} 42 } } */
+/* { dg-final { scan-assembler-times {vsra\.vv\s+v[0-9]+,\s*v[0-9]+,\s*v[0-9]+} 35 } } */
/* { dg-final { scan-assembler-not {csrr} } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/shift-2.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/shift-2.c
index e626a52..ebd5575 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/shift-2.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/shift-2.c
@@ -53,5 +53,5 @@ DEF_OP_VV (shift, 128, uint64_t, >>)
DEF_OP_VV (shift, 256, uint64_t, >>)
DEF_OP_VV (shift, 512, uint64_t, >>)
-/* { dg-final { scan-assembler-times {vsrl\.vv\s+v[0-9]+,\s*v[0-9]+,\s*v[0-9]+} 42 } } */
+/* { dg-final { scan-assembler-times {vsrl\.vv\s+v[0-9]+,\s*v[0-9]+,\s*v[0-9]+} 19 } } */
/* { dg-final { scan-assembler-not {csrr} } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/abi-1.c b/gcc/testsuite/gcc.target/riscv/rvv/base/abi-1.c
index 2e0e12a..2eef9e1 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/base/abi-1.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/abi-1.c
@@ -1,4 +1,4 @@
-/* { dg-do compile } */
+/* { dg-do compile { target { ! riscv_xtheadvector } } } */
/* { dg-skip-if "test rvv intrinsic" { *-*-* } { "*" } { "-march=rv*v*" } } */
void foo0 () {__rvv_bool64_t t;}
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-args-1-run.c b/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-args-1-run.c
index 85f0044..3df7be2 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-args-1-run.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-args-1-run.c
@@ -1,5 +1,5 @@
/* { dg-do run { target { riscv_v } } } */
-/* { dg-options "-O1 --param=riscv-vector-abi" } */
+/* { dg-options "-O1" } */
/* { dg-additional-sources abi-call-args-1.c } */
#include <stdbool.h>
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-args-1.c b/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-args-1.c
index c4858a3..10aec5c 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-args-1.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-args-1.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-march=rv64gcv_zvfh -mabi=lp64 -O1 --param=riscv-vector-abi" } */
+/* { dg-options "-march=rv64gcv_zvfh -mabi=lp64 -O1" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "riscv_vector.h"
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-args-2-run.c b/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-args-2-run.c
index 06d7703..7daea17 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-args-2-run.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-args-2-run.c
@@ -1,5 +1,5 @@
/* { dg-do run { target { riscv_v } } } */
-/* { dg-options "-O1 --param=riscv-vector-abi" } */
+/* { dg-options "-O1" } */
/* { dg-additional-sources abi-call-args-2.c } */
#include <stdlib.h>
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-args-2.c b/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-args-2.c
index 269fbeb..f800aea 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-args-2.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-args-2.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-march=rv64gcv_zvfh -mabi=lp64 -O1 --param=riscv-vector-abi" } */
+/* { dg-options "-march=rv64gcv_zvfh -mabi=lp64 -O1" } */
#include <stdarg.h>
#include "riscv_vector.h"
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-args-3-run.c b/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-args-3-run.c
index 9056d75..5bfcdf8 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-args-3-run.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-args-3-run.c
@@ -1,5 +1,5 @@
/* { dg-do run { target { riscv_v } } } */
-/* { dg-options "-O1 --param=riscv-vector-abi" } */
+/* { dg-options "-O1" } */
/* { dg-additional-sources abi-call-args-3.c } */
#include <stdbool.h>
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-args-3.c b/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-args-3.c
index 8c774716..d3dfec9 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-args-3.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-args-3.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-march=rv64gcv_zvfh -mabi=lp64 -O1 --param=riscv-vector-abi" } */
+/* { dg-options "-march=rv64gcv_zvfh -mabi=lp64 -O1" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "riscv_vector.h"
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-args-4-run.c b/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-args-4-run.c
index 21618b5..25898b6 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-args-4-run.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-args-4-run.c
@@ -1,5 +1,5 @@
/* { dg-do run { target { riscv_v } } } */
-/* { dg-options "-O1 --param=riscv-vector-abi" } */
+/* { dg-options "-O1" } */
/* { dg-additional-sources abi-call-args-4.c } */
#include <stdbool.h>
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-args-4.c b/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-args-4.c
index 2872ffc..98fdfc1 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-args-4.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-args-4.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-march=rv64gcv_zvfh -mabi=lp64 -O1 --param=riscv-vector-abi" } */
+/* { dg-options "-march=rv64gcv_zvfh -mabi=lp64 -O1" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "riscv_vector.h"
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-error-1.c b/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-error-1.c
index 664b514..92cd8eb 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-error-1.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-error-1.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-march=rv64gcv -mabi=lp64d --param=riscv-vector-abi -Wno-implicit-function-declaration" } */
+/* { dg-options "-march=rv64gcv -mabi=lp64d -Wno-implicit-function-declaration" } */
#include "riscv_vector.h"
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-return-run.c b/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-return-run.c
index b5b3c5d..d611171 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-return-run.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-return-run.c
@@ -1,5 +1,5 @@
/* { dg-do run { target { riscv_v } } } */
-/* { dg-options "-O1 --param=riscv-vector-abi" } */
+/* { dg-options "-O1" } */
/* { dg-additional-sources abi-call-return.c } */
#include <stdbool.h>
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-return.c b/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-return.c
index ac19cc6..00f2c2c 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-return.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-return.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-march=rv64gcv -mabi=lp64d -O1 --param=riscv-vector-abi" } */
+/* { dg-options "-march=rv64gcv -mabi=lp64d -O1" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "riscv_vector.h"
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-variant_cc.c b/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-variant_cc.c
index 16c7687..9b3faf8 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-variant_cc.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-variant_cc.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-march=rv64gcv -mabi=lp64d -O1 --param=riscv-vector-abi" } */
+/* { dg-options "-march=rv64gcv -mabi=lp64d -O1" } */
#include "riscv_vector.h"
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/abi-callee-saved-1-fixed-1.c b/gcc/testsuite/gcc.target/riscv/rvv/base/abi-callee-saved-1-fixed-1.c
index 06b3647..dc9a9bb 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/base/abi-callee-saved-1-fixed-1.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/abi-callee-saved-1-fixed-1.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O1 -march=rv64gczve32x -mabi=lp64d --param=riscv-vector-abi --param=riscv-autovec-preference=fixed-vlmax" } */
+/* { dg-options "-O1 -march=rv64gczve32x -mabi=lp64d --param=riscv-autovec-preference=fixed-vlmax" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include <riscv_vector.h>
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/abi-callee-saved-1-fixed-2.c b/gcc/testsuite/gcc.target/riscv/rvv/base/abi-callee-saved-1-fixed-2.c
index 5a6ab81..552f9e7 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/base/abi-callee-saved-1-fixed-2.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/abi-callee-saved-1-fixed-2.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O1 -march=rv64gcv_zvl4096b -mabi=lp64d --param=riscv-vector-abi --param=riscv-autovec-preference=fixed-vlmax" } */
+/* { dg-options "-O1 -march=rv64gcv_zvl4096b -mabi=lp64d --param=riscv-autovec-preference=fixed-vlmax" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include <riscv_vector.h>
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/abi-callee-saved-1-save-restore.c b/gcc/testsuite/gcc.target/riscv/rvv/base/abi-callee-saved-1-save-restore.c
index c6aa5e1..9ed72a6 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/base/abi-callee-saved-1-save-restore.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/abi-callee-saved-1-save-restore.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O1 -march=rv64gcv_zfh -mabi=lp64d --param=riscv-vector-abi -msave-restore" } */
+/* { dg-options "-O1 -march=rv64gcv_zfh -mabi=lp64d -msave-restore" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include <riscv_vector.h>
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/abi-callee-saved-1-zcmp.c b/gcc/testsuite/gcc.target/riscv/rvv/base/abi-callee-saved-1-zcmp.c
index 386916a..dedcef9 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/base/abi-callee-saved-1-zcmp.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/abi-callee-saved-1-zcmp.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O1 -march=rv64gcv_zfh_zca_zcmp -mabi=lp64d --param=riscv-vector-abi -fno-shrink-wrap-separate" } */
+/* { dg-options "-O1 -march=rv64gcv_zfh_zca_zcmp -mabi=lp64d -fno-shrink-wrap-separate" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include <riscv_vector.h>
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/abi-callee-saved-1.c b/gcc/testsuite/gcc.target/riscv/rvv/base/abi-callee-saved-1.c
index bc1f9ff..13e3328 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/base/abi-callee-saved-1.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/abi-callee-saved-1.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O1 -march=rv64gcv_zfh -mabi=lp64d --param=riscv-vector-abi" } */
+/* { dg-options "-O1 -march=rv64gcv_zfh -mabi=lp64d" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include <riscv_vector.h>
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/abi-callee-saved-2-save-restore.c b/gcc/testsuite/gcc.target/riscv/rvv/base/abi-callee-saved-2-save-restore.c
index 96a3e71..39c8c00 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/base/abi-callee-saved-2-save-restore.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/abi-callee-saved-2-save-restore.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O1 -march=rv64gcv_zfh -mabi=lp64d --param=riscv-vector-abi -msave-restore" } */
+/* { dg-options "-O1 -march=rv64gcv_zfh -mabi=lp64d -msave-restore" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include <riscv_vector.h>
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/abi-callee-saved-2-zcmp.c b/gcc/testsuite/gcc.target/riscv/rvv/base/abi-callee-saved-2-zcmp.c
index b3a8141..14fb2c4 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/base/abi-callee-saved-2-zcmp.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/abi-callee-saved-2-zcmp.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O1 -march=rv64gcv_zfh_zca_zcmp -mabi=lp64d --param=riscv-vector-abi -fno-shrink-wrap-separate" } */
+/* { dg-options "-O1 -march=rv64gcv_zfh_zca_zcmp -mabi=lp64d -fno-shrink-wrap-separate" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include <riscv_vector.h>
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/abi-callee-saved-2.c b/gcc/testsuite/gcc.target/riscv/rvv/base/abi-callee-saved-2.c
index 8b6537b..a9f3855 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/base/abi-callee-saved-2.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/abi-callee-saved-2.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O1 -march=rv64gcv_zfh -mabi=lp64d --param=riscv-vector-abi" } */
+/* { dg-options "-O1 -march=rv64gcv_zfh -mabi=lp64d" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include <riscv_vector.h>
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/big_endian-2.c b/gcc/testsuite/gcc.target/riscv/rvv/base/big_endian-2.c
index 86cf583..45cc97e 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/base/big_endian-2.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/big_endian-2.c
@@ -2,4 +2,4 @@
/* { dg-options "-march=rv64gc_zve32x -mabi=lp64d -mbig-endian -O3" } */
#pragma riscv intrinsic "vector"
-vint32m1_t foo (vint32m1_t) {} // { dg-excess-errors "sorry, unimplemented: Current RISC-V GCC cannot support RVV in big-endian mode" }
+vint32m1_t foo (vint32m1_t) {} // { dg-excess-errors "sorry, unimplemented: Current RISC-V GCC does not support RVV in big-endian mode" }
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-69.c b/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-69.c
index 5f07b89..a971103 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-69.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-69.c
@@ -24,8 +24,8 @@ test_float_point_dynamic_frm (vfloat32m1_t op1, vfloat32m1_t op2,
return result;
}
-/* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 1 } } */
+/* { dg-final { scan-assembler-times {vfadd\.vv\s+v[0-9]+,\s*v[0-9]+,\s*v[0-9]+} 2 } } */
/* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 2 } } */
-/* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 1 } } */
-/* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
+/* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
+/* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
/* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-70.c b/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-70.c
index 44f985b..b1c5192 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-70.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-70.c
@@ -21,8 +21,8 @@ test_float_point_dynamic_frm (vfloat32m1_t op1, vfloat32m1_t op2,
return result;
}
-/* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
+/* { dg-final { scan-assembler-times {vfadd\.vv\s+v[0-9]+,\s*v[0-9]+,\s*v[0-9]+} 3 } } */
/* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 2 } } */
-/* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 1 } } */
-/* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
+/* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
+/* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
/* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-71.c b/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-71.c
index 694f3aa..c317055 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-71.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-71.c
@@ -21,8 +21,8 @@ test_float_point_dynamic_frm (vfloat32m1_t op1, vfloat32m1_t op2,
return result;
}
-/* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
+/* { dg-final { scan-assembler-times {vfadd\.vv\s+v[0-9]+,\s*v[0-9]+,\s*v[0-9]+} 3 } } */
/* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 2 } } */
-/* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 1 } } */
-/* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
+/* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
+/* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 3 } } */
/* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/misc_vreinterpret_vbool_vint.c b/gcc/testsuite/gcc.target/riscv/rvv/base/misc_vreinterpret_vbool_vint.c
index 9563c8d..504d61d 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/base/misc_vreinterpret_vbool_vint.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/misc_vreinterpret_vbool_vint.c
@@ -114,6 +114,4 @@ vuint64m1_t test_vreinterpret_v_b1_vuint64m1 (vbool1_t src) {
return __riscv_vreinterpret_v_b1_u64m1 (src);
}
-/* { dg-final { scan-assembler-times {vlm\.v\s+v[0-9]+,\s*0\([a-x][0-9]+\)} 28 } } */
-/* { dg-final { scan-assembler-times {vsm\.v\s+v[0-9]+,\s*0\([a-x][0-9]+\)} 20 } } */
-/* { dg-final { scan-assembler-times {vs1r\.v\s+v[0-9]+,\s*0\([a-x][0-9]+\)} 8 } } */
+/* { dg-final { scan-assembler-times {vmv1r.v\s+v[0-9]+,\s*v[0-9]+} 28 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv32_vadd.c b/gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv32_vadd.c
index 05e6e43..6cf1dfd 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv32_vadd.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv32_vadd.c
@@ -4,9 +4,7 @@
#include "overloaded_vadd.h"
/* { dg-final { scan-assembler-times {vsetvli\s+zero,\s*[ax][0-9]+,\s*e8,\s*m1,\s*ta,\s*ma} 4 } } */
-/* { dg-final { scan-assembler-times {vsetvli\s+[ax][0-9]+,\s*zero,\s*e8,\s*m1,\s*ta,\s*ma} 8 } } */
/* { dg-final { scan-assembler-times {vsetvli\s+zero,\s*[ax][0-9]+,\s*e8,\s*m1,\s*tu,\s*ma} 4 } } */
/* { dg-final { scan-assembler-times {vsetvli\s+zero,\s*[ax][0-9]+,\s*e8,\s*m1,\s*ta,\s*mu} 2 } } */
/* { dg-final { scan-assembler-times {vsetvli\s+zero,\s*[ax][0-9]+,\s*e8,\s*m1,\s*tu,\s*mu} 2 } } */
/* { dg-final { scan-assembler-times {vadd\.vv\s+v[0-9]+,\s*v[0-9]+,\s*v[0-9]+} 6 } } */
-/* { dg-final { scan-assembler-times {vadd\.vx\s+v[0-9]+,\s*v[0-9]+,\s*[ax][0-9]+} 6 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv32_vfadd.c b/gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv32_vfadd.c
index dd18359..970b8d9 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv32_vfadd.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv32_vfadd.c
@@ -3,9 +3,7 @@
#include "overloaded_vfadd.h"
-/* { dg-final { scan-assembler-times {vsetvli\s+[ax][0-9]+,\s*zero,\s*e16,\s*mf4,\s*ta,\s*ma} 16 } } */
/* { dg-final { scan-assembler-times {vsetvli\s+zero,\s*[ax][0-9]+,\s*e16,\s*mf4,\s*ta,\s*ma} 4 } } */
-/* { dg-final { scan-assembler-times {vsetvli\s+[ax][0-9]+,\s*zero,\s*e8,\s*mf8,\s*ta,\s*ma} 8 } } */
/* { dg-final { scan-assembler-times {vsetvli\s+zero,\s*[ax][0-9]+,\s*e16,\s*mf4,\s*tu,\s*ma} 4 } } */
/* { dg-final { scan-assembler-times {vsetvli\s+zero,\s*[ax][0-9]+,\s*e16,\s*mf4,\s*tu,\s*mu} 2 } } */
/* { dg-final { scan-assembler-times {vsetvli\s+zero,\s*[ax][0-9]+,\s*e16,\s*mf4,\s*ta,\s*mu} 2 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv32_vget_vset.c b/gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv32_vget_vset.c
index 1bd091b..c42e38e 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv32_vget_vset.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv32_vget_vset.c
@@ -3,5 +3,4 @@
#include "overloaded_vget_vset.h"
-/* { dg-final { scan-assembler-times {vl[0-9]+re[0-9]+\.v\s+v[0-9]+,\s*0\([ax][0-9]+\)} 14 } } */
-/* { dg-final { scan-assembler-times {vs[0-9]+r\.v\s+v[0-9]+,\s*0\([ax][0-9]+\)} 13 } } */
+/* { dg-final { scan-assembler-times {vmv1r.v\s+v[0-9]+,\s*v[0-9]+} 2 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv32_vloxseg2ei16.c b/gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv32_vloxseg2ei16.c
index 3bec715..91eb1066 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv32_vloxseg2ei16.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv32_vloxseg2ei16.c
@@ -4,7 +4,6 @@
#include "overloaded_vloxseg2ei16.h"
/* { dg-final { scan-assembler-times {vsetvli\s+zero,\s*[ax][0-9]+,\s*e64,\s*m4,\s*ta,\s*ma} 2 } } */
-/* { dg-final { scan-assembler-times {vsetvli\s+[ax][0-9]+,\s*zero,\s*e8,\s*mf2,\s*ta,\s*ma} 4 } } */
/* { dg-final { scan-assembler-times {vsetvli\s+zero,\s*[ax][0-9]+,\s*e64,\s*m4,\s*tu,\s*ma} 2 } } */
/* { dg-final { scan-assembler-times {vsetvli\s+zero,\s*[ax][0-9]+,\s*e64,\s*m4,\s*tu,\s*mu} 1 } } */
/* { dg-final { scan-assembler-times {vsetvli\s+zero,\s*[ax][0-9]+,\s*e64,\s*m4,\s*ta,\s*mu} 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv32_vreinterpret.c b/gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv32_vreinterpret.c
index d5d80c0..42ef5c3 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv32_vreinterpret.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv32_vreinterpret.c
@@ -3,8 +3,4 @@
#include "overloaded_vreinterpret.h"
-/* { dg-final { scan-assembler-times {vsetvli\s+[ax][0-9]+,\s*zero,\s*e8,\s*m4,\s*ta,\s*ma} 1 } } */
-/* { dg-final { scan-assembler-times {vsetvli\s+[ax][0-9]+,\s*zero,\s*e8,\s*m2,\s*ta,\s*ma} 1 } } */
-/* { dg-final { scan-assembler-times {vsetvli\s+[ax][0-9]+,\s*zero,\s*e8,\s*mf2,\s*ta,\s*ma} 1 } } */
-/* { dg-final { scan-assembler-times {vsetvli\s+[ax][0-9]+,\s*zero,\s*e16,\s*mf2,\s*ta,\s*ma} 2 } } */
-/* { dg-final { scan-assembler-times {vsetvli\s+[ax][0-9]+,\s*zero,\s*e32,\s*mf2,\s*ta,\s*ma} 1 } } */
+/* { dg-final { scan-assembler-times {vmv1r.v\s+v[0-9]+,\s*v[0-9]+} 2 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv64_vadd.c b/gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv64_vadd.c
index 390e2e5..382d8d2 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv64_vadd.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv64_vadd.c
@@ -3,9 +3,7 @@
#include "overloaded_vadd.h"
/* { dg-final { scan-assembler-times {vsetvli\s+zero,\s*[ax][0-9]+,\s*e8,\s*m1,\s*ta,\s*ma} 4 } } */
-/* { dg-final { scan-assembler-times {vsetvli\s+[ax][0-9]+,\s*zero,\s*e8,\s*m1,\s*ta,\s*ma} 8 } } */
/* { dg-final { scan-assembler-times {vsetvli\s+zero,\s*[ax][0-9]+,\s*e8,\s*m1,\s*tu,\s*ma} 4 } } */
/* { dg-final { scan-assembler-times {vsetvli\s+zero,\s*[ax][0-9]+,\s*e8,\s*m1,\s*ta,\s*mu} 2 } } */
/* { dg-final { scan-assembler-times {vsetvli\s+zero,\s*[ax][0-9]+,\s*e8,\s*m1,\s*tu,\s*mu} 2 } } */
/* { dg-final { scan-assembler-times {vadd\.vv\s+v[0-9]+,\s*v[0-9]+,\s*v[0-9]+} 6 } } */
-/* { dg-final { scan-assembler-times {vadd\.vx\s+v[0-9]+,\s*v[0-9]+,\s*[ax][0-9]+} 6 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv64_vfadd.c b/gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv64_vfadd.c
index bf540c6..cf59130 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv64_vfadd.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv64_vfadd.c
@@ -2,9 +2,7 @@
#include "overloaded_vfadd.h"
-/* { dg-final { scan-assembler-times {vsetvli\s+[ax][0-9]+,\s*zero,\s*e16,\s*mf4,\s*ta,\s*ma} 16 } } */
/* { dg-final { scan-assembler-times {vsetvli\s+zero,\s*[ax][0-9]+,\s*e16,\s*mf4,\s*ta,\s*ma} 4 } } */
-/* { dg-final { scan-assembler-times {vsetvli\s+[ax][0-9]+,\s*zero,\s*e8,\s*mf8,\s*ta,\s*ma} 8 } } */
/* { dg-final { scan-assembler-times {vsetvli\s+zero,\s*[ax][0-9]+,\s*e16,\s*mf4,\s*tu,\s*ma} 4 } } */
/* { dg-final { scan-assembler-times {vsetvli\s+zero,\s*[ax][0-9]+,\s*e16,\s*mf4,\s*tu,\s*mu} 2 } } */
/* { dg-final { scan-assembler-times {vsetvli\s+zero,\s*[ax][0-9]+,\s*e16,\s*mf4,\s*ta,\s*mu} 2 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv64_vget_vset.c b/gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv64_vget_vset.c
index a6a05c1..d4f573d 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv64_vget_vset.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv64_vget_vset.c
@@ -2,5 +2,4 @@
#include "overloaded_vget_vset.h"
-/* { dg-final { scan-assembler-times {vl[0-9]+re[0-9]+\.v\s+v[0-9]+,\s*0\([ax][0-9]+\)} 14 } } */
-/* { dg-final { scan-assembler-times {vs[0-9]+r\.v\s+v[0-9]+,\s*0\([ax][0-9]+\)} 13 } } */
+/* { dg-final { scan-assembler-times {vmv1r.v\s+v[0-9]+,\s*v[0-9]+} 2 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv64_vloxseg2ei16.c b/gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv64_vloxseg2ei16.c
index d0b8be0..3261f72 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv64_vloxseg2ei16.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv64_vloxseg2ei16.c
@@ -3,8 +3,6 @@
#include "overloaded_vloxseg2ei16.h"
/* { dg-final { scan-assembler-times {vsetvli\s+zero,\s*[ax][0-9]+,\s*e64,\s*m4,\s*ta,\s*ma} 2 } } */
-/* { dg-final { scan-assembler-times {vsetvli\s+[ax][0-9]+,\s*zero,\s*e8,\s*mf2,\s*ta,\s*ma} 4 } } */
/* { dg-final { scan-assembler-times {vsetvli\s+zero,\s*[ax][0-9]+,\s*e64,\s*m4,\s*tu,\s*ma} 2 } } */
/* { dg-final { scan-assembler-times {vsetvli\s+zero,\s*[ax][0-9]+,\s*e64,\s*m4,\s*tu,\s*mu} 1 } } */
-/* { dg-final { scan-assembler-times {vsetvli\s+zero,\s*[ax][0-9]+,\s*e64,\s*m4,\s*ta,\s*mu} 1 } } */
/* { dg-final { scan-assembler-times {vloxseg2ei16\.v\s+v[0-9]+,\s*\([ax][0-9]+\),\s*v[0-9]+} 6 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv64_vreinterpret.c b/gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv64_vreinterpret.c
index 57ec538..06b0ab9 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv64_vreinterpret.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv64_vreinterpret.c
@@ -2,8 +2,4 @@
#include "overloaded_vreinterpret.h"
-/* { dg-final { scan-assembler-times {vsetvli\s+[ax][0-9]+,\s*zero,\s*e8,\s*m4,\s*ta,\s*ma} 1 } } */
-/* { dg-final { scan-assembler-times {vsetvli\s+[ax][0-9]+,\s*zero,\s*e8,\s*m2,\s*ta,\s*ma} 1 } } */
-/* { dg-final { scan-assembler-times {vsetvli\s+[ax][0-9]+,\s*zero,\s*e8,\s*mf2,\s*ta,\s*ma} 1 } } */
-/* { dg-final { scan-assembler-times {vsetvli\s+[ax][0-9]+,\s*zero,\s*e16,\s*mf2,\s*ta,\s*ma} 2 } } */
-/* { dg-final { scan-assembler-times {vsetvli\s+[ax][0-9]+,\s*zero,\s*e32,\s*mf2,\s*ta,\s*ma} 1 } } */
+/* { dg-final { scan-assembler-times {vmv1r.v\s+v[0-9]+,\s*v[0-9]+} 2 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/pr109092.c b/gcc/testsuite/gcc.target/riscv/rvv/base/pr109092.c
new file mode 100644
index 0000000..4a608da
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/pr109092.c
@@ -0,0 +1,4 @@
+/* { dg-do compile } */
+/* { dg-options "-mabi=lp64d -march=rv64imafdc" } */
+
+void foo(int i) {}
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/pr113420-1.c b/gcc/testsuite/gcc.target/riscv/rvv/base/pr113420-1.c
new file mode 100644
index 0000000..d17f228
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/pr113420-1.c
@@ -0,0 +1,30 @@
+/* { dg-do compile } */
+/* { dg-options "-march=rv64gcv -mabi=lp64d -O3" } */
+
+#include "riscv_vector.h"
+
+void
+matrix_transpose_intrinsics (float *dst, float *src, size_t n)
+{
+ for (size_t row_id = 0; row_id < n; ++row_id)
+ { // input row-index
+ size_t avl = n;
+ // source pointer to row_id-th row
+ float *row_src = src + row_id * n;
+ // destination pointer to row_id-th column
+ float *row_dst = dst + row_id;
+ while (avl > 0)
+ {
+ size_t vl = __riscv_vsetvl_e32m1 (avl);
+ vfloat32m1_t row = __riscv_vle32_v_f32m1 (row_src, vl);
+ __riscv_vsse32 (row_dst, sizeof (float) * n, row, vl);
+ // updating application vector length
+ avl -= vl;
+ // updating source and destination pointers
+ row_src += vl;
+ row_dst += vl * n;
+ }
+ }
+}
+
+/* { dg-final { scan-assembler-times {vsse32\.v} 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/pr113420-2.c b/gcc/testsuite/gcc.target/riscv/rvv/base/pr113420-2.c
new file mode 100644
index 0000000..76bdc01
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/pr113420-2.c
@@ -0,0 +1,31 @@
+/* { dg-do compile } */
+/* { dg-options "-march=rv64gcv -mabi=lp64d -O3" } */
+
+#include "riscv_vector.h"
+
+vint8mf8_t
+test_vle8_v_i8mf8_m (vbool64_t vm, const int8_t *rs1, size_t vl)
+{
+ return __riscv_vle8 (vm, rs1, vl);
+}
+
+vuint8mf8_t
+test_vle8_v_u8mf8_m (vbool64_t vm, const uint8_t *rs1, size_t vl)
+{
+ return __riscv_vle8 (vm, rs1, vl);
+}
+
+vfloat32mf2_t
+test_vfadd_vv_f32mf2 (vfloat32mf2_t vs2, vfloat32mf2_t vs1, size_t vl)
+{
+ return __riscv_vfadd (vs2, vs1, vl);
+}
+
+vfloat32mf2_t
+test_vfadd_vv_f32mf2_rm (vfloat32mf2_t vs2, vfloat32mf2_t vs1, size_t vl)
+{
+ return __riscv_vfadd (vs2, vs1, __RISCV_FRM_RNE, vl);
+}
+
+/* { dg-final { scan-assembler-times {vle8\.v} 2 } } */
+/* { dg-final { scan-assembler-times {vfadd\.v} 2 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/pragma-1.c b/gcc/testsuite/gcc.target/riscv/rvv/base/pragma-1.c
index 3d81b17..ef329e3 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/base/pragma-1.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/pragma-1.c
@@ -1,4 +1,4 @@
/* { dg-do compile } */
/* { dg-options "-O3 -march=rv32gc -mabi=ilp32d" } */
-#pragma riscv intrinsic "vector" /* { dg-error {#pragma riscv intrinsic' option 'vector' needs 'V' extension enabled} } */
+#pragma riscv intrinsic "vector" /* { dg-error {#pragma riscv intrinsic' option 'vector' needs 'V' or 'XTHEADVECTOR' extension enabled} } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/spill-10.c b/gcc/testsuite/gcc.target/riscv/rvv/base/spill-10.c
index d37857e..d5a839a 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/base/spill-10.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/spill-10.c
@@ -11,13 +11,16 @@ void f (char*);
** addi\tsp,sp,-32
** sw\tra,4\(sp\)
** sw\ts0,0\(sp\)
-** addi\ts0,sp,8
+** addi\ts0,sp,8
** csrr\tt0,vlenb
** sub\tsp,sp,t0
+** vs1r.v\tv1,0\(sp\)
+** sub\tsp,sp,t0
+** vs1r.v\tv2,0\(sp\)
** ...
-** addi\ta2,a2,15
-** andi\ta2,a2,-8
-** sub\tsp,sp,a2
+** addi\ta1,a1,15
+** andi\ta1,a1,-8
+** sub\tsp,sp,a1
** ...
** lw\tra,4\(sp\)
** lw\ts0,0\(sp\)
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/spill-11.c b/gcc/testsuite/gcc.target/riscv/rvv/base/spill-11.c
index d9362ec..cbfe921 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/base/spill-11.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/spill-11.c
@@ -9,21 +9,22 @@ void fn3 (char*);
/*
** stack_save_restore_2:
-** call\tt0,__riscv_save_1
+** call\tt0,__riscv_save_0
** csrr\tt0,vlenb
-** slli\tt1,t0,1
-** sub\tsp,sp,t1
-** li\tt0,-8192
-** addi\tt0,t0,192
-** add\tsp,sp,t0
+** sub\tsp,sp,t0
+** vs1r.v\tv1,0\(sp\)
** ...
** csrr\tt0,vlenb
-** slli\tt1,t0,1
+** slli\tt1,t0,2
+** sub\tt1,t1,t0
** add\tsp,sp,t1
** li\tt0,8192
** addi\tt0,t0,-192
** add\tsp,sp,t0
-** tail\t__riscv_restore_1
+** ...
+** vl1re64.v\tv1,0\(sp\)
+** add\tsp,sp,t0
+** tail\t__riscv_restore_0
*/
int stack_save_restore_2 (float a1, float a2, float a3, float a4,
float a5, float a6, float a7, float a8,
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/spill-9.c b/gcc/testsuite/gcc.target/riscv/rvv/base/spill-9.c
index ec67357..7e5758b 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/base/spill-9.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/spill-9.c
@@ -11,14 +11,14 @@ void f (char*);
** addi\tsp,sp,-48
** sw\tra,12\(sp\)
** sw\ts0,8\(sp\)
-** addi\ts0,sp,16
+** addi\ts0,sp,16
** csrr\tt0,vlenb
-** slli\tt1,t0,1
-** sub\tsp,sp,t1
+** sub\tsp,sp,t0
+** vs1r.v\tv1,0\(sp\)
** ...
-** addi\ta2,a2,23
-** andi\ta2,a2,-16
-** sub\tsp,sp,a2
+** addi\ta0,sp,15
+** andi\ta0,a0,-16
+** call\tf
** ...
** lw\tra,12\(sp\)
** lw\ts0,8\(sp\)
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/tuple_vundefined.c b/gcc/testsuite/gcc.target/riscv/rvv/base/tuple_vundefined.c
index 893e5a3..43d1497 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/base/tuple_vundefined.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/tuple_vundefined.c
@@ -69,5 +69,5 @@ test_vundefined_u64m4x2 ()
return __riscv_vundefined_u64m4x2 ();
}
-/* { dg-final { scan-assembler-times {vse[0-9]+\.v\s+v[0-9]+,\s*0\([0-9ax]+\)} 18 } } */
-/* { dg-final { scan-assembler-times {vs[0-9]+r\.v\s+v[0-9]+,\s*0\([a-x][0-9]+\)} 28 } } */
+/* { dg-final { scan-assembler-times {vse[0-9]+\.v\s+v[0-9]+,\s*0\([0-9ax]+\)} 0 } } */
+/* { dg-final { scan-assembler-times {vs[0-9]+r\.v\s+v[0-9]+,\s*0\([a-x][0-9]+\)} 0 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/vcreate.c b/gcc/testsuite/gcc.target/riscv/rvv/base/vcreate.c
index 7950990..0fc8c34 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/base/vcreate.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/vcreate.c
@@ -254,7 +254,6 @@ test_vcreate_v_i64m2x4 (vint64m2_t v0, vint64m2_t v1, vint64m2_t v2,
return __riscv_vcreate_v_i64m2x4 (v0, v1, v2, v3);
}
-/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e16,\s*mf4,\s*t[au],\s*m[au]} 7 } } */
-/* { dg-final { scan-assembler-times {v[ls]e16\.v\s+v[0-9]+,\s*0\([0-9a-x]+\)} 70 } } */
-/* { dg-final { scan-assembler-times {vl[0-9]+re[0-9]+\.v\s+v[0-9]+,\s*0\([0-9a-x]+\)} 110 } } */
-/* { dg-final { scan-assembler-times {vs[0-9]+r\.v\s+v[0-9]+,\s*0\([a-x0-9]+\)} 81 } } */
+/* { dg-final { scan-assembler-times {vmv1r.v\s+v[0-9]+,\s*v[0-9]+} 24 } } */
+/* { dg-final { scan-assembler-times {vmv2r.v\s+v[0-9]+,\s*v[0-9]+} 12 } } */
+/* { dg-final { scan-assembler-times {vmv4r.v\s+v[0-9]+,\s*v[0-9]+} 16 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/vlmul_ext-1.c b/gcc/testsuite/gcc.target/riscv/rvv/base/vlmul_ext-1.c
index 501d98c..4253729 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/base/vlmul_ext-1.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/vlmul_ext-1.c
@@ -11,4 +11,5 @@ vint64m8_t test_vlmul_ext_v_i64m2_i64m8(vint64m2_t op1) {
return __riscv_vlmul_ext_v_i64m2_i64m8(op1);
}
-/* { dg-final { scan-assembler-times {vs8r.v\s+[,\sa-x0-9()]+} 2} } */
+/* { dg-final { scan-assembler-times {vmv1r.v\s+v[0-9]+,\s*v[0-9]+} 2 } } */
+/* { dg-final { scan-assembler-times {vmv2r.v\s+v[0-9]+,\s*v[0-9]+} 2 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/zvfh-over-zvfhmin.c b/gcc/testsuite/gcc.target/riscv/rvv/base/zvfh-over-zvfhmin.c
index 1d82cc8..8402702 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/base/zvfh-over-zvfhmin.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/zvfh-over-zvfhmin.c
@@ -72,17 +72,7 @@ vfloat16m4_t test_vget_v_f16m8_f16m4(vfloat16m8_t src, size_t index) {
/* { dg-final { scan-assembler-times {vsetvli\s+zero,\s*[a-x0-9]+,\s*e16,\s*mf4,\s*t[au],\s*m[au]} 3 } } */
/* { dg-final { scan-assembler-times {vsetvli\s+zero,\s*[a-x0-9]+,\s*e16,\s*m4,\s*t[au],\s*m[au]} 2 } } */
/* { dg-final { scan-assembler-times {vsetvli\s+zero,\s*[a-x0-9]+,\s*e16,\s*m8,\s*t[au],\s*m[au]} 1 } } */
-/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e16,\s*mf4,\s*t[au],\s*m[au]} 8 } } */
-/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e16,\s*mf2,\s*t[au],\s*m[au]} 2 } } */
/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e16,\s*m8,\s*t[au],\s*m[au]} 1 } } */
/* { dg-final { scan-assembler-times {vfwcvt\.f\.f\.v\s+v[0-9]+,\s*v[0-9]+} 2 } } */
/* { dg-final { scan-assembler-times {vfncvt\.f\.f\.w\s+v[0-9]+,\s*v[0-9]+} 2 } } */
-/* { dg-final { scan-assembler-times {vle16\.v\s+v[0-9]+,\s*0\([0-9ax]+\)} 7 } } */
-/* { dg-final { scan-assembler-times {vse16\.v\s+v[0-9]+,\s*0\([a-x][0-9]+\)} 6 } } */
-/* { dg-final { scan-assembler-times {vl1re16\.v\s+v[0-9]+,\s*0\([a-x][0-9]+\)} 1 } } */
-/* { dg-final { scan-assembler-times {vl2re16\.v\s+v[0-9]+,\s*0\([a-x][0-9]+\)} 1 } } */
-/* { dg-final { scan-assembler-times {vl4re16\.v\s+v[0-9]+,\s*0\([a-x][0-9]+\)} 3 } } */
-/* { dg-final { scan-assembler-times {vl8re16\.v\s+v[0-9]+,\s*0\([a-x][0-9]+\)} 1 } } */
-/* { dg-final { scan-assembler-times {vs2r\.v\s+v[0-9]+,\s*0\([a-x][0-9]+\)} 1 } } */
-/* { dg-final { scan-assembler-times {vs4r\.v\s+v[0-9]+,\s*0\([a-x][0-9]+\)} 3 } } */
-/* { dg-final { scan-assembler-times {vs8r\.v\s+v[0-9]+,\s*0\([a-x][0-9]+\)} 5 } } */
+/* { dg-final { scan-assembler-times {vle16\.v\s+v[0-9]+,\s*0\([0-9ax]+\)} 2 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/zvfhmin-intrinsic.c b/gcc/testsuite/gcc.target/riscv/rvv/base/zvfhmin-intrinsic.c
index 193902d..4513815 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/base/zvfhmin-intrinsic.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/zvfhmin-intrinsic.c
@@ -187,20 +187,9 @@ vfloat16m4_t test_vget_v_f16m8_f16m4(vfloat16m8_t src, size_t index) {
/* { dg-final { scan-assembler-times {vsetvli\s+zero,\s*[a-x0-9]+,\s*e16,\s*m2,\s*t[au],\s*m[au]} 2 } } */
/* { dg-final { scan-assembler-times {vsetvli\s+zero,\s*[a-x0-9]+,\s*e16,\s*m4,\s*t[au],\s*m[au]} 2 } } */
/* { dg-final { scan-assembler-times {vsetvli\s+zero,\s*[a-x0-9]+,\s*e16,\s*m8,\s*t[au],\s*m[au]} 1 } } */
-/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e16,\s*mf4,\s*t[au],\s*m[au]} 18 } } */
-/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e16,\s*mf2,\s*t[au],\s*m[au]} 6 } } */
/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e16,\s*m2,\s*t[au],\s*m[au]} 1 } } */
/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e16,\s*m4,\s*t[au],\s*m[au]} 1 } } */
/* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e16,\s*m8,\s*t[au],\s*m[au]} 5 } } */
/* { dg-final { scan-assembler-times {vfwcvt\.f\.f\.v\s+v[0-9]+,\s*v[0-9]+} 5 } } */
/* { dg-final { scan-assembler-times {vfncvt\.f\.f\.w\s+v[0-9]+,\s*v[0-9]+} 5 } } */
-/* { dg-final { scan-assembler-times {vle16\.v\s+v[0-9]+,\s*0\([a-x][0-9]+\)} 15 } } */
-/* { dg-final { scan-assembler-times {vse16\.v\s+v[0-9]+,\s*0\([a-x][0-9]+\)} 15 } } */
-/* { dg-final { scan-assembler-times {vl1re16\.v\s+v[0-9]+,\s*0\([a-x][0-9]+\)} 7 } } */
-/* { dg-final { scan-assembler-times {vl2re16\.v\s+v[0-9]+,\s*0\([a-x][0-9]+\)} 5 } } */
-/* { dg-final { scan-assembler-times {vl8re16\.v\s+v[0-9]+,\s*0\([a-x][0-9]+\)} 6 } } */
-/* { dg-final { scan-assembler-times {vl4re16\.v\s+v[0-9]+,\s*0\([a-x][0-9]+\)} 6 } } */
-/* { dg-final { scan-assembler-times {vs1r\.v\s+v[0-9]+,\s*0\([a-x][0-9]+\)} 5 } } */
-/* { dg-final { scan-assembler-times {vs2r\.v\s+v[0-9]+,\s*0\([a-x][0-9]+\)} 5 } } */
-/* { dg-final { scan-assembler-times {vs4r\.v\s+v[0-9]+,\s*0\([a-x][0-9]+\)} 5 } } */
-/* { dg-final { scan-assembler-times {vs8r\.v\s+v[0-9]+,\s*0\([a-x][0-9]+\)} 13 } } */
+/* { dg-final { scan-assembler-times {vle16\.v\s+v[0-9]+,\s*0\([a-x][0-9]+\)} 2 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/zvl-unimplemented-1.c b/gcc/testsuite/gcc.target/riscv/rvv/base/zvl-unimplemented-1.c
index 03f6703..1912a24 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/base/zvl-unimplemented-1.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/zvl-unimplemented-1.c
@@ -1,4 +1,4 @@
/* { dg-do compile } */
/* { dg-options "-O3 -march=rv64gcv_zvl8192b -mabi=lp64d --param riscv-autovec-preference=fixed-vlmax" } */
-void foo () {} // { dg-excess-errors "sorry, unimplemented: Current RISC-V GCC can not support VLEN > 4096bit for 'V' Extension" }
+void foo () {} // { dg-excess-errors "sorry, unimplemented: Current RISC-V GCC does not support VLEN > 4096bit for 'V' Extension" }
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/zvl-unimplemented-2.c b/gcc/testsuite/gcc.target/riscv/rvv/base/zvl-unimplemented-2.c
index 075112f..884e834 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/base/zvl-unimplemented-2.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/base/zvl-unimplemented-2.c
@@ -1,4 +1,4 @@
/* { dg-do compile } */
/* { dg-options "-O3 -march=rv64gcv_zvl8192b -mabi=lp64d --param riscv-autovec-preference=scalable" } */
-void foo () {} // { dg-excess-errors "sorry, unimplemented: Current RISC-V GCC can not support VLEN > 4096bit for 'V' Extension" }
+void foo () {} // { dg-excess-errors "sorry, unimplemented: Current RISC-V GCC does not support VLEN > 4096bit for 'V' Extension" }
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/attribute-1.c b/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/attribute-1.c
new file mode 100644
index 0000000..28dcf98
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/attribute-1.c
@@ -0,0 +1,47 @@
+/* { dg-do compile } */
+/* { dg-options "-march=rv64gcv -mabi=lp64d -O3" } */
+
+#include "riscv_vector.h"
+
+int
+foo (void *in, void *out)
+{
+ vint32m1_t v = __riscv_vle32_v_i32m1 (in, 4);
+ v = __riscv_vadd_vv_i32m1 (v, v, 4);
+ vbool32_t mask = __riscv_vreinterpret_v_i32m1_b32 (v);
+ return __riscv_vfirst_m_b32 (mask, 4);
+}
+
+int
+foo2 (void *in, void *out)
+{
+ vint32m1_t v = __riscv_vle32_v_i32m1 (in, 4);
+ v = __riscv_vadd_vv_i32m1 (v, v, 4);
+ vbool32_t mask = __riscv_vreinterpret_v_i32m1_b32 (v);
+ mask = __riscv_vmsbf_m_b32 (mask, 4);
+ return __riscv_vfirst_m_b32 (mask, 4);
+}
+
+int
+foo3 (void *in, void *out)
+{
+ vint32m1_t v = __riscv_vle32_v_i32m1 (in, 4);
+ v = __riscv_vadd_vv_i32m1 (v, v, 4);
+ vbool32_t mask = __riscv_vreinterpret_v_i32m1_b32 (v);
+ mask = __riscv_vmsif_m_b32 (mask, 4);
+ return __riscv_vfirst_m_b32 (mask, 4);
+}
+
+int
+foo4 (void *in, void *out)
+{
+ vint32m1_t v = __riscv_vle32_v_i32m1 (in, 4);
+ v = __riscv_vadd_vv_i32m1 (v, v, 4);
+ vbool32_t mask = __riscv_vreinterpret_v_i32m1_b32 (v);
+ mask = __riscv_vmsof_m_b32 (mask, 4);
+ return __riscv_vfirst_m_b32 (mask, 4);
+}
+
+/* { dg-final { scan-assembler-times {vsetivli\s+zero,\s*4,\s*e32,\s*m1,\s*t[au],\s*m[au]} 4 } } */
+/* { dg-final { scan-assembler-times {vsetivli} 4 } } */
+/* { dg-final { scan-assembler-not {vsetvli} } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/attribute-2.c b/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/attribute-2.c
new file mode 100644
index 0000000..b3fec26
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/attribute-2.c
@@ -0,0 +1,37 @@
+/* { dg-do compile } */
+/* { dg-options "-march=rv64gcv -mabi=lp64d -O3" } */
+
+#include "riscv_vector.h"
+
+void
+foo (uint32_t *outputMat, uint32_t *inputMat)
+{
+ vuint32m1_t matRegIn0 = __riscv_vle32_v_u32m1 (inputMat, 4);
+ vuint32m1_t matRegIn1 = __riscv_vle32_v_u32m1 (inputMat + 4, 4);
+ vuint32m1_t matRegIn2 = __riscv_vle32_v_u32m1 (inputMat + 8, 4);
+ vuint32m1_t matRegIn3 = __riscv_vle32_v_u32m1 (inputMat + 12, 4);
+
+ vbool32_t oddMask
+ = __riscv_vreinterpret_v_u32m1_b32 (__riscv_vmv_v_x_u32m1 (0xaaaa, 1));
+
+ vuint32m1_t smallTransposeMat0
+ = __riscv_vslideup_vx_u32m1_tumu (oddMask, matRegIn0, matRegIn1, 1, 4);
+ vuint32m1_t smallTransposeMat2
+ = __riscv_vslideup_vx_u32m1_tumu (oddMask, matRegIn2, matRegIn3, 1, 4);
+
+ vuint32m1_t outMat0 = __riscv_vslideup_vx_u32m1_tu (smallTransposeMat0,
+ smallTransposeMat2, 2, 4);
+
+ __riscv_vse32_v_u32m1 (outputMat, outMat0, 4);
+}
+
+void
+foo2 (void *outputMat, void *inputMat)
+{
+ vfloat32m1_t v = __riscv_vfmv_v_f_f32m1 (0xaaaa, 1);
+ __riscv_vse32_v_f32m1 (outputMat, v, 4);
+}
+
+/* { dg-final { scan-assembler-times {vsetivli\s+zero,\s*4,\s*e32,\s*m1,\s*t[au],\s*m[au]} 2 } } */
+/* { dg-final { scan-assembler-times {vsetivli} 2 } } */
+/* { dg-final { scan-assembler-not {vsetvli} } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/attribute-3.c b/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/attribute-3.c
new file mode 100644
index 0000000..643f6a9
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/attribute-3.c
@@ -0,0 +1,36 @@
+/* { dg-do compile } */
+/* { dg-options "-march=rv64gcv -mabi=lp64d -O3 -fno-schedule-insns -fno-schedule-insns2" } */
+
+#include "riscv_vector.h"
+
+void matrix_transpose_in_register(uint32_t* outputMat, uint32_t* inputMat) {
+ vuint32m1_t matRegIn0 = __riscv_vle32_v_u32m1(inputMat, 4);
+ vuint32m1_t matRegIn1 = __riscv_vle32_v_u32m1(inputMat + 4, 4);
+ vuint32m1_t matRegIn2 = __riscv_vle32_v_u32m1(inputMat + 8, 4);
+ vuint32m1_t matRegIn3 = __riscv_vle32_v_u32m1(inputMat + 12, 4);
+
+ vbool32_t oddMask = __riscv_vreinterpret_v_u32m1_b32(__riscv_vmv_v_x_u32m1(0xaaaa, 1));
+
+ vuint32m1_t smallTransposeMat0 = __riscv_vslideup_vx_u32m1_tumu(oddMask, matRegIn0, matRegIn1, 1, 4);
+ vuint32m1_t smallTransposeMat2 = __riscv_vslideup_vx_u32m1_tumu(oddMask, matRegIn2, matRegIn3, 1, 4);
+
+ vbool32_t evenMask = __riscv_vreinterpret_v_u32m1_b32(__riscv_vmv_v_x_u32m1(0x5555, 1));
+
+ vuint32m1_t smallTransposeMat1 = __riscv_vslidedown_vx_u32m1_tumu(evenMask, matRegIn1, matRegIn0, 1, 4);
+ vuint32m1_t smallTransposeMat3 = __riscv_vslidedown_vx_u32m1_tumu(evenMask, matRegIn3, matRegIn2, 1, 4);
+
+ vuint32m1_t outMat0 = __riscv_vslideup_vx_u32m1_tu(smallTransposeMat0, smallTransposeMat2, 2, 4);
+ vuint32m1_t outMat1 = __riscv_vslideup_vx_u32m1_tu(smallTransposeMat1, smallTransposeMat3, 2, 4);
+
+ vuint32m1_t outMat2 = __riscv_vslidedown_vx_u32m1_tu(smallTransposeMat2, smallTransposeMat0, 2, 2);
+ vuint32m1_t outMat3 = __riscv_vslidedown_vx_u32m1_tu(smallTransposeMat3, smallTransposeMat1, 2, 2);
+ __riscv_vse32_v_u32m1(outputMat, outMat0, 4);
+ __riscv_vse32_v_u32m1(outputMat + 4, outMat1, 4);
+ __riscv_vse32_v_u32m1(outputMat + 8, outMat2, 4);
+ __riscv_vse32_v_u32m1(outputMat + 12, outMat3, 4);
+}
+
+/* { dg-final { scan-assembler-times {vsetivli\s+zero,\s*4,\s*e32,\s*m1,\s*t[au],\s*m[au]} 2 } } */
+/* { dg-final { scan-assembler-times {vsetivli\s+zero,\s*2,\s*e32,\s*m1,\s*t[au],\s*m[au]} 1 } } */
+/* { dg-final { scan-assembler-times {vsetivli} 3 } } */
+/* { dg-final { scan-assembler-not {vsetvli} } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-107.c b/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-107.c
index dce918e..2b5e9f7 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-107.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-107.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "--param=riscv-autovec-preference=scalable -march=rv32gcv -mabi=ilp32 -fno-schedule-insns -fno-schedule-insns2 -fno-tree-vectorize" } */
+/* { dg-options "--param=riscv-autovec-preference=scalable -march=rv32gcv -mabi=ilp32 -fno-tree-vectorize" } */
#include "riscv_vector.h"
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr113429.c b/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr113429.c
new file mode 100644
index 0000000..a7f5db6
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr113429.c
@@ -0,0 +1,72 @@
+/* { dg-do run } */
+/* { dg-options "-march=rv64gcv_zvl256b -mabi=lp64d -O3" } */
+/* { dg-require-effective-target rv64 } */
+/* { dg-require-effective-target riscv_v } */
+
+long a;
+int b, c, d, e, f, g;
+short h, i, j;
+static int k = 3;
+static int l = 6;
+int m[5][7];
+signed char n;
+int *const o = &c;
+
+signed char(p)(signed char p1, signed char q) {
+ return p1 / q;
+}
+
+void s(unsigned p1) {
+ b = (b ^ p1) & 255;
+}
+
+static long t() {
+ long u;
+ signed char v;
+ d = 1;
+ for (; d <= 4; d++) {
+ j = 0;
+ for (; j <= 4; j++) {
+ v = 0;
+ for (; v <= 4; v++) {
+ if (m[v][v])
+ continue;
+ c = 0;
+ for (; c <= 4; c++) {
+ n = 0;
+ for (; n <= 4; n++) {
+ int *w = &e;
+ long r = v;
+ u = r == 0 ? a : a % r;
+ h |= u;
+ *w = g;
+ --m[n][c];
+ f &= *o;
+ }
+ }
+ if (p((i < 3) ^ 9, k))
+ ;
+ else if (v)
+ return 0;
+ }
+ }
+ }
+ return 1;
+}
+
+static char x() {
+ for (;;) {
+ t();
+ if (l)
+ return 0;
+ }
+}
+
+int main() {
+ x();
+ s(e & 255);
+ if (b == 0)
+ return 0;
+ else
+ return 1;
+}
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/xtheadvector.c b/gcc/testsuite/gcc.target/riscv/rvv/xtheadvector.c
new file mode 100644
index 0000000..8ad3701
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/xtheadvector.c
@@ -0,0 +1,13 @@
+/* { dg-do compile } */
+/* { dg-options "-march=rv32gc_xtheadvector" { target { rv32 } } } */
+/* { dg-options "-march=rv64gc_xtheadvector" { target { rv64 } } } */
+
+#ifndef __riscv_xtheadvector
+#error "Feature macro not defined"
+#endif
+
+int
+foo (int a)
+{
+ return a;
+}
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/prefix.c b/gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/prefix.c
new file mode 100644
index 0000000..eee727e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/prefix.c
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-options "-march=rv32gc_xtheadvector -mabi=ilp32 -O0" } */
+
+#include "riscv_vector.h"
+
+vint32m1_t
+prefix (vint32m1_t vx, vint32m1_t vy, size_t vl)
+{
+ return __riscv_vadd_vv_i32m1 (vx, vy, vl);
+}
+
+/* { dg-final { scan-assembler {\mth\.v\M} } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/vlb-vsb.c b/gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/vlb-vsb.c
new file mode 100644
index 0000000..3c12c12
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/vlb-vsb.c
@@ -0,0 +1,68 @@
+/* { dg-do compile } */
+/* { dg-options "-march=rv32gcxtheadvector -mabi=ilp32d -O3" } */
+/* { dg-final { check-function-bodies "**" "" } } */
+#include "riscv_th_vector.h"
+
+/*
+** f1:
+** th.vsetivli\tzero,4,e32,m1,tu,ma
+** th.vlb\.v\tv[0-9]+,0\([a-x0-9]+\)
+** th.vlb\.v\tv[0-9]+,0\([a-x0-9]+\)
+** th.vadd\.vv\tv[0-9]+,\s*v[0-9]+,\s*v[0-9]+
+** th.vadd\.vv\tv[0-9]+,\s*v[0-9]+,\s*v[0-9]+
+** th.vsb\.v\tv[0-9]+,0\([a-x0-9]+\)
+** ret
+*/
+void f1 (void * in, void *out)
+{
+ vint32m1_t v = __riscv_th_vlb_v_i32m1 (in, 4);
+ vint32m1_t v2 = __riscv_th_vlb_v_i32m1_tu (v, in, 4);
+ vint32m1_t v3 = __riscv_vadd_vv_i32m1 (v2, v2, 4);
+ vint32m1_t v4 = __riscv_vadd_vv_i32m1_tu (v3, v2, v2, 4);
+ __riscv_th_vsb_v_i32m1 (out, v4, 4);
+}
+
+/*
+** f2:
+** th.vsetvli\t[a-x0-9]+,zero,e8,mf4,ta,ma
+** th.vlm.v\tv[0-9]+,0\([a-x0-9]+\)
+** th.vsetivli\tzero,4,e32,m1,ta,ma
+** th.vlb.v\tv[0-9]+,0\([a-x0-9]+\),v0.t
+** th.vadd\.vv\tv[0-9]+,\s*v[0-9]+,\s*v[0-9]+
+** th.vadd\.vv\tv[1-9][0-9]?,\s*v[0-9]+,\s*v[0-9]+,\s*v0.t
+** th.vsb.v\tv[0-9]+,0\([a-x0-9]+\)
+** ret
+*/
+void f2 (void * in, void *out)
+{
+ vbool32_t mask = *(vbool32_t*)in;
+ asm volatile ("":::"memory");
+ vint32m1_t v = __riscv_th_vlb_v_i32m1 (in, 4);
+ vint32m1_t v2 = __riscv_th_vlb_v_i32m1_m (mask, in, 4);
+ vint32m1_t v3 = __riscv_vadd_vv_i32m1 (v2, v2, 4);
+ vint32m1_t v4 = __riscv_vadd_vv_i32m1_m (mask, v3, v3, 4);
+ __riscv_th_vsb_v_i32m1 (out, v4, 4);
+}
+
+/*
+** f3:
+** th.vsetvli\t[a-x0-9]+,zero,e8,mf4,ta,ma
+** th.vlm.v\tv[0-9]+,0\([a-x0-9]+\)
+** th.vsetivli\tzero,4,e32,m1,tu,mu
+** th.vlb\.v\tv[0-9]+,0\([a-x0-9]+\)
+** th.vlb.v\tv[0-9]+,0\([a-x0-9]+\),v0.t
+** th.vadd\.vv\tv[0-9]+,\s*v[0-9]+,\s*v[0-9]+
+** th.vadd\.vv\tv[1-9][0-9]?,\s*v[0-9]+,\s*v[0-9]+,\s*v0.t
+** th.vsb.v\tv[0-9]+,0\([a-x0-9]+\)
+** ret
+*/
+void f3 (void * in, void *out)
+{
+ vbool32_t mask = *(vbool32_t*)in;
+ asm volatile ("":::"memory");
+ vint32m1_t v = __riscv_th_vlb_v_i32m1 (in, 4);
+ vint32m1_t v2 = __riscv_th_vlb_v_i32m1_tumu (mask, v, in, 4);
+ vint32m1_t v3 = __riscv_vadd_vv_i32m1 (v2, v2, 4);
+ vint32m1_t v4 = __riscv_vadd_vv_i32m1_tumu (mask, v3, v2, v2, 4);
+ __riscv_th_vsb_v_i32m1 (out, v4, 4);
+}
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/vlbu-vsb.c b/gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/vlbu-vsb.c
new file mode 100644
index 0000000..30bef36
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/vlbu-vsb.c
@@ -0,0 +1,68 @@
+/* { dg-do compile } */
+/* { dg-options "-march=rv32gcxtheadvector -mabi=ilp32d -O3" } */
+/* { dg-final { check-function-bodies "**" "" } } */
+#include "riscv_th_vector.h"
+
+/*
+** f1:
+** th.vsetivli\tzero,4,e32,m1,tu,ma
+** th.vlbu\.v\tv[0-9]+,0\([a-x0-9]+\)
+** th.vlbu\.v\tv[0-9]+,0\([a-x0-9]+\)
+** th.vadd\.vi\tv[0-9]+,\s*v[0-9]+,\s*-16
+** th.vadd\.vi\tv[0-9]+,\s*v[0-9]+,\s*-16
+** th.vsb\.v\tv[0-9]+,0\([a-x0-9]+\)
+** ret
+*/
+void f1 (void * in, void *out, uint32_t x)
+{
+ vuint32m1_t v = __riscv_th_vlbu_v_u32m1 (in, 4);
+ vuint32m1_t v2 = __riscv_th_vlbu_v_u32m1_tu (v, in, 4);
+ vuint32m1_t v3 = __riscv_vadd_vx_u32m1 (v2, -16, 4);
+ vuint32m1_t v4 = __riscv_vadd_vx_u32m1_tu (v3, v2, -16, 4);
+ __riscv_th_vsb_v_u32m1 (out, v4, 4);
+}
+
+/*
+** f2:
+** th.vsetvli\t[a-x0-9]+,zero,e8,mf4,ta,ma
+** th.vlm.v\tv[0-9]+,0\([a-x0-9]+\)
+** th.vsetivli\tzero,4,e32,m1,ta,ma
+** th.vlbu.v\tv[0-9]+,0\([a-x0-9]+\),v0.t
+** th.vadd\.vi\tv[0-9]+,\s*v[0-9]+,\s*-16
+** th.vadd\.vi\tv[1-9][0-9]?,\s*v[0-9]+,\s*-16,\s*v0.t
+** th.vsb.v\tv[0-9]+,0\([a-x0-9]+\)
+** ret
+*/
+void f2 (void * in, void *out, uint32_t x)
+{
+ vbool32_t mask = *(vbool32_t*)in;
+ asm volatile ("":::"memory");
+ vuint32m1_t v = __riscv_th_vlbu_v_u32m1 (in, 4);
+ vuint32m1_t v2 = __riscv_th_vlbu_v_u32m1_m (mask, in, 4);
+ vuint32m1_t v3 = __riscv_vadd_vx_u32m1 (v2, -16, 4);
+ vuint32m1_t v4 = __riscv_vadd_vx_u32m1_m (mask, v3, -16, 4);
+ __riscv_th_vsb_v_u32m1 (out, v4, 4);
+}
+
+/*
+** f3:
+** th.vsetvli\t[a-x0-9]+,zero,e8,mf4,ta,ma
+** th.vlm.v\tv[0-9]+,0\([a-x0-9]+\)
+** th.vsetivli\tzero,4,e32,m1,tu,mu
+** th.vlbu\.v\tv[0-9]+,0\([a-x0-9]+\)
+** th.vlbu.v\tv[0-9]+,0\([a-x0-9]+\),v0.t
+** th.vadd\.vi\tv[0-9]+,\s*v[0-9]+,\s*-16
+** th.vadd\.vi\tv[1-9][0-9]?,\s*v[0-9]+,\s*-16,\s*v0.t
+** th.vsb.v\tv[0-9]+,0\([a-x0-9]+\)
+** ret
+*/
+void f3 (void * in, void *out, uint32_t x)
+{
+ vbool32_t mask = *(vbool32_t*)in;
+ asm volatile ("":::"memory");
+ vuint32m1_t v = __riscv_th_vlbu_v_u32m1 (in, 4);
+ vuint32m1_t v2 = __riscv_th_vlbu_v_u32m1_tumu (mask, v, in, 4);
+ vuint32m1_t v3 = __riscv_vadd_vx_u32m1 (v2, -16, 4);
+ vuint32m1_t v4 = __riscv_vadd_vx_u32m1_tumu (mask, v3, v2, -16, 4);
+ __riscv_th_vsb_v_u32m1 (out, v4, 4);
+}
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/vlh-vsh.c b/gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/vlh-vsh.c
new file mode 100644
index 0000000..3c8b5cc
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/vlh-vsh.c
@@ -0,0 +1,68 @@
+/* { dg-do compile } */
+/* { dg-options "-march=rv32gcxtheadvector -mabi=ilp32d -O3" } */
+/* { dg-final { check-function-bodies "**" "" } } */
+#include "riscv_th_vector.h"
+
+/*
+** f1:
+** th.vsetivli\tzero,4,e32,m1,tu,ma
+** th.vlh\.v\tv[0-9]+,0\([a-x0-9]+\)
+** th.vlh\.v\tv[0-9]+,0\([a-x0-9]+\)
+** th.vadd\.vi\tv[0-9]+,\s*v[0-9]+,\s*-16
+** th.vadd\.vi\tv[0-9]+,\s*v[0-9]+,\s*-16
+** th.vsh\.v\tv[0-9]+,0\([a-x0-9]+\)
+** ret
+*/
+void f1 (void * in, void *out, int32_t x)
+{
+ vint32m1_t v = __riscv_th_vlh_v_i32m1 (in, 4);
+ vint32m1_t v2 = __riscv_th_vlh_v_i32m1_tu (v, in, 4);
+ vint32m1_t v3 = __riscv_vadd_vx_i32m1 (v2, -16, 4);
+ vint32m1_t v4 = __riscv_vadd_vx_i32m1_tu (v3, v2, -16, 4);
+ __riscv_th_vsh_v_i32m1 (out, v4, 4);
+}
+
+/*
+** f2:
+** th.vsetvli\t[a-x0-9]+,zero,e8,mf4,ta,ma
+** th.vlm.v\tv[0-9]+,0\([a-x0-9]+\)
+** th.vsetivli\tzero,4,e32,m1,ta,ma
+** th.vlh.v\tv[0-9]+,0\([a-x0-9]+\),v0.t
+** th.vadd\.vi\tv[0-9]+,\s*v[0-9]+,\s*-16
+** th.vadd\.vi\tv[1-9][0-9]?,\s*v[0-9]+,\s*-16,\s*v0.t
+** th.vsh.v\tv[0-9]+,0\([a-x0-9]+\)
+** ret
+*/
+void f2 (void * in, void *out, int32_t x)
+{
+ vbool32_t mask = *(vbool32_t*)in;
+ asm volatile ("":::"memory");
+ vint32m1_t v = __riscv_th_vlh_v_i32m1 (in, 4);
+ vint32m1_t v2 = __riscv_th_vlh_v_i32m1_m (mask, in, 4);
+ vint32m1_t v3 = __riscv_vadd_vx_i32m1 (v2, -16, 4);
+ vint32m1_t v4 = __riscv_vadd_vx_i32m1_m (mask, v3, -16, 4);
+ __riscv_th_vsh_v_i32m1 (out, v4, 4);
+}
+
+/*
+** f3:
+** th.vsetvli\t[a-x0-9]+,zero,e8,mf4,ta,ma
+** th.vlm.v\tv[0-9]+,0\([a-x0-9]+\)
+** th.vsetivli\tzero,4,e32,m1,tu,mu
+** th.vlh\.v\tv[0-9]+,0\([a-x0-9]+\)
+** th.vlh.v\tv[0-9]+,0\([a-x0-9]+\),v0.t
+** th.vadd\.vi\tv[0-9]+,\s*v[0-9]+,\s*-16
+** th.vadd\.vi\tv[1-9][0-9]?,\s*v[0-9]+,\s*-16,\s*v0.t
+** th.vsh.v\tv[0-9]+,0\([a-x0-9]+\)
+** ret
+*/
+void f3 (void * in, void *out, int32_t x)
+{
+ vbool32_t mask = *(vbool32_t*)in;
+ asm volatile ("":::"memory");
+ vint32m1_t v = __riscv_th_vlh_v_i32m1 (in, 4);
+ vint32m1_t v2 = __riscv_th_vlh_v_i32m1_tumu (mask, v, in, 4);
+ vint32m1_t v3 = __riscv_vadd_vx_i32m1 (v2, -16, 4);
+ vint32m1_t v4 = __riscv_vadd_vx_i32m1_tumu (mask, v3, v2, -16, 4);
+ __riscv_th_vsh_v_i32m1 (out, v4, 4);
+}
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/vlhu-vsh.c b/gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/vlhu-vsh.c
new file mode 100644
index 0000000..b7c0040
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/vlhu-vsh.c
@@ -0,0 +1,68 @@
+/* { dg-do compile } */
+/* { dg-options "-march=rv32gcxtheadvector -mabi=ilp32d -O3" } */
+/* { dg-final { check-function-bodies "**" "" } } */
+#include "riscv_th_vector.h"
+
+/*
+** f1:
+** th.vsetivli\tzero,4,e32,m1,tu,ma
+** th.vlhu\.v\tv[0-9]+,0\([a-x0-9]+\)
+** th.vlhu\.v\tv[0-9]+,0\([a-x0-9]+\)
+** th.vadd\.vi\tv[0-9]+,\s*v[0-9]+,\s*-16
+** th.vadd\.vi\tv[0-9]+,\s*v[0-9]+,\s*-16
+** th.vsh\.v\tv[0-9]+,0\([a-x0-9]+\)
+** ret
+*/
+void f1 (void * in, void *out, uint32_t x)
+{
+ vuint32m1_t v = __riscv_th_vlhu_v_u32m1 (in, 4);
+ vuint32m1_t v2 = __riscv_th_vlhu_v_u32m1_tu (v, in, 4);
+ vuint32m1_t v3 = __riscv_vadd_vx_u32m1 (v2, -16, 4);
+ vuint32m1_t v4 = __riscv_vadd_vx_u32m1_tu (v3, v2, -16, 4);
+ __riscv_th_vsh_v_u32m1 (out, v4, 4);
+}
+
+/*
+** f2:
+** th.vsetvli\t[a-x0-9]+,zero,e8,mf4,ta,ma
+** th.vlm.v\tv[0-9]+,0\([a-x0-9]+\)
+** th.vsetivli\tzero,4,e32,m1,ta,ma
+** th.vlhu.v\tv[0-9]+,0\([a-x0-9]+\),v0.t
+** th.vadd\.vi\tv[0-9]+,\s*v[0-9]+,\s*-16
+** th.vadd\.vi\tv[1-9][0-9]?,\s*v[0-9]+,\s*-16,\s*v0.t
+** th.vsh.v\tv[0-9]+,0\([a-x0-9]+\)
+** ret
+*/
+void f2 (void * in, void *out, uint32_t x)
+{
+ vbool32_t mask = *(vbool32_t*)in;
+ asm volatile ("":::"memory");
+ vuint32m1_t v = __riscv_th_vlhu_v_u32m1 (in, 4);
+ vuint32m1_t v2 = __riscv_th_vlhu_v_u32m1_m (mask, in, 4);
+ vuint32m1_t v3 = __riscv_vadd_vx_u32m1 (v2, -16, 4);
+ vuint32m1_t v4 = __riscv_vadd_vx_u32m1_m (mask, v3, -16, 4);
+ __riscv_th_vsh_v_u32m1 (out, v4, 4);
+}
+
+/*
+** f3:
+** th.vsetvli\t[a-x0-9]+,zero,e8,mf4,ta,ma
+** th.vlm.v\tv[0-9]+,0\([a-x0-9]+\)
+** th.vsetivli\tzero,4,e32,m1,tu,mu
+** th.vlhu\.v\tv[0-9]+,0\([a-x0-9]+\)
+** th.vlhu.v\tv[0-9]+,0\([a-x0-9]+\),v0.t
+** th.vadd\.vi\tv[0-9]+,\s*v[0-9]+,\s*-16
+** th.vadd\.vi\tv[1-9][0-9]?,\s*v[0-9]+,\s*-16,\s*v0.t
+** th.vsh.v\tv[0-9]+,0\([a-x0-9]+\)
+** ret
+*/
+void f3 (void * in, void *out, uint32_t x)
+{
+ vbool32_t mask = *(vbool32_t*)in;
+ asm volatile ("":::"memory");
+ vuint32m1_t v = __riscv_th_vlhu_v_u32m1 (in, 4);
+ vuint32m1_t v2 = __riscv_th_vlhu_v_u32m1_tumu (mask, v, in, 4);
+ vuint32m1_t v3 = __riscv_vadd_vx_u32m1 (v2, -16, 4);
+ vuint32m1_t v4 = __riscv_vadd_vx_u32m1_tumu (mask, v3, v2, -16, 4);
+ __riscv_th_vsh_v_u32m1 (out, v4, 4);
+}
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/vlw-vsw.c b/gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/vlw-vsw.c
new file mode 100644
index 0000000..17a5301
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/vlw-vsw.c
@@ -0,0 +1,68 @@
+/* { dg-do compile } */
+/* { dg-options "-march=rv32gcxtheadvector -mabi=ilp32d -O3" } */
+/* { dg-final { check-function-bodies "**" "" } } */
+#include "riscv_th_vector.h"
+
+/*
+** f1:
+** th.vsetivli\tzero,4,e32,m1,tu,ma
+** th.vlw\.v\tv[0-9]+,0\([a-x0-9]+\)
+** th.vlw\.v\tv[0-9]+,0\([a-x0-9]+\)
+** th.vadd\.vx\tv[0-9]+,\s*v[0-9]+,\s*[a-x0-9]+
+** th.vadd\.vx\tv[0-9]+,\s*v[0-9]+,\s*[a-x0-9]+
+** th.vsw\.v\tv[0-9]+,0\([a-x0-9]+\)
+** ret
+*/
+void f1 (void * in, void *out, int32_t x)
+{
+ vint32m1_t v = __riscv_th_vlw_v_i32m1 (in, 4);
+ vint32m1_t v2 = __riscv_th_vlw_v_i32m1_tu (v, in, 4);
+ vint32m1_t v3 = __riscv_vadd_vx_i32m1 (v2, x, 4);
+ vint32m1_t v4 = __riscv_vadd_vx_i32m1_tu (v3, v2, x, 4);
+ __riscv_th_vsw_v_i32m1 (out, v4, 4);
+}
+
+/*
+** f2:
+** th.vsetvli\t[a-x0-9]+,zero,e8,mf4,ta,ma
+** th.vlm.v\tv[0-9]+,0\([a-x0-9]+\)
+** th.vsetivli\tzero,4,e32,m1,ta,ma
+** th.vlw.v\tv[0-9]+,0\([a-x0-9]+\),v0.t
+** th.vadd\.vx\tv[0-9]+,\s*v[0-9]+,\s*[a-x0-9]+
+** th.vadd\.vx\tv[1-9][0-9]?,\s*v[0-9]+,\s*[a-x0-9]+,\s*v0.t
+** th.vsw.v\tv[0-9]+,0\([a-x0-9]+\)
+** ret
+*/
+void f2 (void * in, void *out, int32_t x)
+{
+ vbool32_t mask = *(vbool32_t*)in;
+ asm volatile ("":::"memory");
+ vint32m1_t v = __riscv_th_vlw_v_i32m1 (in, 4);
+ vint32m1_t v2 = __riscv_th_vlw_v_i32m1_m (mask, in, 4);
+ vint32m1_t v3 = __riscv_vadd_vx_i32m1 (v2, x, 4);
+ vint32m1_t v4 = __riscv_vadd_vx_i32m1_m (mask, v3, x, 4);
+ __riscv_th_vsw_v_i32m1 (out, v4, 4);
+}
+
+/*
+** f3:
+** th.vsetvli\t[a-x0-9]+,zero,e8,mf4,ta,ma
+** th.vlm.v\tv[0-9]+,0\([a-x0-9]+\)
+** th.vsetivli\tzero,4,e32,m1,tu,mu
+** th.vlw\.v\tv[0-9]+,0\([a-x0-9]+\)
+** th.vlw.v\tv[0-9]+,0\([a-x0-9]+\),v0.t
+** th.vadd\.vx\tv[0-9]+,\s*v[0-9]+,\s*[a-x0-9]+
+** th.vadd\.vx\tv[1-9][0-9]?,\s*v[0-9]+,\s*[a-x0-9]+,\s*v0.t
+** th.vsw.v\tv[0-9]+,0\([a-x0-9]+\)
+** ret
+*/
+void f3 (void * in, void *out, int32_t x)
+{
+ vbool32_t mask = *(vbool32_t*)in;
+ asm volatile ("":::"memory");
+ vint32m1_t v = __riscv_th_vlw_v_i32m1 (in, 4);
+ vint32m1_t v2 = __riscv_th_vlw_v_i32m1_tumu (mask, v, in, 4);
+ vint32m1_t v3 = __riscv_vadd_vx_i32m1 (v2, x, 4);
+ vint32m1_t v4 = __riscv_vadd_vx_i32m1_tumu (mask, v3, v2, x, 4);
+ __riscv_th_vsw_v_i32m1 (out, v4, 4);
+}
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/vlwu-vsw.c b/gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/vlwu-vsw.c
new file mode 100644
index 0000000..b187cfc
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/vlwu-vsw.c
@@ -0,0 +1,68 @@
+/* { dg-do compile } */
+/* { dg-options "-march=rv32gcxtheadvector -mabi=ilp32d -O3" } */
+/* { dg-final { check-function-bodies "**" "" } } */
+#include "riscv_th_vector.h"
+
+/*
+** f1:
+** th.vsetivli\tzero,4,e32,m1,tu,ma
+** th.vlwu\.v\tv[0-9]+,0\([a-x0-9]+\)
+** th.vlwu\.v\tv[0-9]+,0\([a-x0-9]+\)
+** th.vadd\.vi\tv[0-9]+,\s*v[0-9]+,\s*-16
+** th.vadd\.vi\tv[0-9]+,\s*v[0-9]+,\s*-16
+** th.vsw\.v\tv[0-9]+,0\([a-x0-9]+\)
+** ret
+*/
+void f1 (void * in, void *out, uint32_t x)
+{
+ vuint32m1_t v = __riscv_th_vlwu_v_u32m1 (in, 4);
+ vuint32m1_t v2 = __riscv_th_vlwu_v_u32m1_tu (v, in, 4);
+ vuint32m1_t v3 = __riscv_vadd_vx_u32m1 (v2, -16, 4);
+ vuint32m1_t v4 = __riscv_vadd_vx_u32m1_tu (v3, v2, -16, 4);
+ __riscv_th_vsw_v_u32m1 (out, v4, 4);
+}
+
+/*
+** f2:
+** th.vsetvli\t[a-x0-9]+,zero,e8,mf4,ta,ma
+** th.vlm.v\tv[0-9]+,0\([a-x0-9]+\)
+** th.vsetivli\tzero,4,e32,m1,ta,ma
+** th.vlwu.v\tv[0-9]+,0\([a-x0-9]+\),v0.t
+** th.vadd\.vi\tv[0-9]+,\s*v[0-9]+,\s*-16
+** th.vadd\.vi\tv[1-9][0-9]?,\s*v[0-9]+,\s*-16,\s*v0.t
+** th.vsw.v\tv[0-9]+,0\([a-x0-9]+\)
+** ret
+*/
+void f2 (void * in, void *out, uint32_t x)
+{
+ vbool32_t mask = *(vbool32_t*)in;
+ asm volatile ("":::"memory");
+ vuint32m1_t v = __riscv_th_vlwu_v_u32m1 (in, 4);
+ vuint32m1_t v2 = __riscv_th_vlwu_v_u32m1_m (mask, in, 4);
+ vuint32m1_t v3 = __riscv_vadd_vx_u32m1 (v2, -16, 4);
+ vuint32m1_t v4 = __riscv_vadd_vx_u32m1_m (mask, v3, -16, 4);
+ __riscv_th_vsw_v_u32m1 (out, v4, 4);
+}
+
+/*
+** f3:
+** th.vsetvli\t[a-x0-9]+,zero,e8,mf4,ta,ma
+** th.vlm.v\tv[0-9]+,0\([a-x0-9]+\)
+** th.vsetivli\tzero,4,e32,m1,tu,mu
+** th.vlwu\.v\tv[0-9]+,0\([a-x0-9]+\)
+** th.vlwu.v\tv[0-9]+,0\([a-x0-9]+\),v0.t
+** th.vadd\.vi\tv[0-9]+,\s*v[0-9]+,\s*-16
+** th.vadd\.vi\tv[1-9][0-9]?,\s*v[0-9]+,\s*-16,\s*v0.t
+** th.vsw.v\tv[0-9]+,0\([a-x0-9]+\)
+** ret
+*/
+void f3 (void * in, void *out, uint32_t x)
+{
+ vbool32_t mask = *(vbool32_t*)in;
+ asm volatile ("":::"memory");
+ vuint32m1_t v = __riscv_th_vlwu_v_u32m1 (in, 4);
+ vuint32m1_t v2 = __riscv_th_vlwu_v_u32m1_tumu (mask, v, in, 4);
+ vuint32m1_t v3 = __riscv_vadd_vx_u32m1 (v2, -16, 4);
+ vuint32m1_t v4 = __riscv_vadd_vx_u32m1_tumu (mask, v3, v2, -16, 4);
+ __riscv_th_vsw_v_u32m1 (out, v4, 4);
+}
diff --git a/gcc/testsuite/gcc.target/riscv/sfb.c b/gcc/testsuite/gcc.target/riscv/sfb.c
new file mode 100644
index 0000000..22f1640
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/sfb.c
@@ -0,0 +1,24 @@
+//* { dg-do compile } */
+/* { dg-options "-O2 -march=rv32gc -mabi=ilp32d -mtune=sifive-7-series" } */
+
+int f1(unsigned int x, unsigned int y, unsigned int z)
+{
+ return ((x & 1) == 0) ? y : z ^ y;
+}
+
+int f2(unsigned int x, unsigned int y, unsigned int z)
+{
+ return ((x & 1) != 0) ? z ^ y : y;
+}
+
+int f3(unsigned int x, unsigned int y, unsigned int z)
+{
+ return ((x & 1) == 0) ? y : z | y;
+}
+
+int f4(unsigned int x, unsigned int y, unsigned int z)
+{
+ return ((x & 1) != 0) ? z | y : y;
+}
+/* { dg-final { scan-assembler-times "bne" 4 } } */
+/* { dg-final { scan-assembler-times "movcc" 4 } } */
diff --git a/gcc/testsuite/gcc.target/sh/pr59533-1.c b/gcc/testsuite/gcc.target/sh/pr59533-1.c
index b046985..859b8e2 100644
--- a/gcc/testsuite/gcc.target/sh/pr59533-1.c
+++ b/gcc/testsuite/gcc.target/sh/pr59533-1.c
@@ -2,15 +2,15 @@
/* { dg-do compile } */
/* { dg-options "-O1" } */
-/* { dg-final { scan-assembler-times "shll" 1 } } */
+/* { dg-final { scan-assembler-times "shll" 3 } } */
/* { dg-final { scan-assembler-times "movt" 5 } } */
/* { dg-final { scan-assembler-times "rotcl" 1 } } */
/* { dg-final { scan-assembler-times "and" 3 } } */
/* { dg-final { scan-assembler-times "extu.b" 5 } } */
-/* { dg-final { scan-assembler-times "cmp/pz" 27 { target { ! sh2a } } } } */
-/* { dg-final { scan-assembler-times "addc" 4 { target { ! sh2a } } } } */
-/* { dg-final { scan-assembler-times "subc" 16 { target { ! sh2a } } } } */
+/* { dg-final { scan-assembler-times "cmp/pz" 25 { target { ! sh2a } } } } */
+/* { dg-final { scan-assembler-times "addc" 6 { target { ! sh2a } } } } */
+/* { dg-final { scan-assembler-times "subc" 14 { target { ! sh2a } } } } */
/* { dg-final { scan-assembler-times "cmp/pz" 25 { target { sh2a } } } } */
/* { dg-final { scan-assembler-times "addc" 6 { target { sh2a } } } } */
diff --git a/gcc/testsuite/gfortran.dg/bounds_check_24.f90 b/gcc/testsuite/gfortran.dg/bounds_check_24.f90
new file mode 100644
index 0000000..d0251e8
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/bounds_check_24.f90
@@ -0,0 +1,28 @@
+! { dg-do compile }
+! { dg-additional-options "-fcheck=bounds -fdump-tree-original" }
+!
+! PR fortran/113471 - wrong array bounds check
+
+program pr113471
+ implicit none
+ type t
+ integer, dimension(2) :: c1 = 0
+ end type t
+ type(t) :: cc(7), bb(7)
+ integer :: kk = 1
+
+ ! no bounds check (can be determined at compile time):
+ call foo (cc(7)% c1)
+
+ ! bounds check involving kk, but no "outside of expected range"
+ call foo (bb(kk)% c1)
+
+contains
+ subroutine foo (c)
+ integer, intent(in) :: c(:)
+ end
+end
+
+! { dg-final { scan-tree-dump-times "below lower bound" 2 "original" } }
+! { dg-final { scan-tree-dump-times "above upper bound" 2 "original" } }
+! { dg-final { scan-tree-dump-not "outside of expected range" "original" } }
diff --git a/gcc/testsuite/gfortran.dg/graphite/vect-pr40979.f90 b/gcc/testsuite/gfortran.dg/graphite/vect-pr40979.f90
index a422909..6f2ad11 100644
--- a/gcc/testsuite/gfortran.dg/graphite/vect-pr40979.f90
+++ b/gcc/testsuite/gfortran.dg/graphite/vect-pr40979.f90
@@ -1,6 +1,7 @@
! { dg-do compile }
! { dg-require-effective-target vect_double }
! { dg-additional-options "-msse2" { target { { i?86-*-* x86_64-*-* } && ilp32 } } }
+! { dg-additional-options "-mlsx" { target { loongarch*-*-* } } }
module mqc_m
integer, parameter, private :: longreal = selected_real_kind(15,90)
diff --git a/gcc/testsuite/gfortran.dg/optional_absent_10.f90 b/gcc/testsuite/gfortran.dg/optional_absent_10.f90
new file mode 100644
index 0000000..acdabbd
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/optional_absent_10.f90
@@ -0,0 +1,219 @@
+! { dg-do run }
+! PR fortran/113377
+!
+! Test passing of missing optional arguments of intrinsic type
+! to scalar dummies of elemental subroutines
+
+module m_char
+ implicit none
+contains
+ subroutine test_char ()
+ character :: k(7) = "#"
+ character(4) :: c(7) = "*"
+ call one (k)
+ call one_val (k)
+ call one_ij (k)
+ call one_jj (k)
+ call one_j4 (k)
+ call three (c)
+ call three_val (c)
+ call three_ij (c)
+ call three_jj (c)
+ call three_j4 (c)
+ end subroutine test_char
+
+ subroutine one (i, j)
+ character, intent(in) :: i(7)
+ character, intent(in), optional :: j
+ character, allocatable :: aa
+ character, pointer :: pp => NULL()
+ if (present (j)) stop 1
+ call two (i, j)
+ call two_val (i, j)
+ call two (i, aa)
+ call two (i, pp)
+ call two_val (i, aa)
+ call two_val (i, pp)
+ end
+
+ subroutine one_val (i, j)
+ character, intent(in) :: i(7)
+ character, value, optional :: j
+ if (present (j)) stop 2
+ call two (i, j)
+ call two_val (i, j)
+ end
+
+ subroutine one_ij (i, j)
+ character, intent(in) :: i(7)
+ character, intent(in), optional :: j(7)
+ if (present (j)) stop 3
+ call two (i, j)
+ call two_val (i, j)
+ end
+
+ subroutine one_jj (i, j)
+ character, intent(in) :: i(7)
+ character, intent(in), optional :: j(:)
+ if (present (j)) stop 4
+ call two (i, j)
+ call two_val (i, j)
+ end
+
+ subroutine one_j4 (i, j)
+ character, intent(in) :: i(:)
+ character, intent(in), optional :: j(7)
+ if (present (j)) stop 5
+ call two (i, j)
+ call two_val (i, j)
+ end
+
+ elemental subroutine two (i, j)
+ character, intent(in) :: i
+ character, intent(in), optional :: j
+ if (present (j)) error stop 11
+ end
+
+ elemental subroutine two_val (i, j)
+ character, intent(in) :: i
+ character, value, optional :: j
+ if (present (j)) error stop 12
+ end
+
+ subroutine three (i, j)
+ character(4), intent(in) :: i(7)
+ character(4), intent(in), optional :: j
+ character(4), allocatable :: aa
+ character(4), pointer :: pp => NULL()
+ if (present (j)) stop 6
+ call four (i, j)
+ call four_val (i, j)
+ call four (i, aa)
+ call four (i, pp)
+ call four_val (i, aa)
+ call four_val (i, pp)
+ end
+
+ subroutine three_val (i, j)
+ character(4), intent(in) :: i(7)
+ character(4), value, optional :: j
+ if (present (j)) stop 7
+ call four (i, j)
+ call four_val (i, j)
+ end
+
+ subroutine three_ij (i, j)
+ character(4), intent(in) :: i(7)
+ character(4), intent(in), optional :: j(7)
+ if (present (j)) stop 8
+ call four (i, j)
+ call four_val (i, j)
+ end
+
+ subroutine three_jj (i, j)
+ character(4), intent(in) :: i(7)
+ character(4), intent(in), optional :: j(:)
+ if (present (j)) stop 9
+ call four (i, j)
+ call four_val (i, j)
+ end
+
+ subroutine three_j4 (i, j)
+ character(4), intent(in) :: i(:)
+ character(4), intent(in), optional :: j(7)
+ if (present (j)) stop 10
+ call four (i, j)
+ call four_val (i, j)
+ end
+
+ elemental subroutine four (i, j)
+ character(4), intent(in) :: i
+ character(4), intent(in), optional :: j
+ if (present (j)) error stop 13
+ end
+
+ elemental subroutine four_val (i, j)
+ character(4), intent(in) :: i
+ character(4), value, optional :: j
+ if (present (j)) error stop 14
+ end
+end
+
+module m_int
+ implicit none
+contains
+ subroutine test_int ()
+ integer :: k(4) = 1
+ call one (k)
+ call one_val (k)
+ call one_ij (k)
+ call one_jj (k)
+ call one_j4 (k)
+ end
+
+ subroutine one (i, j)
+ integer, intent(in) :: i(4)
+ integer, intent(in), optional :: j
+ integer, allocatable :: aa
+ integer, pointer :: pp => NULL()
+ if (present (j)) stop 21
+ call two (i, j)
+ call two_val (i, j)
+ call two (i, aa)
+ call two (i, pp)
+ call two_val (i, aa)
+ call two_val (i, pp)
+ end
+
+ subroutine one_val (i, j)
+ integer, intent(in) :: i(4)
+ integer, value, optional :: j
+ if (present (j)) stop 22
+ call two (i, j)
+ call two_val (i, j)
+ end
+
+ subroutine one_ij (i, j)
+ integer, intent(in) :: i(4)
+ integer, intent(in), optional :: j(4)
+ if (present (j)) stop 23
+ call two (i, j)
+ call two_val (i, j)
+ end
+
+ subroutine one_jj (i, j)
+ integer, intent(in) :: i(4)
+ integer, intent(in), optional :: j(:)
+ if (present (j)) stop 24
+ call two (i, j)
+ call two_val (i, j)
+ end
+
+ subroutine one_j4 (i, j)
+ integer, intent(in) :: i(:)
+ integer, intent(in), optional :: j(4)
+ if (present (j)) stop 25
+ call two (i, j)
+ call two_val (i, j)
+ end
+
+ elemental subroutine two (i, j)
+ integer, intent(in) :: i
+ integer, intent(in), optional :: j
+ if (present (j)) error stop 31
+ end
+
+ elemental subroutine two_val (i, j)
+ integer, intent(in) :: i
+ integer, value, optional :: j
+ if (present (j)) error stop 32
+ end
+end
+
+program p
+ use m_int
+ use m_char
+ implicit none
+ call test_int ()
+ call test_char ()
+end
diff --git a/gcc/testsuite/gfortran.dg/optional_absent_11.f90 b/gcc/testsuite/gfortran.dg/optional_absent_11.f90
new file mode 100644
index 0000000..1f63def
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/optional_absent_11.f90
@@ -0,0 +1,99 @@
+! { dg-do run }
+! PR fortran/113377
+!
+! Test that a NULL actual argument to an optional dummy is not present
+! (see also F2018:15.5.2.12 on argument presence)
+
+program test_null_actual_is_absent
+ implicit none
+ integer :: k(4) = 1
+ character :: c(4) = "#"
+ call one (k)
+ call three (c)
+contains
+ subroutine one (i)
+ integer, intent(in) :: i(4)
+ integer :: kk = 2
+ integer, allocatable :: aa
+ integer, pointer :: pp => NULL()
+ print *, "Scalar integer"
+ call two (kk, aa)
+ call two (kk, pp)
+ call two (kk, NULL())
+ call two (kk, NULL(aa))
+ call two (kk, NULL(pp))
+ print *, "Elemental integer"
+ call two (i, aa)
+ call two (i, pp)
+ call two (i, NULL())
+ call two (i, NULL(aa))
+ call two (i, NULL(pp))
+ print *, "Scalar integer; value"
+ call two_val (kk, aa)
+ call two_val (kk, pp)
+ call two_val (kk, NULL())
+ call two_val (kk, NULL(aa))
+ call two_val (kk, NULL(pp))
+ print *, "Elemental integer; value"
+ call two_val (i, aa)
+ call two_val (i, pp)
+ call two_val (i, NULL())
+ call two_val (i, NULL(aa))
+ call two_val (i, NULL(pp))
+ end
+
+ elemental subroutine two (i, j)
+ integer, intent(in) :: i
+ integer, intent(in), optional :: j
+ if (present (j)) error stop 11
+ end
+
+ elemental subroutine two_val (i, j)
+ integer, intent(in) :: i
+ integer, value, optional :: j
+ if (present (j)) error stop 12
+ end
+
+ subroutine three (y)
+ character, intent(in) :: y(4)
+ character :: zz = "*"
+ character, allocatable :: aa
+ character, pointer :: pp => NULL()
+ print *, "Scalar character"
+ call four (zz, aa)
+ call four (zz, pp)
+ call four (zz, NULL())
+ call four (zz, NULL(aa))
+ call four (zz, NULL(pp))
+ print *, "Elemental character"
+ call four (y, aa)
+ call four (y, pp)
+ call four (y, NULL())
+ call four (y, NULL(aa))
+ call four (y, NULL(pp))
+ print *, "Scalar character; value"
+ call four_val (zz, aa)
+ call four_val (zz, pp)
+ call four_val (zz, NULL())
+ call four_val (zz, NULL(aa))
+ call four_val (zz, NULL(pp))
+ print *, "Elemental character; value"
+ call four_val (y, aa)
+ call four_val (y, pp)
+ call four_val (y, NULL())
+ call four_val (y, NULL(aa))
+ call four_val (y, NULL(pp))
+ end
+
+ elemental subroutine four (i, j)
+ character, intent(in) :: i
+ character, intent(in), optional :: j
+ if (present (j)) error stop 21
+ end
+
+ elemental subroutine four_val (i, j)
+ character, intent(in) :: i
+ character, value, optional :: j
+ if (present (j)) error stop 22
+ end
+end
diff --git a/gcc/testsuite/gfortran.dg/optional_absent_9.f90 b/gcc/testsuite/gfortran.dg/optional_absent_9.f90
new file mode 100644
index 0000000..063dd21
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/optional_absent_9.f90
@@ -0,0 +1,340 @@
+! { dg-do run }
+! PR fortran/113377
+!
+! Test passing of missing optional scalar dummies of intrinsic type
+
+module m_int
+ implicit none
+contains
+ subroutine test_int ()
+ integer :: k = 1
+ call one (k)
+ call one_val (k)
+ call one_all (k)
+ call one_ptr (k)
+ end
+
+ subroutine one (i, j)
+ integer, intent(in) :: i
+ integer ,optional :: j
+ integer, allocatable :: aa
+ integer, pointer :: pp => NULL()
+ if (present (j)) error stop "j is present"
+ call two (i, j)
+ call two_val (i, j)
+ call two (i, aa)
+ call two (i, pp)
+ call two_val (i, aa)
+ call two_val (i, pp)
+ end
+
+ subroutine one_val (i, j)
+ integer, intent(in) :: i
+ integer, value, optional :: j
+ if (present (j)) error stop "j is present"
+ call two (i, j)
+ call two_val (i, j)
+ end
+
+ subroutine one_all (i, j)
+ integer, intent(in) :: i
+ integer, allocatable,optional :: j
+ if (present (j)) error stop "j is present"
+! call two (i, j) ! invalid per F2018:15.5.2.12, par. 3, clause 8
+! call two_val (i, j) ! dto.
+ call two_all (i, j)
+ end
+
+ subroutine one_ptr (i, j)
+ integer, intent(in) :: i
+ integer, pointer ,optional :: j
+ if (present (j)) error stop "j is present"
+! call two (i, j) ! invalid per F2018:15.5.2.12, par. 3, clause 7
+! call two_val (i, j) ! dto.
+ call two_ptr (i, j)
+ end
+
+ subroutine two (i, j)
+ integer, intent(in) :: i
+ integer, intent(in), optional :: j
+ if (present (j)) error stop 11
+ end
+
+ subroutine two_val (i, j)
+ integer, intent(in) :: i
+ integer, value, optional :: j
+ if (present (j)) error stop 12
+ end
+
+ subroutine two_all (i, j)
+ integer, intent(in) :: i
+ integer, allocatable,optional :: j
+ if (present (j)) error stop 13
+ end
+
+ subroutine two_ptr (i, j)
+ integer, intent(in) :: i
+ integer, pointer, optional :: j
+ if (present (j)) error stop 14
+ end
+end
+
+module m_char
+ implicit none
+contains
+ subroutine test_char ()
+ character :: k = "#"
+ call one (k)
+ call one_val (k)
+ call one_all (k)
+ call one_ptr (k)
+ end
+
+ subroutine one (i, j)
+ character, intent(in) :: i
+ character ,optional :: j
+ character, allocatable :: aa
+ character, pointer :: pp => NULL()
+ if (present (j)) error stop "j is present"
+ call two (i, j)
+ call two_val (i, j)
+ call two (i, aa)
+ call two (i, pp)
+ end
+
+ subroutine one_val (i, j)
+ character, intent(in) :: i
+ character, value, optional :: j
+ if (present (j)) error stop "j is present"
+ call two (i, j)
+ call two_val (i, j)
+ end
+
+ subroutine one_all (i, j)
+ character, intent(in) :: i
+ character, allocatable,optional :: j
+ if (present (j)) error stop "j is present"
+! call two (i, j) ! invalid per F2018:15.5.2.12, par. 3, clause 8
+! call two_val (i, j) ! dto.
+ call two_all (i, j)
+ end
+
+ subroutine one_ptr (i, j)
+ character, intent(in) :: i
+ character, pointer ,optional :: j
+ if (present (j)) error stop "j is present"
+! call two (i, j) ! invalid per F2018:15.5.2.12, par. 3, clause 7
+! call two_val (i, j) ! dto.
+ call two_ptr (i, j)
+ end
+
+ subroutine two (i, j)
+ character, intent(in) :: i
+ character, intent(in), optional :: j
+ if (present (j)) error stop 21
+ end
+
+ subroutine two_val (i, j)
+ character, intent(in) :: i
+ character, value, optional :: j
+ if (present (j)) error stop 22
+ end
+
+ subroutine two_all (i, j)
+ character, intent(in) :: i
+ character, allocatable,optional :: j
+ if (present (j)) error stop 23
+ end
+
+ subroutine two_ptr (i, j)
+ character, intent(in) :: i
+ character, pointer, optional :: j
+ if (present (j)) error stop 24
+ end
+end
+
+module m_char4
+ implicit none
+contains
+ subroutine test_char4 ()
+ character(kind=4) :: k = 4_"#"
+ call one (k)
+ call one_val (k)
+ call one_all (k)
+ call one_ptr (k)
+ end
+
+ subroutine one (i, j)
+ character(kind=4), intent(in) :: i
+ character(kind=4) ,optional :: j
+ character(kind=4), allocatable :: aa
+ character(kind=4), pointer :: pp => NULL()
+ if (present (j)) error stop "j is present"
+ call two (i, j)
+ call two_val (i, j)
+ call two (i, aa)
+ call two (i, pp)
+ end
+
+ subroutine one_val (i, j)
+ character(kind=4), intent(in) :: i
+ character(kind=4), value, optional :: j
+ if (present (j)) error stop "j is present"
+ call two (i, j)
+ call two_val (i, j)
+ end
+
+ subroutine one_all (i, j)
+ character(kind=4), intent(in) :: i
+ character(kind=4), allocatable,optional :: j
+ if (present (j)) error stop "j is present"
+! call two (i, j) ! invalid per F2018:15.5.2.12, par. 3, clause 8
+! call two_val (i, j) ! dto.
+ call two_all (i, j)
+ end
+
+ subroutine one_ptr (i, j)
+ character(kind=4), intent(in) :: i
+ character(kind=4), pointer ,optional :: j
+ if (present (j)) error stop "j is present"
+! call two (i, j) ! invalid per F2018:15.5.2.12, par. 3, clause 7
+! call two_val (i, j) ! dto.
+ call two_ptr (i, j)
+ end
+
+ subroutine two (i, j)
+ character(kind=4), intent(in) :: i
+ character(kind=4), intent(in), optional :: j
+ if (present (j)) error stop 31
+ end
+
+ subroutine two_val (i, j)
+ character(kind=4), intent(in) :: i
+ character(kind=4), value, optional :: j
+ if (present (j)) error stop 32
+ end
+
+ subroutine two_all (i, j)
+ character(kind=4), intent(in) :: i
+ character(kind=4), allocatable,optional :: j
+ if (present (j)) error stop 33
+ end
+
+ subroutine two_ptr (i, j)
+ character(kind=4), intent(in) :: i
+ character(kind=4), pointer, optional :: j
+ if (present (j)) error stop 34
+ end
+end
+
+module m_complex
+ implicit none
+contains
+ subroutine test_complex ()
+ complex :: k = 3.
+ call one (k)
+ call one_val (k)
+ call one_all (k)
+ call one_ptr (k)
+ end
+
+ subroutine one (i, j)
+ complex, intent(in) :: i
+ complex ,optional :: j
+ complex, allocatable :: aa
+ complex, pointer :: pp => NULL()
+ if (present (j)) error stop "j is present"
+ call two (i, j)
+ call two_val (i, j)
+ call two (i, aa)
+ call two (i, pp)
+ end
+
+ subroutine one_val (i, j)
+ complex, intent(in) :: i
+ complex, value, optional :: j
+ if (present (j)) error stop "j is present"
+ call two (i, j)
+ call two_val (i, j)
+ end
+
+ subroutine one_all (i, j)
+ complex, intent(in) :: i
+ complex, allocatable,optional :: j
+ if (present (j)) error stop "j is present"
+! call two (i, j) ! invalid per F2018:15.5.2.12, par. 3, clause 8
+! call two_val (i, j) ! dto.
+ call two_all (i, j)
+ end
+
+ subroutine one_ptr (i, j)
+ complex, intent(in) :: i
+ complex, pointer ,optional :: j
+ if (present (j)) error stop "j is present"
+! call two (i, j) ! invalid per F2018:15.5.2.12, par. 3, clause 7
+! call two_val (i, j) ! dto.
+ call two_ptr (i, j)
+ end
+
+ subroutine two (i, j)
+ complex, intent(in) :: i
+ complex, intent(in), optional :: j
+ if (present (j)) error stop 41
+ end
+
+ subroutine two_val (i, j)
+ complex, intent(in) :: i
+ complex, value, optional :: j
+ if (present (j)) error stop 42
+ end
+
+ subroutine two_all (i, j)
+ complex, intent(in) :: i
+ complex, allocatable,optional :: j
+ if (present (j)) error stop 43
+ end
+
+ subroutine two_ptr (i, j)
+ complex, intent(in) :: i
+ complex, pointer, optional :: j
+ if (present (j)) error stop 44
+ end
+end
+
+module m_mm
+ ! Test suggested by Mikael Morin
+ implicit none
+ type :: t
+ integer, allocatable :: c
+ integer, pointer :: p => NULL()
+ end type
+contains
+ subroutine test_mm ()
+ call s1 (t())
+ end
+
+ subroutine s1 (a)
+ type(t) :: a
+ call s2 (a% c)
+ call s2 (a% p)
+ end
+
+ subroutine s2 (a)
+ integer, value, optional :: a
+ if (present(a)) stop 1
+ end
+end
+
+program p
+ use m_int
+ use m_char
+ use m_char4
+ use m_complex
+ use m_mm
+ implicit none
+ call test_int ()
+ call test_char ()
+ call test_char4 ()
+ call test_complex ()
+ call test_mm ()
+end
diff --git a/gcc/testsuite/gfortran.dg/pr104908.f90 b/gcc/testsuite/gfortran.dg/pr104908.f90
new file mode 100644
index 0000000..c3a30b0
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr104908.f90
@@ -0,0 +1,32 @@
+! { dg-do compile }
+! { dg-additional-options "-fcheck=bounds -fdump-tree-original" }
+!
+! PR fortran/104908 - incorrect out-of-bounds runtime error
+
+program test
+ implicit none
+ type vec
+ integer :: x(3) = [2,4,6]
+ end type vec
+ type(vec) :: w(2)
+ call sub(w)
+contains
+ subroutine sub (v)
+ class(vec), intent(in) :: v(:)
+ integer :: k, q(3)
+ q = [ (v(1)%x(k), k = 1, 3) ] ! <-- was failing here after r11-1235
+ print *, q
+ end
+end
+
+subroutine sub2 (zz)
+ implicit none
+ type vec
+ integer :: x(2,1)
+ end type vec
+ class(vec), intent(in) :: zz(:) ! used to ICE after r11-1235
+ integer :: k
+ k = zz(1)%x(2,1)
+end
+
+! { dg-final { scan-tree-dump-times " above upper bound " 4 "original" } }
diff --git a/gcc/testsuite/gfortran.dg/vect/fast-math-mgrid-resid.f b/gcc/testsuite/gfortran.dg/vect/fast-math-mgrid-resid.f
index 08965cc..97b8882 100644
--- a/gcc/testsuite/gfortran.dg/vect/fast-math-mgrid-resid.f
+++ b/gcc/testsuite/gfortran.dg/vect/fast-math-mgrid-resid.f
@@ -2,6 +2,7 @@
! { dg-require-effective-target vect_double }
! { dg-options "-O3 --param vect-max-peeling-for-alignment=0 -fpredictive-commoning -fdump-tree-pcom-details -std=legacy" }
! { dg-additional-options "-mprefer-avx128" { target { i?86-*-* x86_64-*-* } } }
+! { dg-additional-options "-mlsx" { target { loongarch*-*-* } } }
! { dg-additional-options "-mzarch" { target { s390*-*-* } } }
******* RESID COMPUTES THE RESIDUAL: R = V - AU
diff --git a/gcc/testsuite/gm2/pim/fail/badpointer.mod b/gcc/testsuite/gm2/pim/fail/badpointer.mod
new file mode 100644
index 0000000..e8a199e
--- /dev/null
+++ b/gcc/testsuite/gm2/pim/fail/badpointer.mod
@@ -0,0 +1,22 @@
+MODULE badpointer ;
+
+FROM DynamicStrings IMPORT String ;
+
+CONST
+ Hello = "hello world" ;
+
+
+PROCEDURE testproc (s: String) ;
+BEGIN
+END testproc ;
+
+
+PROCEDURE foo ;
+BEGIN
+ testproc (Hello)
+END foo ;
+
+
+BEGIN
+ foo
+END badpointer.
diff --git a/gcc/testsuite/gm2/pim/fail/badpointer2.mod b/gcc/testsuite/gm2/pim/fail/badpointer2.mod
new file mode 100644
index 0000000..efd6c74
--- /dev/null
+++ b/gcc/testsuite/gm2/pim/fail/badpointer2.mod
@@ -0,0 +1,24 @@
+MODULE badpointer2 ;
+
+FROM DynamicStrings IMPORT String ;
+
+CONST
+ A = "hello" ;
+ B = " world" ;
+ Hello = A + B ;
+
+
+PROCEDURE testproc (s: String) ;
+BEGIN
+END testproc ;
+
+
+PROCEDURE foo ;
+BEGIN
+ testproc (Hello)
+END foo ;
+
+
+BEGIN
+ foo
+END badpointer2.
diff --git a/gcc/testsuite/gm2/pim/fail/badpointer3.mod b/gcc/testsuite/gm2/pim/fail/badpointer3.mod
new file mode 100644
index 0000000..73de3de
--- /dev/null
+++ b/gcc/testsuite/gm2/pim/fail/badpointer3.mod
@@ -0,0 +1,24 @@
+MODULE badpointer3 ;
+
+FROM SYSTEM IMPORT ADDRESS ;
+
+CONST
+ A = "hello" ;
+ B = " world" ;
+ Hello = A + B ;
+
+
+PROCEDURE testproc (s: ADDRESS) ;
+BEGIN
+END testproc ;
+
+
+PROCEDURE foo ;
+BEGIN
+ testproc (Hello)
+END foo ;
+
+
+BEGIN
+ foo
+END badpointer3.
diff --git a/gcc/testsuite/gm2/pim/fail/badpointer4.mod b/gcc/testsuite/gm2/pim/fail/badpointer4.mod
new file mode 100644
index 0000000..b5fb8ad
--- /dev/null
+++ b/gcc/testsuite/gm2/pim/fail/badpointer4.mod
@@ -0,0 +1,20 @@
+MODULE badpointer4 ;
+
+FROM DynamicStrings IMPORT String ;
+FROM strconst IMPORT Hello ;
+
+
+PROCEDURE testproc (s: String) ;
+BEGIN
+END testproc ;
+
+
+PROCEDURE foo ;
+BEGIN
+ testproc (Hello)
+END foo ;
+
+
+BEGIN
+ foo
+END badpointer4.
diff --git a/gcc/testsuite/gm2/pim/fail/strconst.def b/gcc/testsuite/gm2/pim/fail/strconst.def
new file mode 100644
index 0000000..867e006
--- /dev/null
+++ b/gcc/testsuite/gm2/pim/fail/strconst.def
@@ -0,0 +1,6 @@
+DEFINITION MODULE strconst ;
+
+CONST
+ Hello = "hello world" ;
+
+END strconst.
diff --git a/gcc/testsuite/gm2/projects/pim/run/pass/pegfive/pegfive.mod b/gcc/testsuite/gm2/projects/pim/run/pass/pegfive/pegfive.mod
new file mode 100644
index 0000000..6ad559a
--- /dev/null
+++ b/gcc/testsuite/gm2/projects/pim/run/pass/pegfive/pegfive.mod
@@ -0,0 +1,767 @@
+(* Copyright (C) 2007 Free Software Foundation, Inc. *)
+(* This file is part of GNU Modula-2.
+
+GNU Modula-2 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 2, or (at your option) any later
+version.
+
+GNU Modula-2 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 gm2; see the file COPYING. If not, write to the Free Software
+Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *)
+
+MODULE pegfive ;
+
+
+FROM SYSTEM IMPORT BYTE ;
+FROM NumberIO IMPORT WriteCard, StrToCard, WriteInt ;
+FROM StrIO IMPORT ReadString, WriteString, WriteLn ;
+FROM StdIO IMPORT Write ;
+FROM StrLib IMPORT StrLen, StrRemoveWhitePrefix, StrEqual ;
+FROM Selective IMPORT Timeval, GetTimeOfDay, GetTime, InitTime, KillTime ;
+FROM FIO IMPORT FlushBuffer, StdOut ;
+
+
+CONST
+ EnableGame = FALSE ; (* Set to TRUE if you want to play
+ the game. *)
+ BoardX = 16 ;
+ BoardY = 16 ;
+ BoardSize = BoardX * BoardY ;
+ AreaRadius = 1 ;
+ MaxScore = 100000 ;
+ MinScore = -100000 ;
+ OpenFour = 10000 ;
+ OpenThree = 1000 ;
+ OpenTwo = 100 ;
+ WinScore = MaxScore ;
+ LooseScore = -WinScore ;
+ MaxTimePerMove = 8 ;
+ MinTimePerMove = 3 ;
+
+TYPE
+ Squares = [0..BoardSize-1] ;
+
+ Moves = RECORD
+ NoOfPegs: CARDINAL ;
+ Tiles : ARRAY [0..BoardSize] OF BYTE ;
+ END ;
+
+ Board = RECORD
+ Pegs : Moves ;
+ Colours : SetOfSquare ;
+ END ;
+
+ SetOfSquare = SET OF Squares ;
+
+ Colour = (black, white) ;
+
+
+VAR
+ count,
+ NoOfPlies: CARDINAL ;
+
+
+(*
+ InitBoard - initialize the board.
+*)
+
+PROCEDURE InitBoard (VAR b: Board) ;
+BEGIN
+ b.Pegs.NoOfPegs := 0 ;
+ b.Colours := SetOfSquare{}
+END InitBoard ;
+
+
+(*
+ CreateListOfMachineMoves - given board, b, generate a list of possible
+ moves to consider in, m, for colour, c.
+*)
+
+PROCEDURE CreateListOfMoves (VAR b: Board; VAR m: Moves; c: Colour) ;
+VAR
+ i : CARDINAL ;
+ t, j, n: INTEGER ;
+BEGIN
+ m.NoOfPegs := 0 ;
+ n := 0 ;
+ i := 0 ;
+ WHILE i<b.Pegs.NoOfPegs DO
+ t := VAL(INTEGER, b.Pegs.Tiles[i]) ;
+ FOR j := 1 TO AreaRadius DO
+ IfFreeAdd(b, m, (t-1)*j, c) ;
+ IfFreeAdd(b, m, (t+1)*j, c) ;
+ IfFreeAdd(b, m, (t-BoardX)*j, c) ;
+ IfFreeAdd(b, m, (t+BoardX)*j, c) ;
+ IfFreeAdd(b, m, (t-(BoardX+1))*j, c) ;
+ IfFreeAdd(b, m, (t+(BoardX+1))*j, c) ;
+ IfFreeAdd(b, m, (t-(BoardX-1))*j, c) ;
+ IfFreeAdd(b, m, (t+(BoardX-1))*j, c)
+ END ;
+ INC(i)
+ END
+END CreateListOfMoves ;
+
+
+(*
+ IfFreeAdd - tests to see whether position, i, is legal
+ and adds it to the list of moves, m.
+*)
+
+PROCEDURE IfFreeAdd (VAR b: Board; VAR m: Moves; i: INTEGER; c: Colour) ;
+VAR
+ n: CARDINAL ;
+BEGIN
+ IF (i>=0) AND (i<BoardSize)
+ THEN
+ n := 0 ;
+ WHILE n<b.Pegs.NoOfPegs DO
+ IF VAL(INTEGER, b.Pegs.Tiles[n])=i
+ THEN
+ RETURN
+ END ;
+ INC(n)
+ END ;
+ (* it is free, so add it to, m *)
+ m.Tiles[m.NoOfPegs] := VAL(BYTE, i) ;
+ INC(m.NoOfPegs) ;
+ END
+END IfFreeAdd ;
+
+
+(*
+ MaximumScore - returns TRUE if the maximim score was found.
+*)
+
+PROCEDURE MaximumScore (score: INTEGER) : BOOLEAN ;
+BEGIN
+ IF (score<=MinScore) OR (score>=MaxScore)
+ THEN
+ RETURN TRUE
+ ELSE
+ RETURN FALSE
+ END
+END MaximumScore ;
+
+
+(*
+ IsPositionCol - returns TRUE if position, pos, on board, b, contains a peg
+ of colour, c.
+*)
+
+PROCEDURE IsPositionCol (VAR b: Board; pos: CARDINAL; c: Colour) : BOOLEAN ;
+VAR
+ p: CARDINAL ;
+BEGIN
+ p := b.Pegs.NoOfPegs ;
+ WHILE p>0 DO
+ DEC(p) ;
+ IF VAL(CARDINAL, b.Pegs.Tiles[p])=pos
+ THEN
+ IF c=white
+ THEN
+ RETURN pos IN b.Colours
+ ELSE
+ RETURN NOT (pos IN b.Colours)
+ END
+ END
+ END ;
+ RETURN FALSE
+END IsPositionCol ;
+
+
+(*
+ IsPositionEmpty - returns TRUE if position, pos, on board, b, is empty.
+*)
+
+PROCEDURE IsPositionEmpty (VAR b: Board; pos: CARDINAL) : BOOLEAN ;
+VAR
+ p: CARDINAL ;
+BEGIN
+ p := b.Pegs.NoOfPegs ;
+ WHILE p>0 DO
+ DEC(p) ;
+ IF VAL(CARDINAL, b.Pegs.Tiles[p])=pos
+ THEN
+ RETURN FALSE
+ END
+ END ;
+ RETURN TRUE
+END IsPositionEmpty ;
+
+
+(*
+ CheckDir - search back to at most square, begin, and then search forward to
+ at most position, end, for a run of pegs.
+*)
+
+PROCEDURE CheckDir (VAR b: Board; pos: INTEGER;
+ col: Colour; dec, inc: INTEGER;
+ begin, end: INTEGER; score: INTEGER) : INTEGER ;
+VAR
+ newscore: INTEGER ;
+ open,
+ count : CARDINAL ;
+BEGIN
+ WITH b DO
+ IF (pos>=begin) AND IsPositionCol(b, pos, col)
+ THEN
+ WHILE (pos>=begin) AND IsPositionCol(b, pos, col) DO
+ pos := pos + dec
+ END ;
+ open := 0 ;
+ IF (pos>=begin) AND IsPositionEmpty(b, pos)
+ THEN
+ (* open this end *)
+ open := 1
+ END ;
+ pos := pos + inc * 2 ;
+ count := 1 ;
+ WHILE (pos<=end) AND IsPositionCol(b, pos, col) DO
+ pos := pos + inc ;
+ INC(count)
+ END ;
+ IF (pos<end) AND IsPositionEmpty(b, pos)
+ THEN
+ (* open this end *)
+ INC(open)
+ END ;
+ IF open>1
+ THEN
+ DEC(open)
+ END ;
+ CASE count OF
+
+ 2: newscore := open*OpenTwo |
+ 3: newscore := open*OpenThree |
+ 4: newscore := open*OpenFour |
+ 5: IF col=white
+ THEN
+ RETURN MaxScore
+ ELSE
+ RETURN MinScore
+ END
+ ELSE
+ newscore := 0
+ END ;
+ IF col=white
+ THEN
+ RETURN score+newscore
+ ELSE
+ RETURN score-newscore
+ END
+ ELSE
+ RETURN score
+ END
+ END
+END CheckDir ;
+
+
+(*
+ RemoveScore - removes the value of a line of pegs starting at position, pos,
+ from the, score, and returns the new score.
+*)
+
+PROCEDURE RemoveScore (VAR b: Board; pos: INTEGER;
+ dec, inc: INTEGER;
+ begin, end: INTEGER; score: INTEGER) : INTEGER ;
+VAR
+ col: Colour ;
+BEGIN
+ IF (pos >= 0) AND (pos < BoardSize)
+ THEN
+ IF IsPositionEmpty(b, pos)
+ THEN
+ RETURN score
+ ELSE
+ IF IsPositionCol(b, pos, white)
+ THEN
+ col := white
+ ELSE
+ col := black
+ END ;
+ score := score - CheckDir(b, pos, col, dec, inc, begin, end, 0)
+ END
+ END ;
+ RETURN score
+END RemoveScore ;
+
+
+(*
+ CalcScore - returns the new score if move, pos, is played
+ by colour, col.
+*)
+
+PROCEDURE CalcScore (VAR b: Board; score: INTEGER;
+ pos: INTEGER; col: Colour) : INTEGER ;
+VAR
+ s : INTEGER ;
+ x, y,
+ lup, rdown,
+ ldown, rup,
+ up, down,
+ left, right: CARDINAL ;
+BEGIN
+ x := pos MOD BoardX ;
+ y := pos DIV BoardX ;
+ left := y * BoardX ;
+ right := left+BoardX-1 ;
+ down := x ;
+ up := down + (BoardX*(BoardY-1)) ;
+
+ (* diag left down *)
+ IF x>y
+ THEN
+ ldown := x-y
+ ELSE
+ ldown := (y-x) * BoardY
+ END ;
+ (* diag right up *)
+ IF x>y
+ THEN
+ rup := (BoardX-x+y)*BoardY-1
+ ELSE
+ rup := ((BoardY-1)-y+x) + (BoardY-1)*BoardY
+ END ;
+ (* diag left up *)
+ IF x>=BoardY-y
+ THEN
+ lup := (BoardY-1)*BoardX+(x-(BoardY-1-y))
+ ELSE
+ lup := (y+x)*BoardY
+ END ;
+ (* diag right down *)
+ IF y >= BoardX-x
+ THEN
+ rdown := (y-(BoardX-x-1))*BoardY+BoardX-1
+ ELSE
+ rdown := x+y
+ END ;
+
+ (* firstly remove previous score for both colours from adjacent pegs *)
+ score := RemoveScore(b, pos-1, -1, +1, left, right, score) ;
+ score := RemoveScore(b, pos+1, +1, -1, left, right, score) ;
+ score := RemoveScore(b, pos-BoardX, -BoardX, +BoardX, down, up, score) ;
+ score := RemoveScore(b, pos+BoardX, +BoardX, -BoardX, down, up, score) ;
+
+ score := RemoveScore(b, pos+(BoardX-1), +(BoardX-1), -(BoardX-1), rdown, lup, score) ;
+ score := RemoveScore(b, pos-(BoardX-1), -(BoardX-1), +(BoardX-1), rdown, lup, score) ;
+ score := RemoveScore(b, pos+(BoardX+1), +(BoardX+1), -(BoardX+1), ldown, rup, score) ;
+ score := RemoveScore(b, pos-(BoardX+1), -(BoardX+1), +(BoardX+1), ldown, rup, score) ;
+
+ (* now add our new peg *)
+ ApplyMove(b, col, pos) ;
+
+ (* and calculate the new score *)
+
+ s := CheckDir(b, pos, col, -1, +1, left, right, 0) ;
+ IF MaximumScore(s)
+ THEN
+ RETURN s
+ END ;
+ score := score + s ;
+
+ s := CheckDir(b, pos, col, -BoardX, +BoardX, down, up, 0) ;
+ IF MaximumScore(s)
+ THEN
+ RETURN s
+ END ;
+ score := score + s ;
+
+ s := CheckDir(b, pos, col, -(BoardX+1), +(BoardX+1), ldown, rup, 0) ;
+ IF MaximumScore(s)
+ THEN
+ RETURN s
+ END ;
+ score := score + s ;
+
+ s := CheckDir(b, pos, col, -(BoardX-1), +(BoardX-1), rdown, lup, 0) ;
+ IF MaximumScore(s)
+ THEN
+ RETURN s
+ END ;
+ score := score + s ;
+
+ RETURN score
+END CalcScore ;
+
+
+(*
+ DisplayBoard - displays the pegfive board.
+*)
+
+PROCEDURE DisplayBoard (VAR b: Board) ;
+VAR
+ pos,
+ i, x, y: CARDINAL ;
+ written: BOOLEAN ;
+BEGIN
+ WriteString(' A B C D E F G H I J K L M N O P') ; WriteLn ;
+ WriteString(' +---------------------------------+') ; WriteLn ;
+ FOR y := BoardY TO 1 BY -1 DO
+ WriteCard(y, 2) ; Write('|') ;
+ FOR x := 0 TO BoardX-1 DO
+ i := b.Pegs.NoOfPegs ;
+ written := FALSE ;
+ WHILE i>0 DO
+ pos := VAL(CARDINAL, b.Pegs.Tiles[i-1]) ;
+ IF pos=((y-1)*BoardX)+x
+ THEN
+ written := TRUE ;
+ IF pos IN b.Colours
+ THEN
+ WriteString(' O')
+ ELSE
+ WriteString(' X')
+ END
+ END ;
+ DEC(i)
+ END ;
+ IF NOT written
+ THEN
+ WriteString(' .')
+ END
+ END ;
+ WriteString(' |') ; WriteCard(y, 0) ; WriteLn
+ END ;
+ WriteString(' +---------------------------------+') ; WriteLn ;
+ WriteString(' A B C D E F G H I J K L M N O P') ; WriteLn
+END DisplayBoard ;
+
+
+(*
+ WriteColour - displays the colour, c.
+*)
+
+PROCEDURE WriteColour (c: Colour) ;
+BEGIN
+ CASE c OF
+
+ white: WriteString('naughts') |
+ black: WriteString('crosses')
+
+ END
+END WriteColour ;
+
+
+(*
+ ApplyMove - adds move, pos, to board.
+*)
+
+PROCEDURE ApplyMove (VAR b: Board; c: Colour; pos: CARDINAL) ;
+BEGIN
+ IF b.Pegs.NoOfPegs<BoardSize
+ THEN
+ b.Pegs.Tiles[b.Pegs.NoOfPegs] := VAL(BYTE, pos) ;
+ INC(b.Pegs.NoOfPegs) ;
+ IF c=white
+ THEN
+ INCL(b.Colours, pos)
+ END
+ END
+END ApplyMove ;
+
+
+(*
+ RetractMove - removes the last move from the board.
+*)
+
+PROCEDURE RetractMove (VAR b: Board) ;
+VAR
+ pos: CARDINAL ;
+BEGIN
+ IF b.Pegs.NoOfPegs>0
+ THEN
+ DEC(b.Pegs.NoOfPegs) ;
+ pos := VAL(CARDINAL, b.Pegs.Tiles[b.Pegs.NoOfPegs]) ;
+ EXCL(b.Colours, pos)
+ END
+END RetractMove ;
+
+
+(*
+ AskMove - returns a move entered.
+*)
+
+PROCEDURE AskMove (VAR b: Board; c: Colour) : CARDINAL ;
+VAR
+ s : ARRAY [0..80] OF CHAR ;
+ x : CHAR ;
+ y, m: CARDINAL ;
+BEGIN
+ LOOP
+ WriteString('Please enter your move, ') ;
+ WriteColour(c) ;
+ WriteString(': ') ;
+ LOOP
+ ReadString(s) ;
+ StrRemoveWhitePrefix(s, s) ;
+ IF StrEqual (s, 'exit') OR StrEqual (s, 'quit')
+ THEN
+ WriteString ('goodbye') ; WriteLn ;
+ HALT (0)
+ ELSIF StrLen(s)>0
+ THEN
+ x := CAP(s[0]) ;
+ IF (x>='A') AND (x<='P')
+ THEN
+ m := ORD (x) - ORD ('A') ;
+ s[0] := ' ' ;
+ StrRemoveWhitePrefix(s, s) ;
+ IF StrLen(s)>0
+ THEN
+ StrToCard(s, y) ;
+ IF (y=0) OR (y>BoardY)
+ THEN
+ WriteString('Please enter a number between [1-16]') ; WriteLn
+ ELSE
+ m := m+(y-1)*BoardY ;
+ EXIT
+ END
+ END
+ ELSE
+ WriteString('please enter a letter [A-P] followed by a number [1-16]') ; WriteLn
+ END
+ END
+ END ;
+ IF IsPositionEmpty(b, m)
+ THEN
+ RETURN m
+ END ;
+ IF IsPositionCol(b, m, c)
+ THEN
+ WriteString('You have already moved into that position') ; WriteLn
+ ELSE
+ WriteString('That position is occupied by your opponent') ; WriteLn
+ END
+ END
+END AskMove ;
+
+
+(*
+ Opponent - returns the opposite colour.
+*)
+
+PROCEDURE Opponent (col: Colour) : Colour ;
+BEGIN
+ IF col=white
+ THEN
+ RETURN black
+ ELSE
+ RETURN white
+ END
+END Opponent ;
+
+
+(*
+ AlphaBeta - returns the score estimated should move, pos, be chosen.
+ The board, b, and score is in the state _before_ move pos
+ is made.
+*)
+
+PROCEDURE AlphaBeta (pos: CARDINAL; VAR b: Board; col: Colour;
+ depth: CARDINAL;
+ alpha, beta, score: INTEGER) : INTEGER ;
+VAR
+ try : INTEGER ;
+ i, n : CARDINAL ;
+ m : Moves ;
+ newBoard: Board ;
+BEGIN
+ score := CalcScore(b, score, pos, col) ; (* make move and update score *)
+ IF (depth=0) OR MaximumScore(score)
+ THEN
+ RetractMove(b) ;
+ INC(count) ;
+ IF col=white
+ THEN
+ RETURN score+VAL(INTEGER, depth)
+ ELSE
+ RETURN score-VAL(INTEGER, depth)
+ END
+ ELSE
+ col := Opponent(col) ;
+ CreateListOfMoves(b, m, col) ;
+ i := 0 ;
+ IF col=white
+ THEN
+ WHILE i<m.NoOfPegs DO
+ try := AlphaBeta(VAL(CARDINAL, m.Tiles[i]),
+ b, white, depth-1, alpha, beta, score) ;
+ IF try > alpha
+ THEN
+ (* found a better move *)
+ alpha := try
+ END ;
+ IF alpha >= beta
+ THEN
+ RetractMove(b) ;
+ RETURN alpha
+ END ;
+ INC(i)
+ END ;
+ RetractMove(b) ;
+ RETURN alpha
+ ELSE
+ (* black to move, move is possible, continue searching *)
+ WHILE i<m.NoOfPegs DO
+ try := AlphaBeta(VAL(CARDINAL, m.Tiles[i]),
+ b, black, depth-1, alpha, beta, score) ;
+ IF try < beta
+ THEN
+ (* found a better move *)
+ beta := try
+ END ;
+ IF alpha >= beta
+ THEN
+ (* no point searching further as WHITE would choose
+ a different previous move *)
+ RetractMove(b) ;
+ RETURN beta
+ END ;
+ INC(i)
+ END ;
+ RetractMove(b) ;
+ RETURN beta (* the best score for a move BLACK has found *)
+ END
+ END
+END AlphaBeta ;
+
+
+(*
+ MakeMove - computer makes a move for colour, col.
+*)
+
+PROCEDURE MakeMove (VAR b: Board; col: Colour; score: INTEGER) : INTEGER ;
+VAR
+ start, end: Timeval ;
+ try,
+ r, best : INTEGER ;
+ secS, usec,
+ secE, i,
+ move : CARDINAL ;
+ m : Moves ;
+BEGIN
+ start := InitTime(0, 0) ;
+ end := InitTime(0, 0) ;
+
+ WriteString("I'm going to look ") ;
+ WriteCard(NoOfPlies, 0) ; WriteString(' moves ahead') ; WriteLn ;
+
+ r := GetTimeOfDay(start) ;
+ best := MinScore-1 ;
+
+ count := 0 ;
+ i := 0 ;
+ CreateListOfMoves(b, m, col) ;
+ WHILE i<m.NoOfPegs DO
+ try := AlphaBeta(VAL(CARDINAL, m.Tiles[i]), b, col, NoOfPlies,
+ MinScore, MaxScore, score) ;
+ IF try>best
+ THEN
+ best := try ;
+ move := VAL(CARDINAL, m.Tiles[i])
+ END ;
+ INC(i)
+ END ;
+
+ r := GetTimeOfDay(end) ;
+ GetTime(start, secS, usec) ;
+ GetTime(end, secE, usec) ;
+
+ IF best >= WinScore
+ THEN
+ WriteString('I think I can force a win') ; WriteLn
+ END ;
+ IF best <= LooseScore
+ THEN
+ WriteString('You should be able to force a win') ; WriteLn
+ END ;
+
+ WriteString('I took ') ; WriteCard(secE-secS, 0) ;
+ WriteString(' seconds and evaluated ') ;
+ WriteCard(count, 0) ; WriteString(' positions,') ; WriteLn ;
+
+ IF secE-secS > MaxTimePerMove
+ THEN
+ WriteString('sorry about the wait, I took too long so') ; WriteLn ;
+ WriteString('I will reduce my search next go..') ; WriteLn ;
+ IF NoOfPlies >= 3
+ THEN
+ DEC(NoOfPlies)
+ END
+ ELSE
+ IF secE-secS < MinTimePerMove
+ THEN
+ INC(NoOfPlies)
+ END
+ END ;
+
+ start := KillTime(start) ;
+ end := KillTime(end) ;
+ RETURN move
+END MakeMove ;
+
+
+(*
+ Play -
+*)
+
+PROCEDURE Play ;
+VAR
+ b: Board ;
+ c: Colour ;
+ s: INTEGER ;
+ m: CARDINAL ;
+BEGIN
+ InitBoard(b) ;
+ NoOfPlies := 3 ;
+ c := black ;
+ s := 0 ;
+ DisplayBoard(b) ;
+ REPEAT
+ m := AskMove(b, c) ;
+ s := CalcScore(b, s, m, c) ;
+ DisplayBoard(b) ;
+ WriteString('Current score = ') ; WriteInt(s, 0) ; WriteLn ;
+ FlushBuffer(StdOut) ;
+ IF s<=MinScore
+ THEN
+ WriteString('Well done you win') ; WriteLn ;
+ RETURN
+ END ;
+ c := Opponent(c) ;
+ m := MakeMove(b, c, s) ;
+ s := CalcScore(b, s, m, c) ;
+
+ WriteString('I am going to move to position: ') ;
+ Write(CHR(ORD('a')+m MOD BoardY)) ;
+ WriteCard(m DIV BoardX+1, 0) ;
+ WriteLn ;
+ DisplayBoard(b) ;
+ WriteString('Current score = ') ; WriteInt(s, 0) ; WriteLn ;
+ IF s>=MaxScore
+ THEN
+ WriteString('Good try, but I win') ; WriteLn ;
+ RETURN
+ END ;
+ c := Opponent(c)
+ UNTIL b.Pegs.NoOfPegs=BoardSize ;
+ WriteString('The game has ended in a draw as the board is full') ; WriteLn
+END Play ;
+
+
+BEGIN
+ IF EnableGame
+ THEN
+ Play
+ ELSE
+ WriteString ('to enable the game - edit line 31 in pegfive.mod and recompile') ;
+ WriteLn
+ END
+END pegfive.
diff --git a/gcc/testsuite/gm2/projects/pim/run/pass/pegfive/projects-pim-run-pass-pegfive.exp b/gcc/testsuite/gm2/projects/pim/run/pass/pegfive/projects-pim-run-pass-pegfive.exp
new file mode 100644
index 0000000..b32f565
--- /dev/null
+++ b/gcc/testsuite/gm2/projects/pim/run/pass/pegfive/projects-pim-run-pass-pegfive.exp
@@ -0,0 +1,39 @@
+# Expect driver script for GCC Regression Tests
+# Copyright (C) 2022-2024 Free Software Foundation, Inc.
+
+# This program 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 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3. If not see
+# <http://www.gnu.org/licenses/>.
+
+# This file was written by Gaius Mulley (gaius.mulley@southwales.ac.uk)
+# for GNU Modula-2.
+
+if $tracelevel then {
+ strace $tracelevel
+}
+
+# load support procs
+load_lib gm2-torture.exp
+
+set gm2src ${srcdir}/../m2
+
+gm2_init_pim "-g -fsoft-check-all"
+
+foreach testcase [lsort [glob -nocomplain $srcdir/$subdir/*.mod]] {
+ # If we're only testing specific files and this isn't one of them, skip it.
+ if ![runtest_file_p $runtests $testcase] then {
+ continue
+ }
+
+ gm2-torture-execute $testcase "" "pass"
+}
diff --git a/gcc/testsuite/go.dg/pr113636.go b/gcc/testsuite/go.dg/pr113636.go
new file mode 100644
index 0000000..3f43b69
--- /dev/null
+++ b/gcc/testsuite/go.dg/pr113636.go
@@ -0,0 +1,40 @@
+// { dg-do compile }
+// { dg-options "-O3 -g" }
+// { dg-additional-options "-mtune=thunderxt88" { target aarch64*-*-* } }
+
+package main
+
+import "math"
+
+func sinhcosh(x float64) (sh, ch float64) {
+ if math.Abs(x) <= 0.5 {
+ return math.Sinh(x), math.Cosh(x)
+ }
+ e := math.Exp(x)
+ ei := 0.5 / e
+ e *= 0.5
+ return e - ei, e + ei
+}
+
+func Cos(x complex128) complex128 {
+ switch re, im := real(x), imag(x); {
+ case im == 0 && (math.IsInf(re, 0) || math.IsNaN(re)):
+ return complex(math.NaN(), -im*math.Copysign(0, re))
+ case math.IsInf(im, 0):
+ switch {
+ // case re == 0:
+ // return complex(math.Inf(1), -re*math.Copysign(0, im))
+ case math.IsInf(re, 0) || math.IsNaN(re):
+ return complex(math.Inf(1), math.NaN())
+ }
+ // case re == 0 && math.IsNaN(im):
+ // return complex(math.NaN(), 0)
+ }
+ s, c := math.Sincos(real(x))
+ sh, ch := sinhcosh(imag(x))
+ return complex(c*ch, -s*sh)
+}
+
+func main() {
+ Cos(complex(2.5, 3.5))
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue20185.go b/gcc/testsuite/go.test/test/fixedbugs/issue20185.go
index 9065868..24d74f0 100644
--- a/gcc/testsuite/go.test/test/fixedbugs/issue20185.go
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue20185.go
@@ -10,7 +10,7 @@
package p
func F() {
- switch t := nil.(type) { // ERROR "cannot type switch on non-interface value"
+ switch t := nil.(type) { // ERROR "cannot type switch on non-interface value|defined to nil type"
default:
_ = t
}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue33386.go b/gcc/testsuite/go.test/test/fixedbugs/issue33386.go
index 7b2f565..c507391 100644
--- a/gcc/testsuite/go.test/test/fixedbugs/issue33386.go
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue33386.go
@@ -18,7 +18,7 @@ func _() {
func _() {
defer func() { // no error here about deferred function
- 1 + // GCCGO_ERROR "value computed is not used"
+ 1 +
}() // ERROR "expecting expression|expected operand"
}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue4085a.go b/gcc/testsuite/go.test/test/fixedbugs/issue4085a.go
index 200290a..f457fcf 100644
--- a/gcc/testsuite/go.test/test/fixedbugs/issue4085a.go
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue4085a.go
@@ -10,9 +10,9 @@ type T []int
func main() {
_ = make(T, -1) // ERROR "negative"
- _ = make(T, 0.5) // ERROR "constant 0.5 truncated to integer|non-integer len argument"
+ _ = make(T, 0.5) // ERROR "truncated to integer|non-integer len argument"
_ = make(T, 1.0) // ok
- _ = make(T, 1<<63) // ERROR "len argument too large"
+ _ = make(T, 1<<63) // ERROR "integer constant overflow|len argument too large"
_ = make(T, 0, -1) // ERROR "negative cap"
_ = make(T, 10, 0) // ERROR "len larger than cap"
}
diff --git a/gcc/testsuite/go.test/test/shift1.go b/gcc/testsuite/go.test/test/shift1.go
index d6a6c38..3b1aa9e 100644
--- a/gcc/testsuite/go.test/test/shift1.go
+++ b/gcc/testsuite/go.test/test/shift1.go
@@ -189,12 +189,12 @@ func _() {
var m1 map[int]string
delete(m1, 1<<s)
delete(m1, 1.<<s)
- delete(m1, 1.1<<s) // ERROR "truncated|shift of type float64"
+ delete(m1, 1.1<<s) // ERROR "truncated|shift of type float64|incompatible|non-integer"
var m2 map[float32]string
- delete(m2, 1<<s) // ERROR "invalid|cannot use 1 << s as type float32"
- delete(m2, 1.<<s) // ERROR "invalid|cannot use 1 << s as type float32"
- delete(m2, 1.1<<s) // ERROR "invalid|cannot use 1.1 << s as type float32"
+ delete(m2, 1<<s) // ERROR "invalid|cannot use 1 << s as type float32|incompatible"
+ delete(m2, 1.<<s) // ERROR "invalid|cannot use 1 << s as type float32|incompatible"
+ delete(m2, 1.1<<s) // ERROR "invalid|cannot use 1.1 << s as type float32|incompatible"
}
// shifts of shifts
diff --git a/gcc/testsuite/jit.dg/all-non-failing-tests.h b/gcc/testsuite/jit.dg/all-non-failing-tests.h
index a3bd035..d09a31e 100644
--- a/gcc/testsuite/jit.dg/all-non-failing-tests.h
+++ b/gcc/testsuite/jit.dg/all-non-failing-tests.h
@@ -286,6 +286,13 @@
/* test-nonnull-attribute.c: This can't be in the testcases array as it needs
the `-O2` flag. */
+/* test-popcount.c */
+#define create_code create_code_popcount
+#define verify_code verify_code_popcount
+#include "test-popcount.c"
+#undef create_code
+#undef verify_code
+
/* test-pr103562.c: We don't add this one, since it touches
the optimization level of the context as a whole. */
@@ -525,6 +532,9 @@ const struct testcase testcases[] = {
{"nested_loop",
create_code_nested_loop,
verify_code_nested_loop},
+ {"popcount",
+ create_code_popcount,
+ verify_code_popcount},
{"pr66700_observing_write_through_ptr",
create_code_pr66700_observing_write_through_ptr,
verify_code_pr66700_observing_write_through_ptr},
diff --git a/gcc/testsuite/jit.dg/jit.exp b/gcc/testsuite/jit.dg/jit.exp
index 5697206..893ff5f 100644
--- a/gcc/testsuite/jit.dg/jit.exp
+++ b/gcc/testsuite/jit.dg/jit.exp
@@ -94,25 +94,34 @@ proc parse_valgrind_logfile {name logfile} {
# unexpected exits.
proc verify_exit_status { executable wres } {
- lassign $wres pid spawnid os_error_flag value
+ set extra [lassign $wres pid spawnid os_error_flag value]
verbose "pid: $pid" 3
verbose "spawnid: $spawnid" 3
verbose "os_error_flag: $os_error_flag" 3
verbose "value: $value" 3
# Detect segfaults etc:
- if { [llength $wres] > 4 } {
- if { [lindex $wres 4] == "CHILDKILLED" } {
- fail "$executable killed: $wres"
+ set len [llength $extra]
+ if { $len >= 1 } {
+ if { [lindex $extra 0] == "CHILDKILLED" } {
+ set reason "Unknown Reason"
+ set detail "No Details"
+ if { $len >= 2 } {
+ set reason [lindex $extra 1]
+ if { $len >= 3 } {
+ set detail [lindex $extra 2]
+ }
+ }
+ fail "$executable killed: $reason $detail"
return
}
}
if { $os_error_flag != 0 } {
- fail "$executable: OS error: $wres"
+ fail "$executable: OS error: $os_error_flag $extra"
return
}
if { $value != 0 } {
- fail "$executable: non-zero exit code: $wres"
+ fail "$executable: non-zero exit code: $value $extra"
return
}
pass "$executable exited cleanly"
@@ -875,9 +884,23 @@ proc jit-verify-assembler { args } {
proc jit-verify-assembler-output { args } {
verbose "jit-verify-assembler: $args"
+ if { [llength $args] > 3 } {
+ error "jit-verify-assembler-output: too many arguments"
+ return
+ }
+
set dg-output-text [lindex $args 0]
verbose "dg-output-text: ${dg-output-text}"
+ if { [llength $args] >= 2 } {
+ switch [dg-process-target [lindex $args 1]] {
+ "S" { }
+ "N" { return }
+ "F" { setup_xfail "*-*-*" }
+ "P" { }
+ }
+ }
+
upvar 2 name name
verbose "name: $name"
@@ -907,9 +930,23 @@ proc jit-verify-assembler-output { args } {
proc jit-verify-assembler-output-not { args } {
verbose "jit-verify-assembler: $args"
+ if { [llength $args] > 3 } {
+ error "jit-verify-assembler-output-not: too many arguments"
+ return
+ }
+
set dg-output-text [lindex $args 0]
verbose "dg-output-text: ${dg-output-text}"
+ if { [llength $args] >= 2 } {
+ switch [dg-process-target [lindex $args 1]] {
+ "S" { }
+ "N" { return }
+ "F" { setup_xfail "*-*-*" }
+ "P" { }
+ }
+ }
+
upvar 2 name name
verbose "name: $name"
diff --git a/gcc/testsuite/jit.dg/test-alias-attribute.c b/gcc/testsuite/jit.dg/test-alias-attribute.c
index eb29003..4741aba 100644
--- a/gcc/testsuite/jit.dg/test-alias-attribute.c
+++ b/gcc/testsuite/jit.dg/test-alias-attribute.c
@@ -1,4 +1,5 @@
/* { dg-do compile { target x86_64-*-* } } */
+/* { dg-require-alias "" } */
#include <stdlib.h>
#include <stdio.h>
diff --git a/gcc/testsuite/jit.dg/test-always_inline-attribute.c b/gcc/testsuite/jit.dg/test-always_inline-attribute.c
index 5c3f386..f7201a1 100644
--- a/gcc/testsuite/jit.dg/test-always_inline-attribute.c
+++ b/gcc/testsuite/jit.dg/test-always_inline-attribute.c
@@ -148,6 +148,10 @@ int foo () {
/* { dg-final { jit-verify-output-file-was-created "" } } */
/* Check that the "removed" function was inlined, but not the others */
-/* { dg-final { jit-verify-assembler-output-not ".type\\s+removed,\\s+@function" } } */
-/* { dg-final { jit-verify-assembler-output ".type\\s+not_removed,\\s+@function" } } */
-/* { dg-final { jit-verify-assembler-output ".type\\s+foo,\\s+@function" } } */
+/* { dg-final { jit-verify-assembler-output-not ".type\\s+removed,\\s+@function" { target { ! *-*-darwin* } } } } */
+/* { dg-final { jit-verify-assembler-output ".type\\s+not_removed,\\s+@function" { target { ! *-*-darwin* } } } } */
+/* { dg-final { jit-verify-assembler-output ".type\\s+foo,\\s+@function" { target { ! *-*-darwin* } } } } */
+
+/* { dg-final { jit-verify-assembler-output-not "\\n_removed:" { target *-*-darwin* } } } */
+/* { dg-final { jit-verify-assembler-output "\\n_not_removed:" { target *-*-darwin* } } } */
+/* { dg-final { jit-verify-assembler-output "\\n_foo:" { target *-*-darwin* } } } */
diff --git a/gcc/testsuite/jit.dg/test-ggc-bugfix.c b/gcc/testsuite/jit.dg/test-ggc-bugfix.c
index 59eb374..fb857fb 100644
--- a/gcc/testsuite/jit.dg/test-ggc-bugfix.c
+++ b/gcc/testsuite/jit.dg/test-ggc-bugfix.c
@@ -12,6 +12,11 @@ create_code (gcc_jit_context *ctxt, void *user_data)
{
gcc_jit_context_add_command_line_option (ctxt, "-flto");
gcc_jit_context_add_driver_option (ctxt, "-nostdlib");
+#if __APPLE__
+ /* On newer macOS, the test will fail with a complaint from the linker about
+ all user-land exes needing libSystem, so add it. */
+ gcc_jit_context_add_driver_option (ctxt, "-lSystem");
+#endif
gcc_jit_type *type_int = gcc_jit_context_get_type (ctxt, GCC_JIT_TYPE_INT);
gcc_jit_param *params_for_func_main[0] = {
diff --git a/gcc/testsuite/jit.dg/test-link-section-assembler.c b/gcc/testsuite/jit.dg/test-link-section-assembler.c
index a90b00e..a78e9fd 100644
--- a/gcc/testsuite/jit.dg/test-link-section-assembler.c
+++ b/gcc/testsuite/jit.dg/test-link-section-assembler.c
@@ -34,4 +34,4 @@ create_code (gcc_jit_context *ctxt, void *user_data)
}
/* { dg-final { jit-verify-output-file-was-created "" } } */
-/* { dg-final { jit-verify-assembler-output ".section .my_section" } } */
+/* { dg-final { jit-verify-assembler-output ".section\\s.my_section" } } */
diff --git a/gcc/testsuite/jit.dg/test-noinline-attribute.c b/gcc/testsuite/jit.dg/test-noinline-attribute.c
index eac6cae..acfea8f 100644
--- a/gcc/testsuite/jit.dg/test-noinline-attribute.c
+++ b/gcc/testsuite/jit.dg/test-noinline-attribute.c
@@ -114,6 +114,10 @@ int foo () {
/* { dg-final { jit-verify-output-file-was-created "" } } */
/* Check that the "removed" function was inlined, but not the others */
-/* { dg-final { jit-verify-assembler-output-not ".type\\s+removed.isra.0,\\s+@function" } } */
-/* { dg-final { jit-verify-assembler-output ".type\\s+not_removed.isra.0,\\s+@function" } } */
-/* { dg-final { jit-verify-assembler-output ".type\\s+foo,\\s+@function" } } */
+/* { dg-final { jit-verify-assembler-output-not ".type\\s+removed.isra.0,\\s+@function" { target { ! *-*-darwin* } } } } */
+/* { dg-final { jit-verify-assembler-output ".type\\s+not_removed.isra.0,\\s+@function" { target { ! *-*-darwin* } } } } */
+/* { dg-final { jit-verify-assembler-output ".type\\s+foo,\\s+@function" { target { ! *-*-darwin* } } } } */
+
+/* { dg-final { jit-verify-assembler-output-not "\\n_removed.isra.0:" { target *-*-darwin* } } } */
+/* { dg-final { jit-verify-assembler-output "\\n_not_removed.isra.0:" { target *-*-darwin* } } } */
+/* { dg-final { jit-verify-assembler-output "\\n_foo:" { target *-*-darwin* } } } */
diff --git a/gcc/testsuite/jit.dg/test-popcount.c b/gcc/testsuite/jit.dg/test-popcount.c
new file mode 100644
index 0000000..6ad241f
--- /dev/null
+++ b/gcc/testsuite/jit.dg/test-popcount.c
@@ -0,0 +1,84 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdint.h>
+
+#include "libgccjit.h"
+
+#include "harness.h"
+
+void
+create_code (gcc_jit_context *ctxt, void *user_data)
+{
+ /* Let's try to inject the equivalent of:
+int
+popcount (unsigned int x)
+{
+ int i = 0;
+ while (x)
+ {
+ x &= x - 1;
+ ++i;
+ }
+ return i;
+}
+ */
+ gcc_jit_type *int_type =
+ gcc_jit_context_get_type (ctxt, GCC_JIT_TYPE_INT);
+ gcc_jit_type *uint_type =
+ gcc_jit_context_get_type (ctxt, GCC_JIT_TYPE_UNSIGNED_INT);
+
+ gcc_jit_param *param_x =
+ gcc_jit_context_new_param (
+ ctxt,
+ NULL,
+ uint_type, "x");
+ gcc_jit_param *params[1] = {param_x};
+ gcc_jit_function *func =
+ gcc_jit_context_new_function (ctxt,
+ NULL,
+ GCC_JIT_FUNCTION_EXPORTED,
+ int_type,
+ "popcount",
+ 1, params, 0);
+
+ gcc_jit_lvalue *x = gcc_jit_param_as_lvalue (param_x);
+ gcc_jit_rvalue *x_rvalue = gcc_jit_lvalue_as_rvalue (x);
+ gcc_jit_lvalue *i =
+ gcc_jit_function_new_local (func, NULL, int_type, "i");
+ gcc_jit_rvalue *zero = gcc_jit_context_zero (ctxt, int_type);
+
+ gcc_jit_block *initial =
+ gcc_jit_function_new_block (func, "initial");
+ gcc_jit_block *while_block =
+ gcc_jit_function_new_block (func, "while");
+
+ gcc_jit_block_add_assignment (initial, NULL, i, zero);
+ gcc_jit_block_end_with_jump (initial, NULL, while_block);
+
+ gcc_jit_block *after =
+ gcc_jit_function_new_block (func, "after");
+
+ gcc_jit_block *while_body =
+ gcc_jit_function_new_block (func, "while_body");
+ gcc_jit_rvalue *uzero = gcc_jit_context_zero (ctxt, uint_type);
+ gcc_jit_rvalue *cmp =
+ gcc_jit_context_new_comparison (ctxt, NULL, GCC_JIT_COMPARISON_NE, x_rvalue, uzero);
+ gcc_jit_block_end_with_conditional (while_block, NULL, cmp, while_body, after);
+
+ gcc_jit_rvalue *uone = gcc_jit_context_one (ctxt, uint_type);
+ gcc_jit_rvalue *sub = gcc_jit_context_new_binary_op (ctxt, NULL, GCC_JIT_BINARY_OP_MINUS, uint_type, x_rvalue, uone);
+ gcc_jit_block_add_assignment_op (while_body, NULL, x, GCC_JIT_BINARY_OP_BITWISE_AND, sub);
+
+ gcc_jit_rvalue *one = gcc_jit_context_one (ctxt, int_type);
+ gcc_jit_block_add_assignment_op (while_body, NULL, i, GCC_JIT_BINARY_OP_PLUS, one);
+ gcc_jit_block_end_with_jump (while_body, NULL, while_block);
+
+ gcc_jit_block_end_with_return(after, NULL, gcc_jit_lvalue_as_rvalue (i));
+}
+
+void
+verify_code (gcc_jit_context *ctxt, gcc_jit_result *result)
+{
+ CHECK_NON_NULL (result);
+}
diff --git a/gcc/testsuite/jit.dg/test-reflection.c b/gcc/testsuite/jit.dg/test-reflection.c
index 112a245..afa76ff 100644
--- a/gcc/testsuite/jit.dg/test-reflection.c
+++ b/gcc/testsuite/jit.dg/test-reflection.c
@@ -59,6 +59,7 @@ verify_code (gcc_jit_context *ctxt, gcc_jit_result *result)
CHECK (vec_type != double_type);
CHECK_VALUE (gcc_jit_vector_type_get_element_type(vector_type), double_type);
CHECK_VALUE (gcc_jit_vector_type_get_num_units(vector_type), 4);
+ CHECK (!gcc_jit_type_is_integral(vec_type));
CHECK (!gcc_jit_type_is_pointer(double_type));
CHECK_VALUE (gcc_jit_type_is_pointer(gcc_jit_type_get_pointer(double_type)), double_type);
diff --git a/gcc/testsuite/jit.dg/test-setting-alignment.c b/gcc/testsuite/jit.dg/test-setting-alignment.c
index 8489df9..14edc72 100644
--- a/gcc/testsuite/jit.dg/test-setting-alignment.c
+++ b/gcc/testsuite/jit.dg/test-setting-alignment.c
@@ -62,5 +62,6 @@ create_code (gcc_jit_context *ctxt, void *user_data)
}
/* { dg-final { jit-verify-output-file-was-created "" } } */
-/* { dg-final { jit-verify-assembler-output ".comm foo,4,8" } } */
+/* { dg-final { jit-verify-assembler-output ".comm foo,4,8" { target { ! *-*-darwin* } } } } */
+/* { dg-final { jit-verify-assembler-output ".comm\\s_foo,4,3" { target *-*-darwin* } } } */
/* { dg-final { jit-verify-assembler-output "movl -16\\\(%rbp\\\), %eax" } } */
diff --git a/gcc/testsuite/jit.dg/test-used-attribute.c b/gcc/testsuite/jit.dg/test-used-attribute.c
index cb20952..446c5c5 100644
--- a/gcc/testsuite/jit.dg/test-used-attribute.c
+++ b/gcc/testsuite/jit.dg/test-used-attribute.c
@@ -107,6 +107,10 @@ int foo() {
/* { dg-final { jit-verify-output-file-was-created "" } } */
/* Check that the "removed" function was inlined, but not the others */
-/* { dg-final { jit-verify-assembler-output-not ".type\\s+removed,\\s+@function" } } */
-/* { dg-final { jit-verify-assembler-output ".type\\s+not_removed,\\s+@function" } } */
-/* { dg-final { jit-verify-assembler-output ".type\\s+foo,\\s+@function" } } */
+/* { dg-final { jit-verify-assembler-output-not ".type\\s+removed,\\s+@function" { target { ! *-*-darwin* } } } } */
+/* { dg-final { jit-verify-assembler-output ".type\\s+not_removed,\\s+@function" { target { ! *-*-darwin* } } } } */
+/* { dg-final { jit-verify-assembler-output ".type\\s+foo,\\s+@function" { target { ! *-*-darwin* } } } } */
+
+/* { dg-final { jit-verify-assembler-output-not "\\n_removed:" { target *-*-darwin* } } } */
+/* { dg-final { jit-verify-assembler-output "\\n_not_removed:" { target *-*-darwin* } } } */
+/* { dg-final { jit-verify-assembler-output "\\n_foo:" { target *-*-darwin* } } } */
diff --git a/gcc/testsuite/jit.dg/test-variable-attribute.c b/gcc/testsuite/jit.dg/test-variable-attribute.c
index ea854ff..219a47d 100644
--- a/gcc/testsuite/jit.dg/test-variable-attribute.c
+++ b/gcc/testsuite/jit.dg/test-variable-attribute.c
@@ -40,7 +40,9 @@ int PUBLIC = 12;
/* { dg-final { jit-verify-output-file-was-created "" } } */
/* Check that the attribute was applied correctly */
-/* { dg-final { jit-verify-assembler-output ".hidden\\s+PRIVATE" } } */
-/* { dg-final { jit-verify-assembler-output ".globl\\s+PRIVATE" } } */
-/* { dg-final { jit-verify-assembler-output-not ".hidden\\s+PUBLIC" } } */
-/* { dg-final { jit-verify-assembler-output ".globl\\s+PUBLIC" } } */
+/* { dg-final { jit-verify-assembler-output ".hidden\\s+PRIVATE" { target { ! *-*-darwin* } } } } */
+/* { dg-final { jit-verify-assembler-output ".private_extern\\s+_PRIVATE" { target *-*-darwin* } } } */
+/* { dg-final { jit-verify-assembler-output ".globl\\s+_?PRIVATE" } } */
+/* { dg-final { jit-verify-assembler-output-not ".hidden\\s+PUBLIC" { target { ! *-*-darwin* } } } } */
+/* { dg-final { jit-verify-assembler-output-not ".private_extern\\s+_PUBLIC" { target *-*-darwin* } } } */
+/* { dg-final { jit-verify-assembler-output ".globl\\s+_?PUBLIC" } } */
diff --git a/gcc/testsuite/jit.dg/test-weak-attribute.c b/gcc/testsuite/jit.dg/test-weak-attribute.c
index 546ade1..3ca9485 100644
--- a/gcc/testsuite/jit.dg/test-weak-attribute.c
+++ b/gcc/testsuite/jit.dg/test-weak-attribute.c
@@ -38,4 +38,5 @@ void f () {}
/* { dg-final { jit-verify-output-file-was-created "" } } */
/* Check that the attribute was applied correctly */
-/* { dg-final { jit-verify-assembler-output ".weak\\s+f" } } */
+/* { dg-final { jit-verify-assembler-output ".weak\\s+f" { target { ! *-*-darwin* } } } } */
+/* { dg-final { jit-verify-assembler-output ".weak_definition\\s+_f" { target *-*-darwin* } } } */
diff --git a/gcc/testsuite/lib/gdc.exp b/gcc/testsuite/lib/gdc.exp
index 3045aa8..3c28422 100644
--- a/gcc/testsuite/lib/gdc.exp
+++ b/gcc/testsuite/lib/gdc.exp
@@ -133,6 +133,28 @@ proc gdc_link_flags { paths } {
set include_cxx_flags 0
}
+ # We need to add options to locate libgphobos and libstdc++
+ # Usually '-L' options are added to point to the relevant directories for
+ # the uninstalled libraries.
+
+ # In cases where libraries are available as both shared and convenience
+ # some additional checks are made.
+
+ # For some targets -static-xxxx options are handled by specs substitution
+ # and need a '-B' option rather than '-L'. For Darwin, when embedded
+ # runpaths are in use (the default for all versions after macOS 10.11),
+ # '-B' is also needed to provide the runpath.
+ # When '-B' is used, this results in a '-L' for each path that exists (so
+ # that appending a '-L' as well is a needless duplicate). There are also
+ # cases where tools warn for duplicates, leading to spurious fails.
+ # Therefore the objective of the code below is to add just one '-L' or
+ # '-B' for each of the libraries.
+
+ set target_wants_B_option 0
+ if { [istarget *-*-darwin9* ] || [istarget *-*-darwin\[12\]* ] } {
+ set target_wants_B_option 1
+ }
+
if { $gccpath != "" } {
# Path to libgphobos.spec.
append flags "-B${gccpath}/libphobos/src "
@@ -143,7 +165,11 @@ proc gdc_link_flags { paths } {
if { [file exists "${gccpath}/libphobos/src/.libs/libgphobos.a"] \
|| [file exists "${gccpath}/libphobos/src/.libs/libgphobos.${shlib_ext}"] } {
- append flags "-L${gccpath}/libphobos/src/.libs "
+ if { $target_wants_B_option } {
+ append flags "-B${gccpath}/libphobos/src/.libs "
+ } else {
+ append flags "-L${gccpath}/libphobos/src/.libs "
+ }
append ld_library_path ":${gccpath}/libphobos/src/.libs"
}
# Static linking is default. If only the shared lib is available adjust
@@ -163,7 +189,11 @@ proc gdc_link_flags { paths } {
if $include_cxx_flags {
if { [file exists "${gccpath}/libstdc++-v3/src/.libs/libstdc++.a"] \
|| [file exists "${gccpath}/libstdc++-v3/src/.libs/libstdc++.${shlib_ext}"] } {
- append flags "-L${gccpath}/libstdc++-v3/src/.libs "
+ if { $target_wants_B_option } {
+ append flags "-B${gccpath}/libstdc++-v3/src/.libs "
+ } else {
+ append flags "-L${gccpath}/libstdc++-v3/src/.libs "
+ }
append ld_library_path ":${gccpath}/libstdc++-v3/src/.libs"
}
}
@@ -173,7 +203,11 @@ proc gdc_link_flags { paths } {
set libphobos [lookfor_file ${tool_root_dir} libgphobos]
if { $libphobos != "" } {
- append flags "-B${libphobos} -L${libphobos} "
+ if { $target_wants_B_option } {
+ append flags "-B${libphobos} "
+ } else {
+ append flags " -L${libphobos} "
+ }
append ld_library_path ":${libphobos}"
}
set libiberty [lookfor_file ${tool_root_dir} libiberty]
diff --git a/gcc/testsuite/lib/hwasan-dg.exp b/gcc/testsuite/lib/hwasan-dg.exp
index e9c5ef6..8d66b4d 100644
--- a/gcc/testsuite/lib/hwasan-dg.exp
+++ b/gcc/testsuite/lib/hwasan-dg.exp
@@ -44,11 +44,25 @@ proc check_effective_target_hwaddress_exec {} {
#ifdef __cplusplus
extern "C" {
#endif
+ extern int arch_prctl (int, unsigned long int *);
extern int prctl(int, unsigned long, unsigned long, unsigned long, unsigned long);
#ifdef __cplusplus
}
#endif
int main (void) {
+ #ifdef __x86_64__
+ # ifdef __LP64__
+ # define ARCH_GET_UNTAG_MASK 0x4001
+ # define LAM_U57_MASK (0x3fULL << 57)
+ unsigned long mask = 0;
+ if (arch_prctl(ARCH_GET_UNTAG_MASK, &mask) != 0)
+ return 1;
+ if (mask != ~LAM_U57_MASK)
+ return 1;
+ return 0;
+ # endif
+ return 1;
+ #else
#define PR_SET_TAGGED_ADDR_CTRL 55
#define PR_GET_TAGGED_ADDR_CTRL 56
#define PR_TAGGED_ADDR_ENABLE (1UL << 0)
@@ -58,6 +72,7 @@ proc check_effective_target_hwaddress_exec {} {
|| !prctl(PR_GET_TAGGED_ADDR_CTRL, 0, 0, 0, 0))
return 1;
return 0;
+ #endif
}
}] {
return 0;
@@ -102,6 +117,12 @@ proc hwasan_init { args } {
setenv HWASAN_OPTIONS "random_tags=0"
+ if [istarget x86_64-*-*] {
+ set target_hwasan_flags "-mlam=u57"
+ } else {
+ set target_hwasan_flags ""
+ }
+
set link_flags ""
if ![is_remote host] {
if [info exists TOOL_OPTIONS] {
@@ -119,12 +140,12 @@ proc hwasan_init { args } {
if [info exists ALWAYS_CXXFLAGS] {
set hwasan_saved_ALWAYS_CXXFLAGS $ALWAYS_CXXFLAGS
set ALWAYS_CXXFLAGS [concat "{ldflags=$link_flags}" $ALWAYS_CXXFLAGS]
- set ALWAYS_CXXFLAGS [concat "{additional_flags=-fsanitize=hwaddress --param hwasan-random-frame-tag=0 -g $include_flags}" $ALWAYS_CXXFLAGS]
+ set ALWAYS_CXXFLAGS [concat "{additional_flags=-fsanitize=hwaddress $target_hwasan_flags --param hwasan-random-frame-tag=0 -g $include_flags}" $ALWAYS_CXXFLAGS]
} else {
if [info exists TEST_ALWAYS_FLAGS] {
- set TEST_ALWAYS_FLAGS "$link_flags -fsanitize=hwaddress --param hwasan-random-frame-tag=0 -g $include_flags $TEST_ALWAYS_FLAGS"
+ set TEST_ALWAYS_FLAGS "$link_flags -fsanitize=hwaddress $target_hwasan_flags --param hwasan-random-frame-tag=0 -g $include_flags $TEST_ALWAYS_FLAGS"
} else {
- set TEST_ALWAYS_FLAGS "$link_flags -fsanitize=hwaddress --param hwasan-random-frame-tag=0 -g $include_flags"
+ set TEST_ALWAYS_FLAGS "$link_flags -fsanitize=hwaddress $target_hwasan_flags --param hwasan-random-frame-tag=0 -g $include_flags"
}
}
}
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index fac32fb..8aefb32 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -1304,10 +1304,6 @@ proc check_stack_check_available { stack_kind } {
# Return 1 if the target supports stack scrubbing.
proc check_effective_target_strub {} {
- # strub is not supported on AIX.
- if { [istarget powerpc*-*-aix*] } {
- return 0
- }
return [check_no_compiler_messages strub assembly {
void __attribute__ ((__strub__)) fn (void) {}
} ""]
@@ -1391,10 +1387,16 @@ proc check_effective_target_aarch64_tlsle32 { } {
proc check_effective_target_shared { } {
# Note that M68K has a multilib that supports -fpic but not
# -fPIC, so we need to check both. We test with a program that
- # requires GOT references.
+ # requires GOT references, and with a libc symbol that would
+ # bring in significant parts of a static-only libc. Absent a
+ # shared libc, this would make -shared tests fail, so we don't
+ # want to enable the shared effective target then.
return [check_no_compiler_messages shared executable {
+ #include <stdlib.h>
extern int foo (void); extern int bar;
- int baz (void) { return foo () + bar; }
+ char *baz (void) {
+ return foo () + (char*) malloc (bar);
+ }
} "-shared -fpic"]
}
@@ -1956,6 +1958,18 @@ proc check_effective_target_riscv_zbb { } {
}]
}
+# Return 1 if the target arch supports the XTheadVector extension, 0 otherwise.
+# Cache the result.
+
+proc check_effective_target_riscv_xtheadvector { } {
+ return [check_no_compiler_messages riscv_ext_xtheadvector assembly {
+ #ifndef __riscv_xtheadvector
+ #error "Not __riscv_xtheadvector"
+ #endif
+ }]
+}
+
+
# Return 1 if we can execute code when using dg-add-options riscv_v
proc check_effective_target_riscv_v_ok { } {
@@ -9074,11 +9088,14 @@ proc check_effective_target_vect_int_mult { } {
proc check_effective_target_vect_long_mult { } {
if { [istarget i?86-*-*] || [istarget x86_64-*-*]
|| ([istarget powerpc*-*-*]
- && [check_effective_target_powerpc_vsx_ok]
- && [check_effective_target_has_arch_pwr10])
+ && ([check_effective_target_ilp32]
+ || ([check_effective_target_powerpc_vsx_ok]
+ && [check_effective_target_has_arch_pwr10])))
|| [is-effective-target arm_neon]
|| ([istarget sparc*-*-*] && [check_effective_target_ilp32])
- || [istarget aarch64*-*-*]
+ || ([istarget aarch64*-*-*]
+ && ([check_effective_target_ilp32]
+ || [check_effective_target_aarch64_sve]))
|| ([istarget mips*-*-*]
&& [et-is-effective-target mips_msa])
|| ([istarget riscv*-*-*]
@@ -11755,13 +11772,11 @@ proc check_vect_support_and_set_flags { } {
set dg-do-what-default run
} elseif [istarget riscv*-*-*] {
if [check_effective_target_riscv_v] {
- lappend DEFAULT_VECTCFLAGS "--param" "riscv-vector-abi"
set dg-do-what-default run
} else {
foreach item [add_options_for_riscv_v ""] {
lappend DEFAULT_VECTCFLAGS $item
}
- lappend DEFAULT_VECTCFLAGS "--param" "riscv-vector-abi"
set dg-do-what-default compile
}
} elseif [istarget loongarch*-*-*] {
@@ -13345,6 +13360,19 @@ proc check_effective_target_cv_elw { } {
} "-march=rv32i_xcvelw" ]
}
+# Return 1 if the CORE-V SIMD extension is available.
+proc check_effective_target_cv_simd { } {
+ if { !([istarget riscv*-*-*]) } {
+ return 0
+ }
+ return [check_no_compiler_messages cv_simd object {
+ void foo (void)
+ {
+ asm ("cv.add.sc.b x0, x0, x0");
+ }
+ } "-march=rv32i_xcvsimd" ]
+}
+
proc check_effective_target_loongarch_sx { } {
return [check_no_compiler_messages loongarch_lsx assembly {
#if !defined(__loongarch_sx)
diff --git a/gcc/testsuite/obj-c++.dg/encode-10.mm b/gcc/testsuite/obj-c++.dg/encode-10.mm
index 2b3af88..2477400 100644
--- a/gcc/testsuite/obj-c++.dg/encode-10.mm
+++ b/gcc/testsuite/obj-c++.dg/encode-10.mm
@@ -1,5 +1,4 @@
/* Test for @encode in templates. */
-/* { dg-options "-lobjc" } */
/* { dg-do run } */
#include <string.h>
#include <stdlib.h>
diff --git a/gcc/testsuite/obj-c++.dg/encode-9.mm b/gcc/testsuite/obj-c++.dg/encode-9.mm
index 6b064df..4fdb5fa 100644
--- a/gcc/testsuite/obj-c++.dg/encode-9.mm
+++ b/gcc/testsuite/obj-c++.dg/encode-9.mm
@@ -1,5 +1,4 @@
/* Test than @encode is properly instantiated. */
-/* { dg-options "-lobjc" } */
/* { dg-do run } */
#include <string.h>
diff --git a/gcc/toplev.cc b/gcc/toplev.cc
index 55636ff..175d4cd 100644
--- a/gcc/toplev.cc
+++ b/gcc/toplev.cc
@@ -2323,11 +2323,8 @@ toplev::main (int argc, char **argv)
emit some diagnostics here. */
invoke_plugin_callbacks (PLUGIN_FINISH, NULL);
- if (flag_diagnostics_generate_patch)
+ if (auto edit_context_ptr = global_dc->get_edit_context ())
{
- auto edit_context_ptr = global_dc->get_edit_context ();
- gcc_assert (edit_context_ptr);
-
pretty_printer pp;
pp_show_color (&pp) = pp_show_color (global_dc->printer);
edit_context_ptr->print_diff (&pp, true);
diff --git a/gcc/tree-data-ref.cc b/gcc/tree-data-ref.cc
index ae55bf6..f37734b 100644
--- a/gcc/tree-data-ref.cc
+++ b/gcc/tree-data-ref.cc
@@ -1182,7 +1182,12 @@ dr_analyze_innermost (innermost_loop_behavior *drb, tree ref,
base = TREE_OPERAND (base, 0);
}
else
- base = build_fold_addr_expr (base);
+ {
+ if (may_be_nonaddressable_p (base))
+ return opt_result::failure_at (stmt,
+ "failed: base not addressable.\n");
+ base = build_fold_addr_expr (base);
+ }
if (in_loop)
{
diff --git a/gcc/tree-inline.cc b/gcc/tree-inline.cc
index 17628a3..75c10eb 100644
--- a/gcc/tree-inline.cc
+++ b/gcc/tree-inline.cc
@@ -2988,20 +2988,19 @@ redirect_all_calls (copy_body_data * id, basic_block bb)
struct cgraph_edge *edge = id->dst_node->get_edge (stmt);
if (edge)
{
+ if (!id->killed_new_ssa_names)
+ id->killed_new_ssa_names = new hash_set<tree> (16);
gimple *new_stmt
- = cgraph_edge::redirect_call_stmt_to_callee (edge);
- /* If IPA-SRA transformation, run as part of edge redirection,
- removed the LHS because it is unused, save it to
- killed_new_ssa_names so that we can prune it from debug
- statements. */
+ = cgraph_edge::redirect_call_stmt_to_callee (edge,
+ id->killed_new_ssa_names);
if (old_lhs
&& TREE_CODE (old_lhs) == SSA_NAME
&& !gimple_call_lhs (new_stmt))
- {
- if (!id->killed_new_ssa_names)
- id->killed_new_ssa_names = new hash_set<tree> (16);
- id->killed_new_ssa_names->add (old_lhs);
- }
+ /* In case of IPA-SRA removing the LHS, the name should have
+ been already added to the hash. But in case of redirecting
+ to builtin_unreachable it was not and the name still should
+ be pruned from debug statements. */
+ id->killed_new_ssa_names->add (old_lhs);
if (stmt == last && id->call_stmt && maybe_clean_eh_stmt (stmt))
gimple_purge_dead_eh_edges (bb);
@@ -3328,8 +3327,12 @@ copy_body (copy_body_data *id,
body = copy_cfg_body (id, entry_block_map, exit_block_map,
new_entry);
copy_debug_stmts (id);
- delete id->killed_new_ssa_names;
- id->killed_new_ssa_names = NULL;
+ if (id->killed_new_ssa_names)
+ {
+ ipa_release_ssas_in_hash (id->killed_new_ssa_names);
+ delete id->killed_new_ssa_names;
+ id->killed_new_ssa_names = NULL;
+ }
return body;
}
@@ -3681,6 +3684,10 @@ initialize_inlined_parameters (copy_body_data *id, gimple *stmt,
setup_one_parameter (id, p, static_chain, fn, bb, &vars);
}
+ /* Reverse so the variables appear in the correct order in DWARF
+ debug info. */
+ vars = nreverse (vars);
+
declare_inline_vars (id->block, vars);
}
diff --git a/gcc/tree-nested.cc b/gcc/tree-nested.cc
index 96718a6..c8f07f7 100644
--- a/gcc/tree-nested.cc
+++ b/gcc/tree-nested.cc
@@ -3557,13 +3557,13 @@ finalize_nesting_tree_1 (struct nesting_info *root)
root->frame_decl, field, NULL_TREE);
arg3 = build_addr (x);
- x = builtin_decl_implicit (BUILT_IN_NESTED_PTR_CREATED);
+ x = builtin_decl_explicit (BUILT_IN_GCC_NESTED_PTR_CREATED);
stmt = gimple_build_call (x, 3, arg1, arg2, arg3);
gimple_seq_add_stmt (&stmt_list, stmt);
/* This call to delete the nested function trampoline is added to
the cleanup list, and called when we exit the current scope. */
- x = builtin_decl_implicit (BUILT_IN_NESTED_PTR_DELETED);
+ x = builtin_decl_explicit (BUILT_IN_GCC_NESTED_PTR_DELETED);
stmt = gimple_build_call (x, 0);
gimple_seq_add_stmt (&cleanup_list, stmt);
}
diff --git a/gcc/tree-sra.cc b/gcc/tree-sra.cc
index 6a1141b..f8e71ec 100644
--- a/gcc/tree-sra.cc
+++ b/gcc/tree-sra.cc
@@ -1559,15 +1559,32 @@ scan_function (void)
case GIMPLE_ASM:
{
gasm *asm_stmt = as_a <gasm *> (stmt);
- for (i = 0; i < gimple_asm_ninputs (asm_stmt); i++)
+ if (stmt_ends_bb_p (asm_stmt)
+ && !single_succ_p (gimple_bb (asm_stmt)))
{
- t = TREE_VALUE (gimple_asm_input_op (asm_stmt, i));
- ret |= build_access_from_expr (t, asm_stmt, false);
+ for (i = 0; i < gimple_asm_ninputs (asm_stmt); i++)
+ {
+ t = TREE_VALUE (gimple_asm_input_op (asm_stmt, i));
+ disqualify_base_of_expr (t, "OP of asm goto.");
+ }
+ for (i = 0; i < gimple_asm_noutputs (asm_stmt); i++)
+ {
+ t = TREE_VALUE (gimple_asm_output_op (asm_stmt, i));
+ disqualify_base_of_expr (t, "OP of asm goto.");
+ }
}
- for (i = 0; i < gimple_asm_noutputs (asm_stmt); i++)
+ else
{
- t = TREE_VALUE (gimple_asm_output_op (asm_stmt, i));
- ret |= build_access_from_expr (t, asm_stmt, true);
+ for (i = 0; i < gimple_asm_ninputs (asm_stmt); i++)
+ {
+ t = TREE_VALUE (gimple_asm_input_op (asm_stmt, i));
+ ret |= build_access_from_expr (t, asm_stmt, false);
+ }
+ for (i = 0; i < gimple_asm_noutputs (asm_stmt); i++)
+ {
+ t = TREE_VALUE (gimple_asm_output_op (asm_stmt, i));
+ ret |= build_access_from_expr (t, asm_stmt, true);
+ }
}
}
break;
diff --git a/gcc/tree-ssa-sccvn.cc b/gcc/tree-ssa-sccvn.cc
index 97f5c79..f0fa718 100644
--- a/gcc/tree-ssa-sccvn.cc
+++ b/gcc/tree-ssa-sccvn.cc
@@ -2287,7 +2287,12 @@ vn_walk_cb_data::push_partial_def (pd_data pd,
BITS_PER_UNIT
- (maxsizei % BITS_PER_UNIT));
if (INTEGRAL_TYPE_P (type))
- sz = GET_MODE_SIZE (SCALAR_INT_TYPE_MODE (type));
+ {
+ if (TYPE_MODE (type) != BLKmode)
+ sz = GET_MODE_SIZE (SCALAR_INT_TYPE_MODE (type));
+ else
+ sz = TREE_INT_CST_LOW (TYPE_SIZE_UNIT (type));
+ }
if (sz > needed_len)
{
memcpy (this_buffer + (sz - needed_len), buffer, needed_len);
@@ -2967,8 +2972,10 @@ vn_reference_lookup_3 (ao_ref *ref, tree vuse, void *data_,
}
else
{
- unsigned buflen = TREE_INT_CST_LOW (TYPE_SIZE_UNIT (vr->type)) + 1;
- if (INTEGRAL_TYPE_P (vr->type))
+ unsigned buflen
+ = TREE_INT_CST_LOW (TYPE_SIZE_UNIT (vr->type)) + 1;
+ if (INTEGRAL_TYPE_P (vr->type)
+ && TYPE_MODE (vr->type) != BLKmode)
buflen = GET_MODE_SIZE (SCALAR_INT_TYPE_MODE (vr->type)) + 1;
unsigned char *buf = XALLOCAVEC (unsigned char, buflen);
memset (buf, TREE_INT_CST_LOW (gimple_call_arg (def_stmt, 1)),
@@ -3165,7 +3172,12 @@ vn_reference_lookup_3 (ao_ref *ref, tree vuse, void *data_,
offset + maxsize - 1. */
HOST_WIDE_INT sz = maxsizei / BITS_PER_UNIT;
if (INTEGRAL_TYPE_P (type))
- sz = GET_MODE_SIZE (SCALAR_INT_TYPE_MODE (type));
+ {
+ if (TYPE_MODE (type) != BLKmode)
+ sz = GET_MODE_SIZE (SCALAR_INT_TYPE_MODE (type));
+ else
+ sz = TREE_INT_CST_LOW (TYPE_SIZE_UNIT (type));
+ }
amnt = ((unsigned HOST_WIDE_INT) offset2i + size2i
- offseti - maxsizei) % BITS_PER_UNIT;
if (amnt)
diff --git a/gcc/tree-ssa-strlen.cc b/gcc/tree-ssa-strlen.cc
index c20db7a..20540c5 100644
--- a/gcc/tree-ssa-strlen.cc
+++ b/gcc/tree-ssa-strlen.cc
@@ -1228,7 +1228,6 @@ get_range_strlen_dynamic (tree src, gimple *stmt,
{
tree type = vr.type ();
pdata->minlen = wide_int_to_tree (type, vr.lower_bound ());
- pdata->maxlen = wide_int_to_tree (type, vr.upper_bound ());
}
}
else
@@ -1253,9 +1252,21 @@ get_range_strlen_dynamic (tree src, gimple *stmt,
{
++off; /* Increment for the terminating nul. */
tree toffset = build_int_cst (size_type_node, off);
- pdata->maxlen = fold_build2 (MINUS_EXPR, size_type_node, size,
- toffset);
- pdata->maxbound = pdata->maxlen;
+ pdata->maxlen = fold_build2 (MINUS_EXPR, size_type_node,
+ size, toffset);
+ if (tree_int_cst_lt (pdata->maxlen, pdata->minlen))
+ /* This can happen when triggering UB, when base is an
+ array which is known to be filled with at least size
+ non-zero bytes. E.g. for
+ char a[2]; memcpy (a, "12", sizeof a);
+ We don't want to create an invalid range [2, 1]
+ where 2 comes from the number of non-zero bytes and
+ 1 from longest valid zero-terminated string that can
+ be stored in such an array, so pick just one of
+ those, pdata->minlen. See PR110603. */
+ pdata->maxlen = build_all_ones_cst (size_type_node);
+ else
+ pdata->maxbound = pdata->maxlen;
}
else
pdata->maxlen = build_all_ones_cst (size_type_node);
@@ -5033,6 +5044,9 @@ strlen_pass::handle_store (bool *zero_write)
if (si != NULL)
{
+ /* The count_nonzero_bytes call above might have unshared si.
+ Fetch it again from the vector. */
+ si = get_strinfo (idx);
/* The corresponding element is set to 1 if the first and last
element, respectively, of the sequence of characters being
written over the string described by SI ends before
diff --git a/gcc/tree-switch-conversion.cc b/gcc/tree-switch-conversion.cc
index 54aadf6..3a5b84c 100644
--- a/gcc/tree-switch-conversion.cc
+++ b/gcc/tree-switch-conversion.cc
@@ -423,6 +423,9 @@ switch_conversion::build_constructors ()
constructor_elt elt;
elt.index = int_const_binop (MINUS_EXPR, pos, m_range_min);
+ if (TYPE_PRECISION (TREE_TYPE (elt.index))
+ > TYPE_PRECISION (sizetype))
+ elt.index = fold_convert (sizetype, elt.index);
elt.value
= unshare_expr_without_location (m_default_values[k]);
m_constructors[k]->quick_push (elt);
@@ -452,6 +455,9 @@ switch_conversion::build_constructors ()
constructor_elt elt;
elt.index = int_const_binop (MINUS_EXPR, pos, m_range_min);
+ if (TYPE_PRECISION (TREE_TYPE (elt.index))
+ > TYPE_PRECISION (sizetype))
+ elt.index = fold_convert (sizetype, elt.index);
elt.value = unshare_expr_without_location (val);
m_constructors[j]->quick_push (elt);
@@ -543,7 +549,10 @@ switch_conversion::array_value_type (tree type, int num)
type = TYPE_MAIN_VARIANT (type);
- if (!INTEGRAL_TYPE_P (type))
+ if (!INTEGRAL_TYPE_P (type)
+ || (TREE_CODE (type) == BITINT_TYPE
+ && (TYPE_PRECISION (type) > MAX_FIXED_MODE_SIZE
+ || TYPE_MODE (type) == BLKmode)))
return type;
scalar_int_mode type_mode = SCALAR_INT_TYPE_MODE (type);
@@ -707,7 +716,7 @@ void
switch_conversion::build_arrays ()
{
tree arr_index_type;
- tree tidx, sub, utype;
+ tree tidx, sub, utype, tidxtype;
gimple *stmt;
gimple_stmt_iterator gsi;
gphi_iterator gpi;
@@ -720,14 +729,23 @@ switch_conversion::build_arrays ()
utype = TREE_TYPE (m_index_expr);
if (TREE_TYPE (utype))
utype = lang_hooks.types.type_for_mode (TYPE_MODE (TREE_TYPE (utype)), 1);
+ else if (TREE_CODE (utype) == BITINT_TYPE
+ && (TYPE_PRECISION (utype) > MAX_FIXED_MODE_SIZE
+ || TYPE_MODE (utype) == BLKmode))
+ utype = unsigned_type_for (utype);
else
utype = lang_hooks.types.type_for_mode (TYPE_MODE (utype), 1);
+ if (TYPE_PRECISION (utype) > TYPE_PRECISION (sizetype))
+ tidxtype = sizetype;
+ else
+ tidxtype = utype;
arr_index_type = build_index_type (m_range_size);
- tidx = make_ssa_name (utype);
+ tidx = make_ssa_name (tidxtype);
sub = fold_build2_loc (loc, MINUS_EXPR, utype,
fold_convert_loc (loc, utype, m_index_expr),
fold_convert_loc (loc, utype, m_range_min));
+ sub = fold_convert (tidxtype, sub);
sub = force_gimple_operand_gsi (&gsi, sub,
false, NULL, true, GSI_SAME_STMT);
stmt = gimple_build_assign (tidx, sub);
diff --git a/gcc/tree-vect-loop-manip.cc b/gcc/tree-vect-loop-manip.cc
index 983ed2e..3f974d6 100644
--- a/gcc/tree-vect-loop-manip.cc
+++ b/gcc/tree-vect-loop-manip.cc
@@ -1629,11 +1629,17 @@ slpeel_tree_duplicate_loop_to_edge_cfg (class loop *loop, edge loop_exit,
alt_loop_exit_block = split_edge (exit);
if (!need_virtual_phi)
continue;
- if (vphi_def && !vphi)
- vphi = create_phi_node (copy_ssa_name (vphi_def),
- alt_loop_exit_block);
if (vphi_def)
- add_phi_arg (vphi, vphi_def, exit, UNKNOWN_LOCATION);
+ {
+ if (!vphi)
+ vphi = create_phi_node (copy_ssa_name (vphi_def),
+ alt_loop_exit_block);
+ else
+ /* Edge redirection might re-allocate the PHI node
+ so we have to rediscover it. */
+ vphi = get_virtual_phi (alt_loop_exit_block);
+ add_phi_arg (vphi, vphi_def, exit, UNKNOWN_LOCATION);
+ }
}
set_immediate_dominator (CDI_DOMINATORS, new_preheader,
@@ -1676,65 +1682,74 @@ slpeel_tree_duplicate_loop_to_edge_cfg (class loop *loop, edge loop_exit,
}
/* Create the merge PHI nodes in new_preheader and populate the
- arguments for the main exit. */
- for (auto gsi_from = gsi_start_phis (loop->header),
- gsi_to = gsi_start_phis (new_loop->header);
- !gsi_end_p (gsi_from) && !gsi_end_p (gsi_to);
- gsi_next (&gsi_from), gsi_next (&gsi_to))
+ arguments for the exits. */
+ if (multiple_exits_p)
{
- gimple *from_phi = gsi_stmt (gsi_from);
- gimple *to_phi = gsi_stmt (gsi_to);
- tree new_arg = PHI_ARG_DEF_FROM_EDGE (from_phi,
- loop_latch_edge (loop));
-
- /* Check if we've already created a new phi node during edge
- redirection. If we have, only propagate the value
- downwards in case there is no merge block. */
- if (tree *res = new_phi_args.get (new_arg))
+ for (auto gsi_from = gsi_start_phis (loop->header),
+ gsi_to = gsi_start_phis (new_loop->header);
+ !gsi_end_p (gsi_from) && !gsi_end_p (gsi_to);
+ gsi_next (&gsi_from), gsi_next (&gsi_to))
{
- if (multiple_exits_p)
- new_arg = *res;
+ gimple *from_phi = gsi_stmt (gsi_from);
+ gimple *to_phi = gsi_stmt (gsi_to);
+
+ /* When the vector loop is peeled then we need to use the
+ value at start of the loop, otherwise the main loop exit
+ should use the final iter value. */
+ tree new_arg;
+ if (peeled_iters)
+ new_arg = gimple_phi_result (from_phi);
else
+ new_arg = PHI_ARG_DEF_FROM_EDGE (from_phi,
+ loop_latch_edge (loop));
+
+ /* Check if we've already created a new phi node during edge
+ redirection and re-use it if so. Otherwise create a
+ LC PHI node to feed the merge PHI. */
+ tree *res;
+ if (virtual_operand_p (new_arg))
{
- adjust_phi_and_debug_stmts (to_phi, loop_entry, *res);
- continue;
+ /* Use the existing virtual LC SSA from exit block. */
+ gphi *vphi = get_virtual_phi (main_loop_exit_block);
+ /* ??? When the exit yields to a path without
+ any virtual use we can miss a LC PHI for the
+ live virtual operand. Simply choosing the
+ one live at the start of the loop header isn't
+ correct, but we should get here only with
+ early-exit vectorization which will move all
+ defs after the main exit, so leave a temporarily
+ wrong virtual operand in place. This happens
+ for gcc.dg/pr113659.c. */
+ if (vphi)
+ new_arg = gimple_phi_result (vphi);
+ else
+ new_arg = gimple_phi_result (from_phi);
}
- }
- /* If we have multiple exits and the vector loop is peeled then we
- need to use the value at start of loop. If we're looking at
- virtual operands we have to keep the original link. Virtual
- operands don't all become the same because we'll corrupt the
- vUSE chains among others. */
- if (peeled_iters)
- {
- tree tmp_arg = gimple_phi_result (from_phi);
- /* Similar to the single exit case, If we have an existing
- LCSSA variable thread through the original value otherwise
- skip it and directly use the final value. */
- if (tree *res = new_phi_args.get (tmp_arg))
+ else if ((res = new_phi_args.get (new_arg)))
new_arg = *res;
- else if (!virtual_operand_p (new_arg))
- new_arg = tmp_arg;
- }
-
- tree new_res = copy_ssa_name (gimple_phi_result (from_phi));
- gphi *lcssa_phi = create_phi_node (new_res, new_preheader);
+ else
+ {
+ /* Create the LC PHI node for the exit. */
+ tree new_def = copy_ssa_name (new_arg);
+ gphi *lc_phi
+ = create_phi_node (new_def, main_loop_exit_block);
+ SET_PHI_ARG_DEF (lc_phi, 0, new_arg);
+ new_arg = new_def;
+ }
- /* Otherwise, main loop exit should use the final iter value. */
- if (multiple_exits_p)
- SET_PHI_ARG_DEF_ON_EDGE (lcssa_phi,
- single_succ_edge (main_loop_exit_block),
- new_arg);
- else
- SET_PHI_ARG_DEF_ON_EDGE (lcssa_phi, loop_exit, new_arg);
+ /* Create the PHI node in the merge block merging the
+ main and early exit values. */
+ tree new_res = copy_ssa_name (gimple_phi_result (from_phi));
+ gphi *lcssa_phi = create_phi_node (new_res, new_preheader);
+ edge main_e = single_succ_edge (main_loop_exit_block);
+ SET_PHI_ARG_DEF_ON_EDGE (lcssa_phi, main_e, new_arg);
- adjust_phi_and_debug_stmts (to_phi, loop_entry, new_res);
- }
+ /* And adjust the epilog entry value. */
+ adjust_phi_and_debug_stmts (to_phi, loop_entry, new_res);
+ }
- /* Now fill in the values for the merge PHI in new_preheader
- for the alternative exits. */
- if (multiple_exits_p)
- {
+ /* After creating the merge PHIs handle the early exits those
+ should use the values at the start of the loop. */
for (auto gsi_from = gsi_start_phis (loop->header),
gsi_to = gsi_start_phis (new_preheader);
!gsi_end_p (gsi_from) && !gsi_end_p (gsi_to);
@@ -1748,10 +1763,62 @@ slpeel_tree_duplicate_loop_to_edge_cfg (class loop *loop, edge loop_exit,
if (virtual_operand_p (alt_arg))
{
gphi *vphi = get_virtual_phi (alt_loop_exit_block);
- alt_arg = gimple_phi_result (vphi);
+ /* ??? When the exit yields to a path without
+ any virtual use we can miss a LC PHI for the
+ live virtual operand. Simply choosing the
+ one live at the start of the loop header isn't
+ correct, but we should get here only with
+ early-exit vectorization which will move all
+ defs after the main exit, so leave a temporarily
+ wrong virtual operand in place. This happens
+ for gcc.c-torture/execute/20150611-1.c */
+ if (vphi)
+ alt_arg = gimple_phi_result (vphi);
+ }
+ /* For other live args we didn't create LC PHI nodes.
+ Do so here. */
+ else
+ {
+ tree alt_def = copy_ssa_name (alt_arg);
+ gphi *lc_phi
+ = create_phi_node (alt_def, alt_loop_exit_block);
+ for (unsigned i = 0; i < gimple_phi_num_args (lc_phi);
+ ++i)
+ SET_PHI_ARG_DEF (lc_phi, i, alt_arg);
+ alt_arg = alt_def;
+ }
+ edge alt_e = single_succ_edge (alt_loop_exit_block);
+ SET_PHI_ARG_DEF_ON_EDGE (to_phi, alt_e, alt_arg);
+ }
+ }
+ /* For the single exit case only create the missing LC PHI nodes
+ for the continuation of the loop IVs that are not also already
+ reductions and thus had LC PHI nodes on the exit already. */
+ else
+ {
+ for (auto gsi_from = gsi_start_phis (loop->header),
+ gsi_to = gsi_start_phis (new_loop->header);
+ !gsi_end_p (gsi_from) && !gsi_end_p (gsi_to);
+ gsi_next (&gsi_from), gsi_next (&gsi_to))
+ {
+ gimple *from_phi = gsi_stmt (gsi_from);
+ gimple *to_phi = gsi_stmt (gsi_to);
+ tree new_arg = PHI_ARG_DEF_FROM_EDGE (from_phi,
+ loop_latch_edge (loop));
+
+ /* Check if we've already created a new phi node during edge
+ redirection. If we have, only propagate the value
+ downwards. */
+ if (tree *res = new_phi_args.get (new_arg))
+ {
+ adjust_phi_and_debug_stmts (to_phi, loop_entry, *res);
+ continue;
}
- edge main_e = single_succ_edge (alt_loop_exit_block);
- SET_PHI_ARG_DEF_ON_EDGE (to_phi, main_e, alt_arg);
+
+ tree new_res = copy_ssa_name (gimple_phi_result (from_phi));
+ gphi *lcssa_phi = create_phi_node (new_res, new_preheader);
+ SET_PHI_ARG_DEF_ON_EDGE (lcssa_phi, loop_exit, new_arg);
+ adjust_phi_and_debug_stmts (to_phi, loop_entry, new_res);
}
}
}
diff --git a/gcc/tree-vect-loop.cc b/gcc/tree-vect-loop.cc
index 18633fe..30b90d9 100644
--- a/gcc/tree-vect-loop.cc
+++ b/gcc/tree-vect-loop.cc
@@ -977,8 +977,8 @@ vec_init_loop_exit_info (class loop *loop)
if (exits.length () == 1)
return exits[0];
- /* If we have multiple exits we only support counting IV at the moment. Analyze
- all exits and return one */
+ /* If we have multiple exits we only support counting IV at the moment.
+ Analyze all exits and return the last one we can analyze. */
class tree_niter_desc niter_desc;
edge candidate = NULL;
for (edge exit : exits)
@@ -990,7 +990,14 @@ vec_init_loop_exit_info (class loop *loop)
&& !chrec_contains_undetermined (niter_desc.niter))
{
tree may_be_zero = niter_desc.may_be_zero;
- if (integer_zerop (may_be_zero)
+ if ((integer_zerop (may_be_zero)
+ /* As we are handling may_be_zero that's not false by
+ rewriting niter to may_be_zero ? 0 : niter we require
+ an empty latch. */
+ || (single_pred_p (loop->latch)
+ && exit->src == single_pred (loop->latch)
+ && (integer_nonzerop (may_be_zero)
+ || COMPARISON_CLASS_P (may_be_zero))))
&& (!candidate
|| dominated_by_p (CDI_DOMINATORS, exit->src,
candidate->src)))
@@ -1745,14 +1752,18 @@ vect_analyze_loop_form (class loop *loop, vect_loop_form_info *info)
/* Check if we have any control flow that doesn't leave the loop. */
class loop *v_loop = loop->inner ? loop->inner : loop;
- basic_block *bbs= get_loop_body (v_loop);
+ basic_block *bbs = get_loop_body (v_loop);
for (unsigned i = 0; i < v_loop->num_nodes; i++)
if (EDGE_COUNT (bbs[i]->succs) != 1
&& (EDGE_COUNT (bbs[i]->succs) != 2
|| !loop_exits_from_bb_p (bbs[i]->loop_father, bbs[i])))
- return opt_result::failure_at (vect_location,
- "not vectorized:"
- " unsupported control flow in loop.\n");
+ {
+ free (bbs);
+ return opt_result::failure_at (vect_location,
+ "not vectorized:"
+ " unsupported control flow in loop.\n");
+ }
+ free (bbs);
/* Different restrictions apply when we are considering an inner-most loop,
vs. an outer (nested) loop.
@@ -1761,17 +1772,7 @@ vect_analyze_loop_form (class loop *loop, vect_loop_form_info *info)
info->inner_loop_cond = NULL;
if (!loop->inner)
{
- /* Inner-most loop. We currently require that the number of BBs is
- exactly 2 (the header and latch). Vectorizable inner-most loops
- look like this:
-
- (pre-header)
- |
- header <--------+
- | | |
- | +--> latch --+
- |
- (exit-bb) */
+ /* Inner-most loop. */
if (empty_block_p (loop->header))
return opt_result::failure_at (vect_location,
@@ -1783,7 +1784,8 @@ vect_analyze_loop_form (class loop *loop, vect_loop_form_info *info)
edge entryedge;
/* Nested loop. We currently require that the loop is doubly-nested,
- contains a single inner loop, and the number of BBs is exactly 5.
+ contains a single inner loop with a single exit to the block
+ with the single exit condition in the outer loop.
Vectorizable outer-loops look like this:
(pre-header)
@@ -1796,7 +1798,7 @@ vect_analyze_loop_form (class loop *loop, vect_loop_form_info *info)
|
(exit-bb)
- The inner-loop has the properties expected of inner-most loops
+ The inner-loop also has the properties expected of inner-most loops
as described above. */
if ((loop->inner)->inner || (loop->inner)->next)
@@ -1845,16 +1847,13 @@ vect_analyze_loop_form (class loop *loop, vect_loop_form_info *info)
"not vectorized:"
" too many incoming edges.\n");
- /* We assume that the loop exit condition is at the end of the loop. i.e,
- that the loop is represented as a do-while (with a proper if-guard
- before the loop if needed), where the loop header contains all the
- executable statements, and the latch is empty. */
+ /* We assume that the latch is empty. */
if (!empty_block_p (loop->latch)
|| !gimple_seq_empty_p (phi_nodes (loop->latch)))
return opt_result::failure_at (vect_location,
"not vectorized: latch block not empty.\n");
- /* Make sure the exit is not abnormal. */
+ /* Make sure there is no abnormal exit. */
auto_vec<edge> exits = get_loop_exit_edges (loop);
for (edge e : exits)
{
@@ -1868,7 +1867,6 @@ vect_analyze_loop_form (class loop *loop, vect_loop_form_info *info)
= vect_get_loop_niters (loop, exit_e, &info->assumptions,
&info->number_of_iterations,
&info->number_of_iterationsm1);
-
if (info->conds.is_empty ())
return opt_result::failure_at
(vect_location,
@@ -5899,25 +5897,26 @@ vect_create_partial_epilog (tree vec_def, tree vectype, code_helper code,
}
/* Retrieves the definining statement to be used for a reduction.
- For MAIN_EXIT_P we use the current VEC_STMTs and otherwise we look at
- the reduction definitions. */
+ For LAST_VAL_REDUC_P we use the current VEC_STMTs which correspond to the
+ final value after vectorization and otherwise we look at the reduction
+ definitions to get the first. */
tree
vect_get_vect_def (stmt_vec_info reduc_info, slp_tree slp_node,
- slp_instance slp_node_instance, bool main_exit_p, unsigned i,
- vec <gimple *> &vec_stmts)
+ slp_instance slp_node_instance, bool last_val_reduc_p,
+ unsigned i, vec <gimple *> &vec_stmts)
{
tree def;
if (slp_node)
{
- if (!main_exit_p)
+ if (!last_val_reduc_p)
slp_node = slp_node_instance->reduc_phis;
def = vect_get_slp_vect_def (slp_node, i);
}
else
{
- if (!main_exit_p)
+ if (!last_val_reduc_p)
reduc_info = STMT_VINFO_REDUC_DEF (vect_orig_stmt (reduc_info));
vec_stmts = STMT_VINFO_VEC_STMTS (reduc_info);
def = gimple_get_lhs (vec_stmts[0]);
@@ -5989,7 +5988,8 @@ vect_create_epilog_for_reduction (loop_vec_info loop_vinfo,
loop-closed PHI of the inner loop which we remember as
def for the reduction PHI generation. */
bool double_reduc = false;
- bool main_exit_p = LOOP_VINFO_IV_EXIT (loop_vinfo) == loop_exit;
+ bool last_val_reduc_p = LOOP_VINFO_IV_EXIT (loop_vinfo) == loop_exit
+ && !LOOP_VINFO_EARLY_BREAKS_VECT_PEELED (loop_vinfo);
stmt_vec_info rdef_info = stmt_info;
if (STMT_VINFO_DEF_TYPE (stmt_info) == vect_double_reduction_def)
{
@@ -6024,7 +6024,6 @@ vect_create_epilog_for_reduction (loop_vec_info loop_vinfo,
int j, i;
vec<tree> &scalar_results = reduc_info->reduc_scalar_results;
unsigned int group_size = 1, k;
- auto_vec<gimple *> phis;
/* SLP reduction without reduction chain, e.g.,
# a1 = phi <a2, a0>
# b1 = phi <b2, b0>
@@ -6240,7 +6239,7 @@ vect_create_epilog_for_reduction (loop_vec_info loop_vinfo,
{
gimple_seq stmts = NULL;
def = vect_get_vect_def (rdef_info, slp_node, slp_node_instance,
- main_exit_p, i, vec_stmts);
+ last_val_reduc_p, i, vec_stmts);
for (j = 0; j < ncopies; j++)
{
tree new_def = copy_ssa_name (def);
@@ -6937,12 +6936,12 @@ vect_create_epilog_for_reduction (loop_vec_info loop_vinfo,
use <s_out4> */
gcc_assert (live_out_stmts.size () == scalar_results.length ());
+ auto_vec<gimple *> phis;
for (k = 0; k < live_out_stmts.size (); k++)
{
stmt_vec_info scalar_stmt_info = vect_orig_stmt (live_out_stmts[k]);
scalar_dest = gimple_get_lhs (scalar_stmt_info->stmt);
- phis.create (3);
/* Find the loop-closed-use at the loop exit of the original scalar
result. (The reduction result is expected to have two immediate uses,
one at the latch block, and one at the loop exit). For double
@@ -6995,7 +6994,7 @@ vect_create_epilog_for_reduction (loop_vec_info loop_vinfo,
}
}
- phis.release ();
+ phis.truncate (0);
}
}
@@ -10717,18 +10716,6 @@ vectorizable_live_operation_1 (loop_vec_info loop_vinfo,
return new_tree;
}
-/* Find the edge that's the final one in the path from SRC to DEST and
- return it. This edge must exist in at most one forwarder edge between. */
-
-static edge
-find_connected_edge (edge src, basic_block dest)
-{
- if (src->dest == dest)
- return src;
-
- return find_edge (src->dest, dest);
-}
-
/* Function vectorizable_live_operation.
STMT_INFO computes a value that is used outside the loop. Check if
@@ -10971,13 +10958,8 @@ vectorizable_live_operation (vec_info *vinfo, stmt_vec_info stmt_info,
{
edge e = gimple_phi_arg_edge (as_a <gphi *> (use_stmt),
phi_arg_index_from_use (use_p));
- bool main_exit_edge = e == main_e
- || find_connected_edge (main_e, e->src);
-
- /* Early exits have an merge block, we want the merge block itself
- so use ->src. For main exit the merge block is the
- destination. */
- basic_block dest = main_exit_edge ? main_e->dest : e->src;
+ gcc_assert (loop_exit_edge_p (loop, e));
+ bool main_exit_edge = e == main_e;
tree tmp_vec_lhs = vec_lhs;
tree tmp_bitstart = bitstart;
@@ -10995,22 +10977,18 @@ vectorizable_live_operation (vec_info *vinfo, stmt_vec_info stmt_info,
gimple_stmt_iterator exit_gsi;
tree new_tree
= vectorizable_live_operation_1 (loop_vinfo, stmt_info,
- dest, vectype, ncopies,
+ e->dest, vectype, ncopies,
slp_node, bitsize,
tmp_bitstart, tmp_vec_lhs,
lhs_type, &exit_gsi);
- if (gimple_phi_num_args (use_stmt) == 1)
- {
- auto gsi = gsi_for_stmt (use_stmt);
- remove_phi_node (&gsi, false);
- tree lhs_phi = gimple_phi_result (use_stmt);
- gimple *copy = gimple_build_assign (lhs_phi, new_tree);
- gsi_insert_before (&exit_gsi, copy, GSI_SAME_STMT);
- }
- else
- SET_PHI_ARG_DEF (use_stmt, e->dest_idx, new_tree);
- }
+ auto gsi = gsi_for_stmt (use_stmt);
+ remove_phi_node (&gsi, false);
+ tree lhs_phi = gimple_phi_result (use_stmt);
+ gimple *copy = gimple_build_assign (lhs_phi, new_tree);
+ gsi_insert_before (&exit_gsi, copy, GSI_SAME_STMT);
+ break;
+ }
/* There a no further out-of-loop uses of lhs by LC-SSA construction. */
FOR_EACH_IMM_USE_STMT (use_stmt, imm_iter, lhs)
diff --git a/gcc/tree-vect-patterns.cc b/gcc/tree-vect-patterns.cc
index f1a95ef..d562f57 100644
--- a/gcc/tree-vect-patterns.cc
+++ b/gcc/tree-vect-patterns.cc
@@ -3164,46 +3164,9 @@ vect_recog_over_widening_pattern (vec_info *vinfo,
tree ops[3] = {};
for (unsigned int i = 1; i < first_op; ++i)
ops[i - 1] = gimple_op (last_stmt, i);
- /* For right shifts limit the shift operand. */
vect_convert_inputs (vinfo, last_stmt_info, nops, &ops[first_op - 1],
op_type, &unprom[0], op_vectype);
- /* Limit shift operands. */
- if (code == RSHIFT_EXPR)
- {
- wide_int min_value, max_value;
- if (TREE_CODE (ops[1]) == INTEGER_CST)
- ops[1] = wide_int_to_tree (op_type,
- wi::umin (wi::to_wide (ops[1]),
- new_precision - 1));
- else if (!vect_get_range_info (ops[1], &min_value, &max_value)
- || wi::ge_p (max_value, new_precision, TYPE_SIGN (op_type)))
- {
- /* ??? Note the following bad for SLP as that only supports
- same argument widened shifts and it un-CSEs same arguments. */
- tree new_var = vect_recog_temp_ssa_var (op_type, NULL);
- gimple *pattern_stmt
- = gimple_build_assign (new_var, MIN_EXPR, ops[1],
- build_int_cst (op_type, new_precision - 1));
- gimple_set_location (pattern_stmt, gimple_location (last_stmt));
- if (ops[1] == unprom[1].op && unprom[1].dt == vect_external_def)
- {
- if (edge e = vect_get_external_def_edge (vinfo, ops[1]))
- {
- basic_block new_bb
- = gsi_insert_on_edge_immediate (e, pattern_stmt);
- gcc_assert (!new_bb);
- }
- else
- return NULL;
- }
- else
- append_pattern_def_seq (vinfo, last_stmt_info, pattern_stmt,
- op_vectype);
- ops[1] = new_var;
- }
- }
-
/* Use the operation to produce a result of type OP_TYPE. */
tree new_var = vect_recog_temp_ssa_var (op_type, NULL);
gimple *pattern_stmt = gimple_build_assign (new_var, code,
@@ -6359,9 +6322,11 @@ vect_truncatable_operation_p (tree_code code)
{
switch (code)
{
+ case NEGATE_EXPR:
case PLUS_EXPR:
case MINUS_EXPR:
case MULT_EXPR:
+ case BIT_NOT_EXPR:
case BIT_AND_EXPR:
case BIT_IOR_EXPR:
case BIT_XOR_EXPR:
@@ -6520,38 +6485,85 @@ vect_determine_precisions_from_range (stmt_vec_info stmt_info, gassign *stmt)
unsigned int nops = gimple_num_ops (stmt);
if (!vect_truncatable_operation_p (code))
- /* Check that all relevant input operands are compatible, and update
- [MIN_VALUE, MAX_VALUE] to include their ranges. */
- for (unsigned int i = 1; i < nops; ++i)
- {
- tree op = gimple_op (stmt, i);
- if (TREE_CODE (op) == INTEGER_CST)
- {
- /* Don't require the integer to have RHS_TYPE (which it might
- not for things like shift amounts, etc.), but do require it
- to fit the type. */
- if (!int_fits_type_p (op, type))
- return;
-
- min_value = wi::min (min_value, wi::to_wide (op, precision), sign);
- max_value = wi::max (max_value, wi::to_wide (op, precision), sign);
- }
- else if (TREE_CODE (op) == SSA_NAME)
- {
- /* Ignore codes that don't take uniform arguments. */
- if (!types_compatible_p (TREE_TYPE (op), type))
- return;
+ {
+ /* Handle operations that can be computed in type T if all inputs
+ and outputs can be represented in type T. Also handle left and
+ right shifts, where (in addition) the maximum shift amount must
+ be less than the number of bits in T. */
+ bool is_shift;
+ switch (code)
+ {
+ case LSHIFT_EXPR:
+ case RSHIFT_EXPR:
+ is_shift = true;
+ break;
- wide_int op_min_value, op_max_value;
- if (!vect_get_range_info (op, &op_min_value, &op_max_value))
- return;
+ case ABS_EXPR:
+ case MIN_EXPR:
+ case MAX_EXPR:
+ case TRUNC_DIV_EXPR:
+ case CEIL_DIV_EXPR:
+ case FLOOR_DIV_EXPR:
+ case ROUND_DIV_EXPR:
+ case EXACT_DIV_EXPR:
+ /* Modulus is excluded because it is typically calculated by doing
+ a division, for which minimum signed / -1 isn't representable in
+ the original signed type. We could take the division range into
+ account instead, if handling modulus ever becomes important. */
+ is_shift = false;
+ break;
- min_value = wi::min (min_value, op_min_value, sign);
- max_value = wi::max (max_value, op_max_value, sign);
- }
- else
+ default:
return;
- }
+ }
+ for (unsigned int i = 1; i < nops; ++i)
+ {
+ tree op = gimple_op (stmt, i);
+ wide_int op_min_value, op_max_value;
+ if (TREE_CODE (op) == INTEGER_CST)
+ {
+ unsigned int op_precision = TYPE_PRECISION (TREE_TYPE (op));
+ op_min_value = op_max_value = wi::to_wide (op, op_precision);
+ }
+ else if (TREE_CODE (op) == SSA_NAME)
+ {
+ if (!vect_get_range_info (op, &op_min_value, &op_max_value))
+ return;
+ }
+ else
+ return;
+
+ if (is_shift && i == 2)
+ {
+ /* There needs to be one more bit than the maximum shift amount.
+
+ If the maximum shift amount is already 1 less than PRECISION
+ then we can't narrow the shift further. Dealing with that
+ case first ensures that we can safely use an unsigned range
+ below.
+
+ op_min_value isn't relevant, since shifts by negative amounts
+ are UB. */
+ if (wi::geu_p (op_max_value, precision - 1))
+ return;
+ unsigned int min_bits = op_max_value.to_uhwi () + 1;
+
+ /* As explained below, we can convert a signed shift into an
+ unsigned shift if the sign bit is always clear. At this
+ point we've already processed the ranges of the output and
+ the first input. */
+ auto op_sign = sign;
+ if (sign == SIGNED && !wi::neg_p (min_value))
+ op_sign = UNSIGNED;
+ op_min_value = wide_int::from (wi::min_value (min_bits, op_sign),
+ precision, op_sign);
+ op_max_value = wide_int::from (wi::max_value (min_bits, op_sign),
+ precision, op_sign);
+ }
+ min_value = wi::min (min_value, op_min_value, sign);
+ max_value = wi::max (max_value, op_max_value, sign);
+ }
+ }
/* Try to switch signed types for unsigned types if we can.
This is better for two reasons. First, unsigned ops tend
diff --git a/gcc/tree-vect-stmts.cc b/gcc/tree-vect-stmts.cc
index cabd4e3..1dbe111 100644
--- a/gcc/tree-vect-stmts.cc
+++ b/gcc/tree-vect-stmts.cc
@@ -4071,7 +4071,7 @@ vectorizable_simd_clone_call (vec_info *vinfo, stmt_vec_info stmt_info,
|| (nargs != simd_nargs))
continue;
if (num_calls != 1)
- this_badness += exact_log2 (num_calls) * 4096;
+ this_badness += floor_log2 (num_calls) * 4096;
if (n->simdclone->inbranch)
this_badness += 8192;
int target_badness = targetm.simd_clone.usable (n);
@@ -8542,7 +8542,7 @@ vectorizable_store (vec_info *vinfo,
alias_off = build_int_cst (ref_type, 0);
stmt_vec_info next_stmt_info = first_stmt_info;
- auto_vec<tree> vec_oprnds (ncopies);
+ auto_vec<tree> vec_oprnds;
/* For costing some adjacent vector stores, we'd like to cost with
the total number of them once instead of cost each one by one. */
unsigned int n_adjacent_stores = 0;
@@ -8772,7 +8772,7 @@ vectorizable_store (vec_info *vinfo,
tree vec_mask = NULL;
auto_delete_vec<auto_vec<tree>> gvec_oprnds (group_size);
for (i = 0; i < group_size; i++)
- gvec_oprnds.quick_push (new auto_vec<tree> (ncopies));
+ gvec_oprnds.quick_push (new auto_vec<tree> ());
if (memory_access_type == VMAT_LOAD_STORE_LANES)
{
diff --git a/gcc/tree.cc b/gcc/tree.cc
index 8aee3ef..3dff8c5 100644
--- a/gcc/tree.cc
+++ b/gcc/tree.cc
@@ -9929,20 +9929,25 @@ build_common_builtin_nodes (void)
tree ptr_ptr_type_node = build_pointer_type (ptr_type_node);
- ftype = build_function_type_list (void_type_node,
- ptr_type_node, // void *chain
- ptr_type_node, // void *func
- ptr_ptr_type_node, // void **dst
- NULL_TREE);
- local_define_builtin ("__builtin_nested_func_ptr_created", ftype,
- BUILT_IN_NESTED_PTR_CREATED,
- "__builtin_nested_func_ptr_created", ECF_NOTHROW);
+ if (!builtin_decl_explicit_p (BUILT_IN_GCC_NESTED_PTR_CREATED))
+ {
+ ftype = build_function_type_list (void_type_node,
+ ptr_type_node, // void *chain
+ ptr_type_node, // void *func
+ ptr_ptr_type_node, // void **dst
+ NULL_TREE);
+ local_define_builtin ("__builtin___gcc_nested_func_ptr_created", ftype,
+ BUILT_IN_GCC_NESTED_PTR_CREATED,
+ "__gcc_nested_func_ptr_created", ECF_NOTHROW);
+ }
- ftype = build_function_type_list (void_type_node,
- NULL_TREE);
- local_define_builtin ("__builtin_nested_func_ptr_deleted", ftype,
- BUILT_IN_NESTED_PTR_DELETED,
- "__builtin_nested_func_ptr_deleted", ECF_NOTHROW);
+ if (!builtin_decl_explicit_p (BUILT_IN_GCC_NESTED_PTR_DELETED))
+ {
+ ftype = build_function_type_list (void_type_node, NULL_TREE);
+ local_define_builtin ("__builtin___gcc_nested_func_ptr_deleted", ftype,
+ BUILT_IN_GCC_NESTED_PTR_DELETED,
+ "__gcc_nested_func_ptr_deleted", ECF_NOTHROW);
+ }
ftype = build_function_type_list (void_type_node,
ptr_type_node, ptr_type_node, NULL_TREE);
diff --git a/gcc/varasm.cc b/gcc/varasm.cc
index d2c879b..fa17eff 100644
--- a/gcc/varasm.cc
+++ b/gcc/varasm.cc
@@ -1939,6 +1939,11 @@ assemble_start_function (tree decl, const char *fnname)
/* Tell assembler to move to target machine's alignment for functions. */
align = floor_log2 (align / BITS_PER_UNIT);
+ /* Handle forced alignment. This really ought to apply to all functions,
+ since it is used by patchable entries. */
+ if (flag_min_function_alignment)
+ align = MAX (align, floor_log2 (flag_min_function_alignment));
+
if (align > 0)
{
ASM_OUTPUT_ALIGN (asm_out_file, align);
diff --git a/libatomic/ChangeLog b/libatomic/ChangeLog
index 6e2173f..128e2cd 100644
--- a/libatomic/ChangeLog
+++ b/libatomic/ChangeLog
@@ -1,3 +1,53 @@
+2024-01-28 Victor Do Nascimento <victor.donascimento@arm.com>
+
+ * config/linux/aarch64/host-config.h (has_lse2): Add test for LSE.
+ (has_lse128): Add test for LSE2.
+
+2024-01-28 Victor Do Nascimento <victor.donascimento@arm.com>
+
+ * Makefile.am (AM_CPPFLAGS): add conditional setting of
+ -DHAVE_FEAT_LSE128.
+ * acinclude.m4 (LIBAT_TEST_FEAT_AARCH64_LSE128): New.
+ * config/linux/aarch64/atomic_16.S (LSE128): New macro
+ definition.
+ (libat_exchange_16): New LSE128 variant.
+ (libat_fetch_or_16): Likewise.
+ (libat_or_fetch_16): Likewise.
+ (libat_fetch_and_16): Likewise.
+ (libat_and_fetch_16): Likewise.
+ * config/linux/aarch64/host-config.h (IFUNC_COND_2): New.
+ (IFUNC_NCOND): Add operand size checking.
+ (has_lse2): Renamed from `ifunc1`.
+ (has_lse128): New.
+ (HWCAP2_LSE128): Likewise.
+ * configure.ac: Add call to
+ LIBAT_TEST_FEAT_AARCH64_LSE128.
+ * configure (ac_subst_vars): Regenerated via autoreconf.
+ * Makefile.in: Likewise.
+ * auto-config.h.in: Likewise.
+
+2024-01-28 Victor Do Nascimento <victor.donascimento@arm.com>
+
+ * config/linux/aarch64/host-config.h (__ifunc_arg_t):
+ Conditionally-defined if `sys/ifunc.h' not found.
+ (_IFUNC_ARG_HWCAP): Likewise.
+ (IFUNC_COND_1): Pass __ifunc_arg_t argument to ifunc.
+ (ifunc1): Modify function signature to accept __ifunc_arg_t
+ argument.
+ * configure.tgt: Add second `const __ifunc_arg_t *features'
+ argument to IFUNC_RESOLVER_ARGS.
+
+2024-01-28 Victor Do Nascimento <victor.donascimento@arm.com>
+
+ * config/linux/aarch64/atomic_16.S (CORE): New macro.
+ (LSE2): Likewise.
+ (ENTRY_FEAT): Likewise.
+ (ENTRY_FEAT1): Likewise.
+ (END_FEAT): Likewise.
+ (END_FEAT1): Likewise.
+ (ALIAS): Modify macro to take in `arch' arguments.
+ (ALIAS1): New.
+
2023-12-15 Wilco Dijkstra <wilco.dijkstra@arm.com>
* config/linux/aarch64/atomic_16.S: Implement lock-free ARMv8.0 atomics.
diff --git a/libatomic/Makefile.am b/libatomic/Makefile.am
index cfad901..0623a0b 100644
--- a/libatomic/Makefile.am
+++ b/libatomic/Makefile.am
@@ -130,6 +130,9 @@ libatomic_la_LIBADD = $(foreach s,$(SIZES),$(addsuffix _$(s)_.lo,$(SIZEOBJS)))
## On a target-specific basis, include alternates to be selected by IFUNC.
if HAVE_IFUNC
if ARCH_AARCH64_LINUX
+if ARCH_AARCH64_HAVE_LSE128
+AM_CPPFLAGS = -DHAVE_FEAT_LSE128
+endif
IFUNC_OPTIONS = -march=armv8-a+lse
libatomic_la_LIBADD += $(foreach s,$(SIZES),$(addsuffix _$(s)_1_.lo,$(SIZEOBJS)))
libatomic_la_SOURCES += atomic_16.S
diff --git a/libatomic/Makefile.in b/libatomic/Makefile.in
index dc2330b..cd48fa2 100644
--- a/libatomic/Makefile.in
+++ b/libatomic/Makefile.in
@@ -452,6 +452,7 @@ M_SRC = $(firstword $(filter %/$(M_FILE), $(all_c_files)))
libatomic_la_LIBADD = $(foreach s,$(SIZES),$(addsuffix \
_$(s)_.lo,$(SIZEOBJS))) $(am__append_1) $(am__append_3) \
$(am__append_4) $(am__append_5)
+@ARCH_AARCH64_HAVE_LSE128_TRUE@@ARCH_AARCH64_LINUX_TRUE@@HAVE_IFUNC_TRUE@AM_CPPFLAGS = -DHAVE_FEAT_LSE128
@ARCH_AARCH64_LINUX_TRUE@@HAVE_IFUNC_TRUE@IFUNC_OPTIONS = -march=armv8-a+lse
@ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@IFUNC_OPTIONS = -march=armv7-a+fp -DHAVE_KERNEL64
@ARCH_I386_TRUE@@HAVE_IFUNC_TRUE@IFUNC_OPTIONS = -march=i586
diff --git a/libatomic/acinclude.m4 b/libatomic/acinclude.m4
index f35ab5b..d4f1317 100644
--- a/libatomic/acinclude.m4
+++ b/libatomic/acinclude.m4
@@ -84,6 +84,25 @@ AC_DEFUN([LIBAT_TEST_ATOMIC_BUILTIN],[
])
dnl
+dnl Test if the host assembler supports armv9.4-a LSE128 isns.
+dnl
+AC_DEFUN([LIBAT_TEST_FEAT_AARCH64_LSE128],[
+ AC_CACHE_CHECK([for armv9.4-a LSE128 insn support],
+ [libat_cv_have_feat_lse128],[
+ AC_LANG_CONFTEST([AC_LANG_PROGRAM([],[asm(".arch armv9-a+lse128")])])
+ if AC_TRY_EVAL(ac_compile); then
+ eval libat_cv_have_feat_lse128=yes
+ else
+ eval libat_cv_have_feat_lse128=no
+ fi
+ rm -f conftest*
+ ])
+ LIBAT_DEFINE_YESNO([HAVE_FEAT_LSE128], [$libat_cv_have_feat_lse128],
+ [Have LSE128 support for 16 byte integers.])
+ AM_CONDITIONAL([ARCH_AARCH64_HAVE_LSE128], [test x$libat_cv_have_feat_lse128 = xyes])
+])
+
+dnl
dnl Test if we have __atomic_load and __atomic_store for mode $1, size $2
dnl
AC_DEFUN([LIBAT_HAVE_ATOMIC_LOADSTORE],[
diff --git a/libatomic/auto-config.h.in b/libatomic/auto-config.h.in
index ab3424a..7c78933 100644
--- a/libatomic/auto-config.h.in
+++ b/libatomic/auto-config.h.in
@@ -105,6 +105,9 @@
/* Define to 1 if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H
+/* Have LSE128 support for 16 byte integers. */
+#undef HAVE_FEAT_LSE128
+
/* Define to 1 if you have the <fenv.h> header file. */
#undef HAVE_FENV_H
diff --git a/libatomic/config/linux/aarch64/atomic_16.S b/libatomic/config/linux/aarch64/atomic_16.S
index ad14f8f..d4a360a 100644
--- a/libatomic/config/linux/aarch64/atomic_16.S
+++ b/libatomic/config/linux/aarch64/atomic_16.S
@@ -35,27 +35,44 @@
writes, this will be true when using atomics in actual code.
The libat_<op>_16 entry points are ARMv8.0.
- The libat_<op>_16_i1 entry points are used when LSE2 is available. */
-
+ The libat_<op>_16_i1 entry points are used when LSE128 is available.
+ The libat_<op>_16_i2 entry points are used when LSE2 is available. */
+#if HAVE_FEAT_LSE128
+ .arch armv9-a+lse128
+#else
.arch armv8-a+lse
+#endif
-#define ENTRY(name) \
- .global name; \
- .hidden name; \
- .type name,%function; \
+#define LSE128(NAME) NAME##_i1
+#define LSE2(NAME) NAME##_i2
+#define CORE(NAME) NAME
+
+#define ENTRY_FEAT(NAME, FEAT) \
+ ENTRY (FEAT (NAME))
+
+#define ENTRY(NAME) \
+ .global NAME; \
+ .hidden NAME; \
+ .type NAME,%function; \
.p2align 4; \
-name: \
- .cfi_startproc; \
+NAME: \
+ .cfi_startproc; \
hint 34 // bti c
-#define END(name) \
+#define END_FEAT(NAME, FEAT) \
+ END (FEAT (NAME))
+
+#define END(NAME) \
.cfi_endproc; \
- .size name, .-name;
+ .size NAME, .-NAME;
-#define ALIAS(alias,name) \
- .global alias; \
- .set alias, name;
+#define ALIAS(NAME, FROM, TO) \
+ ALIAS1 (FROM (NAME),TO (NAME))
+
+#define ALIAS1(ALIAS, NAME) \
+ .global ALIAS; \
+ .set ALIAS, NAME;
#define res0 x0
#define res1 x1
@@ -108,7 +125,7 @@ ENTRY (libat_load_16)
END (libat_load_16)
-ENTRY (libat_load_16_i1)
+ENTRY_FEAT (libat_load_16, LSE2)
cbnz w1, 1f
/* RELAXED. */
@@ -128,7 +145,7 @@ ENTRY (libat_load_16_i1)
ldp res0, res1, [x0]
dmb ishld
ret
-END (libat_load_16_i1)
+END_FEAT (libat_load_16, LSE2)
ENTRY (libat_store_16)
@@ -148,7 +165,7 @@ ENTRY (libat_store_16)
END (libat_store_16)
-ENTRY (libat_store_16_i1)
+ENTRY_FEAT (libat_store_16, LSE2)
cbnz w4, 1f
/* RELAXED. */
@@ -160,7 +177,7 @@ ENTRY (libat_store_16_i1)
stlxp w4, in0, in1, [x0]
cbnz w4, 1b
ret
-END (libat_store_16_i1)
+END_FEAT (libat_store_16, LSE2)
ENTRY (libat_exchange_16)
@@ -190,6 +207,31 @@ ENTRY (libat_exchange_16)
END (libat_exchange_16)
+#if HAVE_FEAT_LSE128
+ENTRY_FEAT (libat_exchange_16, LSE128)
+ mov tmp0, x0
+ mov res0, in0
+ mov res1, in1
+ cbnz w4, 1f
+
+ /* RELAXED. */
+ swpp res0, res1, [tmp0]
+ ret
+1:
+ cmp w4, ACQUIRE
+ b.hi 2f
+
+ /* ACQUIRE/CONSUME. */
+ swppa res0, res1, [tmp0]
+ ret
+
+ /* RELEASE/ACQ_REL/SEQ_CST. */
+2: swppal res0, res1, [tmp0]
+ ret
+END_FEAT (libat_exchange_16, LSE128)
+#endif
+
+
ENTRY (libat_compare_exchange_16)
ldp exp0, exp1, [x1]
cbz w4, 3f
@@ -237,7 +279,7 @@ ENTRY (libat_compare_exchange_16)
END (libat_compare_exchange_16)
-ENTRY (libat_compare_exchange_16_i1)
+ENTRY_FEAT (libat_compare_exchange_16, LSE2)
ldp exp0, exp1, [x1]
mov tmp0, exp0
mov tmp1, exp1
@@ -270,7 +312,7 @@ ENTRY (libat_compare_exchange_16_i1)
/* ACQ_REL/SEQ_CST. */
4: caspal exp0, exp1, in0, in1, [x0]
b 0b
-END (libat_compare_exchange_16_i1)
+END_FEAT (libat_compare_exchange_16, LSE2)
ENTRY (libat_fetch_add_16)
@@ -383,6 +425,31 @@ ENTRY (libat_fetch_or_16)
END (libat_fetch_or_16)
+#if HAVE_FEAT_LSE128
+ENTRY_FEAT (libat_fetch_or_16, LSE128)
+ mov tmp0, x0
+ mov res0, in0
+ mov res1, in1
+ cbnz w4, 1f
+
+ /* RELAXED. */
+ ldsetp res0, res1, [tmp0]
+ ret
+1:
+ cmp w4, ACQUIRE
+ b.hi 2f
+
+ /* ACQUIRE/CONSUME. */
+ ldsetpa res0, res1, [tmp0]
+ ret
+
+ /* RELEASE/ACQ_REL/SEQ_CST. */
+2: ldsetpal res0, res1, [tmp0]
+ ret
+END_FEAT (libat_fetch_or_16, LSE128)
+#endif
+
+
ENTRY (libat_or_fetch_16)
mov x5, x0
cbnz w4, 2f
@@ -405,6 +472,36 @@ ENTRY (libat_or_fetch_16)
END (libat_or_fetch_16)
+#if HAVE_FEAT_LSE128
+ENTRY_FEAT (libat_or_fetch_16, LSE128)
+ cbnz w4, 1f
+ mov tmp0, in0
+ mov tmp1, in1
+
+ /* RELAXED. */
+ ldsetp in0, in1, [x0]
+ orr res0, in0, tmp0
+ orr res1, in1, tmp1
+ ret
+1:
+ cmp w4, ACQUIRE
+ b.hi 2f
+
+ /* ACQUIRE/CONSUME. */
+ ldsetpa in0, in1, [x0]
+ orr res0, in0, tmp0
+ orr res1, in1, tmp1
+ ret
+
+ /* RELEASE/ACQ_REL/SEQ_CST. */
+2: ldsetpal in0, in1, [x0]
+ orr res0, in0, tmp0
+ orr res1, in1, tmp1
+ ret
+END_FEAT (libat_or_fetch_16, LSE128)
+#endif
+
+
ENTRY (libat_fetch_and_16)
mov x5, x0
cbnz w4, 2f
@@ -427,6 +524,32 @@ ENTRY (libat_fetch_and_16)
END (libat_fetch_and_16)
+#if HAVE_FEAT_LSE128
+ENTRY_FEAT (libat_fetch_and_16, LSE128)
+ mov tmp0, x0
+ mvn res0, in0
+ mvn res1, in1
+ cbnz w4, 1f
+
+ /* RELAXED. */
+ ldclrp res0, res1, [tmp0]
+ ret
+
+1:
+ cmp w4, ACQUIRE
+ b.hi 2f
+
+ /* ACQUIRE/CONSUME. */
+ ldclrpa res0, res1, [tmp0]
+ ret
+
+ /* RELEASE/ACQ_REL/SEQ_CST. */
+2: ldclrpal res0, res1, [tmp0]
+ ret
+END_FEAT (libat_fetch_and_16, LSE128)
+#endif
+
+
ENTRY (libat_and_fetch_16)
mov x5, x0
cbnz w4, 2f
@@ -449,6 +572,37 @@ ENTRY (libat_and_fetch_16)
END (libat_and_fetch_16)
+#if HAVE_FEAT_LSE128
+ENTRY_FEAT (libat_and_fetch_16, LSE128)
+ mvn tmp0, in0
+ mvn tmp0, in1
+ cbnz w4, 1f
+
+ /* RELAXED. */
+ ldclrp tmp0, tmp1, [x0]
+ and res0, tmp0, in0
+ and res1, tmp1, in1
+ ret
+
+1:
+ cmp w4, ACQUIRE
+ b.hi 2f
+
+ /* ACQUIRE/CONSUME. */
+ ldclrpa tmp0, tmp1, [x0]
+ and res0, tmp0, in0
+ and res1, tmp1, in1
+ ret
+
+ /* RELEASE/ACQ_REL/SEQ_CST. */
+2: ldclrpal tmp0, tmp1, [x5]
+ and res0, tmp0, in0
+ and res1, tmp1, in1
+ ret
+END_FEAT (libat_and_fetch_16, LSE128)
+#endif
+
+
ENTRY (libat_fetch_xor_16)
mov x5, x0
cbnz w4, 2f
@@ -554,23 +708,44 @@ ENTRY (libat_test_and_set_16)
END (libat_test_and_set_16)
-/* Alias entry points which are the same in baseline and LSE2. */
+/* Alias entry points which are the same in LSE2 and LSE128. */
-ALIAS (libat_exchange_16_i1, libat_exchange_16)
-ALIAS (libat_fetch_add_16_i1, libat_fetch_add_16)
-ALIAS (libat_add_fetch_16_i1, libat_add_fetch_16)
-ALIAS (libat_fetch_sub_16_i1, libat_fetch_sub_16)
-ALIAS (libat_sub_fetch_16_i1, libat_sub_fetch_16)
-ALIAS (libat_fetch_or_16_i1, libat_fetch_or_16)
-ALIAS (libat_or_fetch_16_i1, libat_or_fetch_16)
-ALIAS (libat_fetch_and_16_i1, libat_fetch_and_16)
-ALIAS (libat_and_fetch_16_i1, libat_and_fetch_16)
-ALIAS (libat_fetch_xor_16_i1, libat_fetch_xor_16)
-ALIAS (libat_xor_fetch_16_i1, libat_xor_fetch_16)
-ALIAS (libat_fetch_nand_16_i1, libat_fetch_nand_16)
-ALIAS (libat_nand_fetch_16_i1, libat_nand_fetch_16)
-ALIAS (libat_test_and_set_16_i1, libat_test_and_set_16)
+#if !HAVE_FEAT_LSE128
+ALIAS (libat_exchange_16, LSE128, LSE2)
+ALIAS (libat_fetch_or_16, LSE128, LSE2)
+ALIAS (libat_fetch_and_16, LSE128, LSE2)
+ALIAS (libat_or_fetch_16, LSE128, LSE2)
+ALIAS (libat_and_fetch_16, LSE128, LSE2)
+#endif
+ALIAS (libat_load_16, LSE128, LSE2)
+ALIAS (libat_store_16, LSE128, LSE2)
+ALIAS (libat_compare_exchange_16, LSE128, LSE2)
+ALIAS (libat_fetch_add_16, LSE128, LSE2)
+ALIAS (libat_add_fetch_16, LSE128, LSE2)
+ALIAS (libat_fetch_sub_16, LSE128, LSE2)
+ALIAS (libat_sub_fetch_16, LSE128, LSE2)
+ALIAS (libat_fetch_xor_16, LSE128, LSE2)
+ALIAS (libat_xor_fetch_16, LSE128, LSE2)
+ALIAS (libat_fetch_nand_16, LSE128, LSE2)
+ALIAS (libat_nand_fetch_16, LSE128, LSE2)
+ALIAS (libat_test_and_set_16, LSE128, LSE2)
+
+/* Alias entry points which are the same in baseline and LSE2. */
+ALIAS (libat_exchange_16, LSE2, CORE)
+ALIAS (libat_fetch_add_16, LSE2, CORE)
+ALIAS (libat_add_fetch_16, LSE2, CORE)
+ALIAS (libat_fetch_sub_16, LSE2, CORE)
+ALIAS (libat_sub_fetch_16, LSE2, CORE)
+ALIAS (libat_fetch_or_16, LSE2, CORE)
+ALIAS (libat_or_fetch_16, LSE2, CORE)
+ALIAS (libat_fetch_and_16, LSE2, CORE)
+ALIAS (libat_and_fetch_16, LSE2, CORE)
+ALIAS (libat_fetch_xor_16, LSE2, CORE)
+ALIAS (libat_xor_fetch_16, LSE2, CORE)
+ALIAS (libat_fetch_nand_16, LSE2, CORE)
+ALIAS (libat_nand_fetch_16, LSE2, CORE)
+ALIAS (libat_test_and_set_16, LSE2, CORE)
/* GNU_PROPERTY_AARCH64_* macros from elf.h for use in asm code. */
#define FEATURE_1_AND 0xc0000000
diff --git a/libatomic/config/linux/aarch64/host-config.h b/libatomic/config/linux/aarch64/host-config.h
index 4200293..4e354124 100644
--- a/libatomic/config/linux/aarch64/host-config.h
+++ b/libatomic/config/linux/aarch64/host-config.h
@@ -24,16 +24,30 @@
#if HAVE_IFUNC
#include <sys/auxv.h>
+#if __has_include(<sys/ifunc.h>)
+# include <sys/ifunc.h>
+#else
+typedef struct __ifunc_arg_t {
+ unsigned long _size;
+ unsigned long _hwcap;
+ unsigned long _hwcap2;
+} __ifunc_arg_t;
+# define _IFUNC_ARG_HWCAP (1ULL << 62)
+#endif
+
#ifdef HWCAP_USCAT
# if N == 16
-# define IFUNC_COND_1 ifunc1 (hwcap)
+# define IFUNC_COND_1 (has_lse128 (hwcap, features))
+# define IFUNC_COND_2 (has_lse2 (hwcap, features))
+# define IFUNC_NCOND(N) 2
# else
-# define IFUNC_COND_1 (hwcap & HWCAP_ATOMICS)
+# define IFUNC_COND_1 (hwcap & HWCAP_ATOMICS)
+# define IFUNC_NCOND(N) 1
# endif
#else
# define IFUNC_COND_1 (false)
+# define IFUNC_NCOND(N) 1
#endif
-#define IFUNC_NCOND(N) (1)
#endif /* HAVE_IFUNC */
@@ -48,10 +62,15 @@
#define MIDR_PARTNUM(midr) (((midr) >> 4) & 0xfff)
static inline bool
-ifunc1 (unsigned long hwcap)
+has_lse2 (unsigned long hwcap, const __ifunc_arg_t *features)
{
+ /* Check for LSE2. */
if (hwcap & HWCAP_USCAT)
return true;
+ /* No point checking further for atomic 128-bit load/store if LSE
+ prerequisite not met. */
+ if (!(hwcap & HWCAP_ATOMICS))
+ return false;
if (!(hwcap & HWCAP_CPUID))
return false;
@@ -64,6 +83,39 @@ ifunc1 (unsigned long hwcap)
return false;
}
+
+/* LSE128 atomic support encoded in ID_AA64ISAR0_EL1.Atomic,
+ bits[23:20]. The expected value is 0b0011. Check that. */
+
+#define AT_FEAT_FIELD(isar0) (((isar0) >> 20) & 15)
+
+/* Ensure backwards compatibility with glibc <= 2.38. */
+#ifndef HWCAP2_LSE128
+#define HWCAP2_LSE128 (1UL << 47)
+#endif
+
+static inline bool
+has_lse128 (unsigned long hwcap, const __ifunc_arg_t *features)
+{
+ if (hwcap & _IFUNC_ARG_HWCAP
+ && features->_hwcap2 & HWCAP2_LSE128)
+ return true;
+ /* A 0 HWCAP2_LSE128 bit may be just as much a sign of missing HWCAP2 bit
+ support in older kernels as it is of CPU feature absence. Try fallback
+ method to guarantee LSE128 is not implemented.
+
+ In the absence of HWCAP_CPUID, we are unable to check for LSE128.
+ If feature check available, check LSE2 prerequisite before proceeding. */
+ if (!(hwcap & HWCAP_CPUID) || !(hwcap & HWCAP_USCAT))
+ return false;
+
+ unsigned long isar0;
+ asm volatile ("mrs %0, ID_AA64ISAR0_EL1" : "=r" (isar0));
+ if (AT_FEAT_FIELD (isar0) >= 3)
+ return true;
+ return false;
+}
+
#endif
#include_next <host-config.h>
diff --git a/libatomic/configure b/libatomic/configure
index d579bab..8ab730d 100755
--- a/libatomic/configure
+++ b/libatomic/configure
@@ -656,6 +656,8 @@ LIBAT_BUILD_VERSIONED_SHLIB_FALSE
LIBAT_BUILD_VERSIONED_SHLIB_TRUE
OPT_LDFLAGS
SECTION_LDFLAGS
+ARCH_AARCH64_HAVE_LSE128_FALSE
+ARCH_AARCH64_HAVE_LSE128_TRUE
SYSROOT_CFLAGS_FOR_TARGET
enable_aarch64_lse
libtool_VERSION
@@ -11456,7 +11458,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 11459 "configure"
+#line 11461 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -11562,7 +11564,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 11565 "configure"
+#line 11567 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -14697,6 +14699,57 @@ _ACEOF
+# Check for target-specific assembly-level support for atomic operations.
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for armv9.4-a LSE128 insn support" >&5
+$as_echo_n "checking for armv9.4-a LSE128 insn support... " >&6; }
+if ${libat_cv_have_feat_lse128+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+asm(".arch armv9-a+lse128")
+ ;
+ return 0;
+}
+_ACEOF
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ eval libat_cv_have_feat_lse128=yes
+ else
+ eval libat_cv_have_feat_lse128=no
+ fi
+ rm -f conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libat_cv_have_feat_lse128" >&5
+$as_echo "$libat_cv_have_feat_lse128" >&6; }
+
+ yesno=`echo $libat_cv_have_feat_lse128 | tr 'yesno' '1 0 '`
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_FEAT_LSE128 $yesno
+_ACEOF
+
+
+ if test x$libat_cv_have_feat_lse128 = xyes; then
+ ARCH_AARCH64_HAVE_LSE128_TRUE=
+ ARCH_AARCH64_HAVE_LSE128_FALSE='#'
+else
+ ARCH_AARCH64_HAVE_LSE128_TRUE='#'
+ ARCH_AARCH64_HAVE_LSE128_FALSE=
+fi
+
+
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
$as_echo_n "checking whether byte ordering is bigendian... " >&6; }
if ${ac_cv_c_bigendian+:} false; then :
@@ -15989,6 +16042,10 @@ if test -z "${ENABLE_DARWIN_AT_RPATH_TRUE}" && test -z "${ENABLE_DARWIN_AT_RPATH
as_fn_error $? "conditional \"ENABLE_DARWIN_AT_RPATH\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
+if test -z "${ARCH_AARCH64_HAVE_LSE128_TRUE}" && test -z "${ARCH_AARCH64_HAVE_LSE128_FALSE}"; then
+ as_fn_error $? "conditional \"ARCH_AARCH64_HAVE_LSE128\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
if test -z "${LIBAT_BUILD_VERSIONED_SHLIB_TRUE}" && test -z "${LIBAT_BUILD_VERSIONED_SHLIB_FALSE}"; then
as_fn_error $? "conditional \"LIBAT_BUILD_VERSIONED_SHLIB\" was never defined.
diff --git a/libatomic/configure.ac b/libatomic/configure.ac
index 32a2cdb..85824fa 100644
--- a/libatomic/configure.ac
+++ b/libatomic/configure.ac
@@ -206,6 +206,9 @@ LIBAT_FORALL_MODES([LIBAT_HAVE_ATOMIC_CAS])
LIBAT_FORALL_MODES([LIBAT_HAVE_ATOMIC_FETCH_ADD])
LIBAT_FORALL_MODES([LIBAT_HAVE_ATOMIC_FETCH_OP])
+# Check for target-specific assembly-level support for atomic operations.
+LIBAT_TEST_FEAT_AARCH64_LSE128()
+
AC_C_BIGENDIAN
# I don't like the default behaviour of WORDS_BIGENDIAN undefined for LE.
AH_BOTTOM(
diff --git a/libatomic/configure.tgt b/libatomic/configure.tgt
index b760913..67a5f2d 100644
--- a/libatomic/configure.tgt
+++ b/libatomic/configure.tgt
@@ -194,7 +194,7 @@ esac
# The type may be different on different architectures.
case "${target}" in
aarch64*-*-*)
- IFUNC_RESOLVER_ARGS="uint64_t hwcap"
+ IFUNC_RESOLVER_ARGS="uint64_t hwcap, const __ifunc_arg_t *features"
;;
*)
IFUNC_RESOLVER_ARGS="void"
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index 9799de1..f4e56bb 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -1,3 +1,31 @@
+2024-01-28 Iain Sandoe <iain@sandoe.co.uk>
+ Jakub Jelinek <jakub@redhat.com>
+
+ PR libgcc/113402
+ * config/aarch64/heap-trampoline.c: Rename
+ __builtin_nested_func_ptr_created to __gcc_nested_func_ptr_created and
+ __builtin_nested_func_ptr_deleted to __gcc_nested_func_ptr_deleted.
+ * config/i386/heap-trampoline.c: Likewise.
+ * libgcc2.h: Likewise.
+ * libgcc-std.ver.in (GCC_7.0.0): Likewise and then move
+ __gcc_nested_func_ptr_created and
+ __gcc_nested_func_ptr_deleted from this symbol version to ...
+ (GCC_14.0.0): ... this one.
+
+2024-01-26 Andrew Stubbs <ams@baylibre.com>
+
+ * config/gcn/amdgcn_veclib.h (CDNA3_PLUS): Handle RDNA3.
+
+2024-01-23 Zac Walker <zacwalker@microsoft.com>
+
+ * config/aarch64/aarch64-asm.h (HIDDEN, SYMBOL_SIZE, SYMBOL_TYPE)
+ (ENTRY_ALIGN, GNU_PROPERTY): New macros.
+ * config/aarch64/__arm_sme_state.S: Use them.
+ * config/aarch64/__arm_tpidr2_save.S: Likewise.
+ * config/aarch64/__arm_za_disable.S: Likewise.
+ * config/aarch64/crti.S: Likewise.
+ * config/aarch64/lse.S: Likewise.
+
2024-01-12 Jakub Jelinek <jakub@redhat.com>
* libgcc2.h (UBILtype): New typedef with may_alias attribute.
diff --git a/libgcc/config.host b/libgcc/config.host
index 017fbc7..3e7d00f 100644
--- a/libgcc/config.host
+++ b/libgcc/config.host
@@ -715,12 +715,15 @@ hppa*-*-netbsd*)
i[34567]86-*-darwin*)
tmake_file="$tmake_file i386/t-crtpc t-crtfm i386/t-msabi"
tm_file="$tm_file i386/darwin-lib.h"
- extra_parts="$extra_parts crtprec32.o crtprec64.o crtprec80.o crtfastmath.o"
+ extra_parts="$extra_parts crtprec32.o crtprec64.o crtprec80.o"
+ extra_parts="$extra_parts crtfastmath.o libheapt_w.a"
+ tmake_file="${tmake_file} i386/t-heap-trampoline"
;;
x86_64-*-darwin*)
tmake_file="$tmake_file i386/t-crtpc t-crtfm i386/t-msabi"
tm_file="$tm_file i386/darwin-lib.h"
- extra_parts="$extra_parts crtprec32.o crtprec64.o crtprec80.o crtfastmath.o"
+ extra_parts="$extra_parts crtprec32.o crtprec64.o crtprec80.o"
+ extra_parts="$extra_parts crtfastmath.o libheapt_w.a"
tmake_file="${tmake_file} i386/t-heap-trampoline"
;;
i[34567]86-*-elfiamcu)
diff --git a/libgcc/config/aarch64/__arm_sme_state.S b/libgcc/config/aarch64/__arm_sme_state.S
index 0da9b58..1fbb8c1 100644
--- a/libgcc/config/aarch64/__arm_sme_state.S
+++ b/libgcc/config/aarch64/__arm_sme_state.S
@@ -30,7 +30,7 @@
- Takes no argument.
- Returns SME state in x0 and TPIDR2_EL0 in x1. */
-.hidden __aarch64_have_sme
+HIDDEN (__aarch64_have_sme)
variant_pcs (__arm_sme_state)
diff --git a/libgcc/config/aarch64/__arm_tpidr2_save.S b/libgcc/config/aarch64/__arm_tpidr2_save.S
index 9135cba..2466b58 100644
--- a/libgcc/config/aarch64/__arm_tpidr2_save.S
+++ b/libgcc/config/aarch64/__arm_tpidr2_save.S
@@ -31,7 +31,7 @@
- Does not return a value.
- Can abort on failure (then registers are not preserved). */
-.hidden __aarch64_have_sme
+HIDDEN (__aarch64_have_sme)
variant_pcs (__arm_tpidr2_save)
@@ -97,5 +97,5 @@ END (__arm_tpidr2_save)
/* Hidden alias used by __arm_za_disable. */
.global __libgcc_arm_tpidr2_save
-.hidden __libgcc_arm_tpidr2_save
+HIDDEN (__libgcc_arm_tpidr2_save)
.set __libgcc_arm_tpidr2_save, __arm_tpidr2_save
diff --git a/libgcc/config/aarch64/__arm_za_disable.S b/libgcc/config/aarch64/__arm_za_disable.S
index 5785a95..c372fcf 100644
--- a/libgcc/config/aarch64/__arm_za_disable.S
+++ b/libgcc/config/aarch64/__arm_za_disable.S
@@ -31,9 +31,9 @@
- Does not return a value.
- Can abort on failure (then registers are not preserved). */
-.hidden __aarch64_have_sme
+HIDDEN (__aarch64_have_sme)
-.hidden __libgcc_arm_tpidr2_save
+HIDDEN (__libgcc_arm_tpidr2_save)
variant_pcs (__arm_za_disable)
@@ -66,5 +66,5 @@ END (__arm_za_disable)
/* Hidden alias used by the unwinder. */
.global __libgcc_arm_za_disable
-.hidden __libgcc_arm_za_disable
+HIDDEN (__libgcc_arm_za_disable)
.set __libgcc_arm_za_disable, __arm_za_disable
diff --git a/libgcc/config/aarch64/aarch64-asm.h b/libgcc/config/aarch64/aarch64-asm.h
index 2456842..83c2e59 100644
--- a/libgcc/config/aarch64/aarch64-asm.h
+++ b/libgcc/config/aarch64/aarch64-asm.h
@@ -58,6 +58,16 @@
# define AUTIASP
#endif
+#ifdef __ELF__
+#define HIDDEN(name) .hidden name
+#define SYMBOL_SIZE(name) .size name, .-name
+#define SYMBOL_TYPE(name, _type) .type name, _type
+#else
+#define HIDDEN(name)
+#define SYMBOL_SIZE(name)
+#define SYMBOL_TYPE(name, _type)
+#endif
+
/* Add a NT_GNU_PROPERTY_TYPE_0 note. */
#define GNU_PROPERTY(type, value) \
.section .note.gnu.property, "a"; \
@@ -85,7 +95,7 @@ GNU_PROPERTY (FEATURE_1_AND, BTI_FLAG|PAC_FLAG)
#define ENTRY_ALIGN(name, align) \
.global name; \
- .type name,%function; \
+ SYMBOL_TYPE(name, %function); \
.balign align; \
name: \
.cfi_startproc; \
@@ -95,4 +105,4 @@ GNU_PROPERTY (FEATURE_1_AND, BTI_FLAG|PAC_FLAG)
#define END(name) \
.cfi_endproc; \
- .size name, .-name
+ SYMBOL_SIZE(name)
diff --git a/libgcc/config/aarch64/crti.S b/libgcc/config/aarch64/crti.S
index 1371967..b6805b8 100644
--- a/libgcc/config/aarch64/crti.S
+++ b/libgcc/config/aarch64/crti.S
@@ -21,6 +21,8 @@
# see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
# <http://www.gnu.org/licenses/>.
+#include "aarch64-asm.h"
+
/* An executable stack is *not* required for these functions. */
#if defined(__ELF__) && defined(__linux__)
.section .note.GNU-stack,"",%progbits
@@ -31,12 +33,6 @@
# .init sections. Users may put any desired instructions in those
# sections.
-#ifdef __ELF__
-#define TYPE(x) .type x,function
-#else
-#define TYPE(x)
-#endif
-
# Note - this macro is complemented by the FUNC_END macro
# in crtn.S. If you change this macro you must also change
# that macro match.
@@ -53,7 +49,7 @@
.section ".init"
.align 2
.global _init
- TYPE(_init)
+ SYMBOL_TYPE(_init, function)
_init:
FUNC_START
@@ -61,7 +57,7 @@ _init:
.section ".fini"
.align 2
.global _fini
- TYPE(_fini)
+ SYMBOL_TYPE(_fini, function)
_fini:
FUNC_START
diff --git a/libgcc/config/aarch64/heap-trampoline.c b/libgcc/config/aarch64/heap-trampoline.c
index f222339..b463399 100644
--- a/libgcc/config/aarch64/heap-trampoline.c
+++ b/libgcc/config/aarch64/heap-trampoline.c
@@ -15,13 +15,19 @@
#include <pthread.h>
#endif
+/* HEAP_T_ATTR is provided to allow targets to build the exported functions
+ as weak definitions. */
+#ifndef HEAP_T_ATTR
+# define HEAP_T_ATTR
+#endif
+
void *allocate_trampoline_page (void);
int get_trampolines_per_page (void);
struct tramp_ctrl_data *allocate_tramp_ctrl (struct tramp_ctrl_data *parent);
void *allocate_trampoline_page (void);
-void __builtin_nested_func_ptr_created (void *chain, void *func, void **dst);
-void __builtin_nested_func_ptr_deleted (void);
+void __gcc_nested_func_ptr_created (void *chain, void *func, void **dst);
+void __gcc_nested_func_ptr_deleted (void);
#if defined(__gnu_linux__)
static const uint32_t aarch64_trampoline_insns[] = {
@@ -107,8 +113,9 @@ allocate_tramp_ctrl (struct tramp_ctrl_data *parent)
return p;
}
+HEAP_T_ATTR
void
-__builtin_nested_func_ptr_created (void *chain, void *func, void **dst)
+__gcc_nested_func_ptr_created (void *chain, void *func, void **dst)
{
if (tramp_ctrl_curr == NULL)
{
@@ -154,8 +161,9 @@ __builtin_nested_func_ptr_created (void *chain, void *func, void **dst)
*dst = &trampoline->insns;
}
+HEAP_T_ATTR
void
-__builtin_nested_func_ptr_deleted (void)
+__gcc_nested_func_ptr_deleted (void)
{
if (tramp_ctrl_curr == NULL)
abort ();
diff --git a/libgcc/config/aarch64/lse.S b/libgcc/config/aarch64/lse.S
index 671a86c..cee1e88 100644
--- a/libgcc/config/aarch64/lse.S
+++ b/libgcc/config/aarch64/lse.S
@@ -51,6 +51,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
* indirectly, they do not need to start with a BTI instruction.
*/
+#include "aarch64-asm.h"
#include "auto-target.h"
/* Tell the assembler to accept LSE instructions. */
@@ -61,7 +62,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#endif
/* Declare the symbol gating the LSE implementations. */
- .hidden __aarch64_have_lse_atomics
+ HIDDEN(__aarch64_have_lse_atomics)
/* Turn size and memory model defines into mnemonic fragments. */
#if SIZE == 1
@@ -171,15 +172,15 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
.text
.balign 16
.globl \name
- .hidden \name
- .type \name, %function
+ HIDDEN(\name)
+ SYMBOL_TYPE(\name, %function)
.cfi_startproc
\name:
.endm
.macro ENDFN name
.cfi_endproc
- .size \name, . - \name
+ SYMBOL_SIZE(\name)
.endm
/* Branch to LABEL if LSE is disabled. */
diff --git a/libgcc/config/aarch64/t-heap-trampoline b/libgcc/config/aarch64/t-heap-trampoline
index b224808..6468fb8 100644
--- a/libgcc/config/aarch64/t-heap-trampoline
+++ b/libgcc/config/aarch64/t-heap-trampoline
@@ -16,4 +16,5 @@
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
-LIB2ADD += $(srcdir)/config/aarch64/heap-trampoline.c
+LIB2ADDEH += $(srcdir)/config/aarch64/heap-trampoline.c
+LIB2ADDEHSHARED += $(srcdir)/config/aarch64/heap-trampoline.c
diff --git a/libgcc/config/gcn/amdgcn_veclib.h b/libgcc/config/gcn/amdgcn_veclib.h
index 821f638..d268c6c 100644
--- a/libgcc/config/gcn/amdgcn_veclib.h
+++ b/libgcc/config/gcn/amdgcn_veclib.h
@@ -230,7 +230,7 @@ do { \
#if defined (__GCN3__) || defined (__GCN5__) \
|| defined (__CDNA1__) || defined (__CDNA2__) \
- || defined (__RDNA2__)
+ || defined (__RDNA2__) || defined (__RDNA3__)
#define CDNA3_PLUS 0
#else
#define CDNA3_PLUS 1
diff --git a/libgcc/config/i386/heap-trampoline.c b/libgcc/config/i386/heap-trampoline.c
index 4b9f436..4e069c4 100644
--- a/libgcc/config/i386/heap-trampoline.c
+++ b/libgcc/config/i386/heap-trampoline.c
@@ -15,13 +15,19 @@
#include <pthread.h>
#endif
+/* HEAP_T_ATTR is provided to allow targets to build the exported functions
+ as weak definitions. */
+#ifndef HEAP_T_ATTR
+# define HEAP_T_ATTR
+#endif
+
void *allocate_trampoline_page (void);
int get_trampolines_per_page (void);
struct tramp_ctrl_data *allocate_tramp_ctrl (struct tramp_ctrl_data *parent);
void *allocate_trampoline_page (void);
-void __builtin_nested_func_ptr_created (void *chain, void *func, void **dst);
-void __builtin_nested_func_ptr_deleted (void);
+void __gcc_nested_func_ptr_created (void *chain, void *func, void **dst);
+void __gcc_nested_func_ptr_deleted (void);
static const uint8_t trampoline_insns[] = {
/* movabs $<chain>,%r11 */
@@ -107,8 +113,9 @@ allocate_tramp_ctrl (struct tramp_ctrl_data *parent)
return p;
}
+HEAP_T_ATTR
void
-__builtin_nested_func_ptr_created (void *chain, void *func, void **dst)
+__gcc_nested_func_ptr_created (void *chain, void *func, void **dst)
{
if (tramp_ctrl_curr == NULL)
{
@@ -154,8 +161,9 @@ __builtin_nested_func_ptr_created (void *chain, void *func, void **dst)
*dst = &trampoline->insns;
}
+HEAP_T_ATTR
void
-__builtin_nested_func_ptr_deleted (void)
+__gcc_nested_func_ptr_deleted (void)
{
if (tramp_ctrl_curr == NULL)
abort ();
diff --git a/libgcc/config/i386/t-heap-trampoline b/libgcc/config/i386/t-heap-trampoline
index 613f635..728c1e2 100644
--- a/libgcc/config/i386/t-heap-trampoline
+++ b/libgcc/config/i386/t-heap-trampoline
@@ -16,4 +16,5 @@
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
-LIB2ADD += $(srcdir)/config/i386/heap-trampoline.c
+LIB2ADDEH += $(srcdir)/config/i386/heap-trampoline.c
+LIB2ADDEHSHARED += $(srcdir)/config/aarch64/heap-trampoline.c
diff --git a/libgcc/config/t-darwin b/libgcc/config/t-darwin
index a3bb70c..0f65b54 100644
--- a/libgcc/config/t-darwin
+++ b/libgcc/config/t-darwin
@@ -51,5 +51,18 @@ LIB2ADDEH = $(srcdir)/unwind-dw2.c \
# Do not build a shared unwind lib by default.
LIBEHSOBJS=
+# Make heap trampoline helpers weak definitions so that we can merge them from
+# multiple DSOs.
+heap-trampoline.o: HOST_LIBGCC2_CFLAGS += \
+ -DHEAP_T_ATTR='__attribute__((__weak__,__visibility__("default")))'
+heap-trampoline_s.o: HOST_LIBGCC2_CFLAGS += \
+ -DHEAP_T_ATTR='__attribute__((__weak__,__visibility__("default")))'
+
+# Make a heap trampoline support CRT so that it can be linked optionally, use
+# the shared version so that we can link with DSOs.
+libheapt_w.a: heap-trampoline_s.o
+ $(AR_CREATE_FOR_TARGET) $@ $<
+ $(RANLIB_FOR_TARGET) $@
+
# Symbols for all the sub-ports.
SHLIB_MAPFILES = libgcc-std.ver $(srcdir)/config/libgcc-libsystem.ver
diff --git a/libgcc/libgcc-std.ver.in b/libgcc/libgcc-std.ver.in
index a81c5a1..ac8f661 100644
--- a/libgcc/libgcc-std.ver.in
+++ b/libgcc/libgcc-std.ver.in
@@ -1943,9 +1943,6 @@ GCC_4.8.0 {
GCC_7.0.0 {
__PFX__divmoddi4
__PFX__divmodti4
-
- __builtin_nested_func_ptr_created
- __builtin_nested_func_ptr_deleted
}
%inherit GCC_14.0.0 GCC_7.0.0
@@ -1960,4 +1957,6 @@ GCC_14.0.0 {
__PFX__strub_enter
__PFX__strub_update
__PFX__strub_leave
+ __gcc_nested_func_ptr_created
+ __gcc_nested_func_ptr_deleted
}
diff --git a/libgcc/libgcc2.h b/libgcc/libgcc2.h
index 5050456..0b67fab 100644
--- a/libgcc/libgcc2.h
+++ b/libgcc/libgcc2.h
@@ -29,8 +29,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#pragma GCC visibility push(default)
#endif
-extern void __builtin_nested_func_ptr_created (void *, void *, void **);
-extern void __builtin_nested_func_ptr_deleted (void);
+extern void __gcc_nested_func_ptr_created (void *, void *, void **);
+extern void __gcc_nested_func_ptr_deleted (void);
extern int __gcc_bcmp (const unsigned char *, const unsigned char *, size_t);
extern void __clear_cache (void *, void *);
diff --git a/libgm2/ChangeLog b/libgm2/ChangeLog
index bac9a80..9d9014d 100644
--- a/libgm2/ChangeLog
+++ b/libgm2/ChangeLog
@@ -1,3 +1,19 @@
+2024-01-18 Gaius Mulley <gaiusmod2@gmail.com>
+
+ PR modula2/111956
+ * Makefile.am (TARGET_LONGDOUBLE_ABI): Remove.
+ * Makefile.in: Regenerate.
+ * libm2cor/Makefile.am (TARGET_LONGDOUBLE_ABI): Remove.
+ * libm2cor/Makefile.in: Regenerate.
+ * libm2iso/Makefile.am (TARGET_LONGDOUBLE_ABI): Remove.
+ * libm2iso/Makefile.in: Regenerate.
+ * libm2log/Makefile.am (TARGET_LONGDOUBLE_ABI): Remove.
+ * libm2log/Makefile.in: Regenerate.
+ * libm2min/Makefile.am (TARGET_LONGDOUBLE_ABI): Remove.
+ * libm2min/Makefile.in: Regenerate.
+ * libm2pim/Makefile.am (TARGET_LONGDOUBLE_ABI): Remove.
+ * libm2pim/Makefile.in: Regenerate.
+
2024-01-05 Gaius Mulley <gaiusmod2@gmail.com>
* libm2iso/RTco.cc (initialized): Use bool instead of int.
diff --git a/libgm2/Makefile.am b/libgm2/Makefile.am
index 72391d0..ef29732 100644
--- a/libgm2/Makefile.am
+++ b/libgm2/Makefile.am
@@ -35,8 +35,6 @@ AM_CFLAGS = -I $(srcdir)/../libgcc -I $(MULTIBUILDTOP)../../gcc/include
gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER)
TOP_GCCDIR := $(shell cd $(top_srcdir) && cd .. && pwd)
-TARGET_LONGDOUBLE_ABI := $(if $(strip $(filter powerpc64le%,$(target))),-mabi=ieeelongdouble)
-
GCC_DIR = $(TOP_GCCDIR)/gcc
GM2_SRC = $(GCC_DIR)/m2
@@ -101,7 +99,6 @@ AM_MAKEFLAGS = \
"WERROR=$(WERROR)" \
"TARGET_LIB_PATH=$(TARGET_LIB_PATH)" \
"TARGET_LIB_PATH_libgm2=$(TARGET_LIB_PATH_libgm2)" \
- "TARGET_LONGDOUBLE_ABI=$(TARGET_LONGDOUBLE_ABI)" \
"LIBTOOL=$(GM2_BUILDDIR)/libtool" \
"DARWIN_AT_RPATH=$(DARWIN_AT_RPATH)"
diff --git a/libgm2/Makefile.in b/libgm2/Makefile.in
index 4c30d2b..f259df7 100644
--- a/libgm2/Makefile.in
+++ b/libgm2/Makefile.in
@@ -347,7 +347,6 @@ MAKEOVERRIDES =
AM_CFLAGS = -I $(srcdir)/../libgcc -I $(MULTIBUILDTOP)../../gcc/include
gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER)
TOP_GCCDIR := $(shell cd $(top_srcdir) && cd .. && pwd)
-TARGET_LONGDOUBLE_ABI := $(if $(strip $(filter powerpc64le%,$(target))),-mabi=ieeelongdouble)
GCC_DIR = $(TOP_GCCDIR)/gcc
GM2_SRC = $(GCC_DIR)/m2
SUBDIRS = libm2min libm2log libm2cor libm2iso libm2pim
@@ -403,7 +402,6 @@ AM_MAKEFLAGS = \
"WERROR=$(WERROR)" \
"TARGET_LIB_PATH=$(TARGET_LIB_PATH)" \
"TARGET_LIB_PATH_libgm2=$(TARGET_LIB_PATH_libgm2)" \
- "TARGET_LONGDOUBLE_ABI=$(TARGET_LONGDOUBLE_ABI)" \
"LIBTOOL=$(GM2_BUILDDIR)/libtool" \
"DARWIN_AT_RPATH=$(DARWIN_AT_RPATH)"
diff --git a/libgm2/libm2cor/Makefile.am b/libgm2/libm2cor/Makefile.am
index a515bd2..edf9243 100644
--- a/libgm2/libm2cor/Makefile.am
+++ b/libgm2/libm2cor/Makefile.am
@@ -91,7 +91,6 @@ AM_MAKEFLAGS = \
"NM_FOR_TARGET=$(NM_FOR_TARGET)" \
"DESTDIR=$(DESTDIR)" \
"WERROR=$(WERROR)" \
- "TARGET_LONGDOUBLE_ABI=$(TARGET_LONGDOUBLE_ABI)" \
"TARGET_LIB_PATH_libgm2=$(TARGET_LIB_PATH_libgm2)"
# Subdir rules rely on $(FLAGS_TO_PASS)
@@ -116,14 +115,14 @@ libm2cordir = libm2cor
libm2cor_la_DEPENDENCIES = SYSTEM.def $(addsuffix .lo, $(basename $(libm2cor_la_SOURCES)))
libm2cor_la_CFLAGS = \
-I. -I.. -I$(GM2_SRC)/gm2-libs -I$(GM2_SRC)/gm2-libs-iso \
- -DBUILD_GM2_LIBS -I@srcdir@/../ -I@srcdir@/../libm2iso \
- $(TARGET_LONGDOUBLE_ABI)
+ -DBUILD_GM2_LIBS -I@srcdir@/../ -I@srcdir@/../libm2iso
+
libm2cor_la_M2FLAGS = \
-fm2-pathname=m2cor -I. -I$(GM2_SRC)/gm2-libs-coroutines \
-fm2-pathname=m2pim -I$(GM2_SRC)/gm2-libs \
-fm2-pathname=m2iso -I$(GM2_SRC)/gm2-libs-iso \
- -fm2-g -g -Wcase-enum -Wreturn-type -fcase -fm2-prefix=m2cor \
- $(TARGET_LONGDOUBLE_ABI)
+ -fm2-g -g -Wcase-enum -Wreturn-type -fcase -fm2-prefix=m2cor
+
if TARGET_DARWIN
libm2cor_la_link_flags = -Wl,-undefined,dynamic_lookup
else
diff --git a/libgm2/libm2cor/Makefile.in b/libgm2/libm2cor/Makefile.in
index faf2433..6329938 100644
--- a/libgm2/libm2cor/Makefile.in
+++ b/libgm2/libm2cor/Makefile.in
@@ -455,7 +455,6 @@ AM_MAKEFLAGS = \
"NM_FOR_TARGET=$(NM_FOR_TARGET)" \
"DESTDIR=$(DESTDIR)" \
"WERROR=$(WERROR)" \
- "TARGET_LONGDOUBLE_ABI=$(TARGET_LONGDOUBLE_ABI)" \
"TARGET_LIB_PATH_libgm2=$(TARGET_LIB_PATH_libgm2)"
@@ -475,15 +474,13 @@ FLAGS_TO_PASS = $(AM_MAKEFLAGS)
@BUILD_CORLIB_TRUE@libm2cor_la_DEPENDENCIES = SYSTEM.def $(addsuffix .lo, $(basename $(libm2cor_la_SOURCES)))
@BUILD_CORLIB_TRUE@libm2cor_la_CFLAGS = \
@BUILD_CORLIB_TRUE@ -I. -I.. -I$(GM2_SRC)/gm2-libs -I$(GM2_SRC)/gm2-libs-iso \
-@BUILD_CORLIB_TRUE@ -DBUILD_GM2_LIBS -I@srcdir@/../ -I@srcdir@/../libm2iso \
-@BUILD_CORLIB_TRUE@ $(TARGET_LONGDOUBLE_ABI)
+@BUILD_CORLIB_TRUE@ -DBUILD_GM2_LIBS -I@srcdir@/../ -I@srcdir@/../libm2iso
@BUILD_CORLIB_TRUE@libm2cor_la_M2FLAGS = \
@BUILD_CORLIB_TRUE@ -fm2-pathname=m2cor -I. -I$(GM2_SRC)/gm2-libs-coroutines \
@BUILD_CORLIB_TRUE@ -fm2-pathname=m2pim -I$(GM2_SRC)/gm2-libs \
@BUILD_CORLIB_TRUE@ -fm2-pathname=m2iso -I$(GM2_SRC)/gm2-libs-iso \
-@BUILD_CORLIB_TRUE@ -fm2-g -g -Wcase-enum -Wreturn-type -fcase -fm2-prefix=m2cor \
-@BUILD_CORLIB_TRUE@ $(TARGET_LONGDOUBLE_ABI)
+@BUILD_CORLIB_TRUE@ -fm2-g -g -Wcase-enum -Wreturn-type -fcase -fm2-prefix=m2cor
@BUILD_CORLIB_TRUE@@TARGET_DARWIN_FALSE@libm2cor_la_link_flags = \
@BUILD_CORLIB_TRUE@@TARGET_DARWIN_FALSE@ $(am__append_1)
diff --git a/libgm2/libm2iso/Makefile.am b/libgm2/libm2iso/Makefile.am
index 01b5dc7..ee9afde 100644
--- a/libgm2/libm2iso/Makefile.am
+++ b/libgm2/libm2iso/Makefile.am
@@ -90,7 +90,6 @@ AM_MAKEFLAGS = \
"NM_FOR_TARGET=$(NM_FOR_TARGET)" \
"DESTDIR=$(DESTDIR)" \
"WERROR=$(WERROR)" \
- "TARGET_LONGDOUBLE_ABI=$(TARGET_LONGDOUBLE_ABI)" \
"TARGET_LIB_PATH_libgm2=$(TARGET_LIB_PATH_libgm2)"
# Subdir rules rely on $(FLAGS_TO_PASS)
@@ -199,14 +198,14 @@ libm2iso_la_DEPENDENCIES = SYSTEM.def $(addsuffix .lo, $(basename $(libm2iso_la_
libm2iso_la_CFLAGS = \
$(C_INCLUDES) -I. -I.. -I$(GM2_SRC)/gm2-libs-iso -I$(GM2_SRC)/gm2-libs \
-DBUILD_GM2_LIBS -I@srcdir@/../ -I../../../gcc -I$(GCC_DIR) -I$(GCC_DIR)/../include \
- -I../../libgcc -I$(GCC_DIR)/../libgcc -I$(MULTIBUILDTOP)../../gcc/include \
- $(TARGET_LONGDOUBLE_ABI)
+ -I../../libgcc -I$(GCC_DIR)/../libgcc -I$(MULTIBUILDTOP)../../gcc/include
+
libm2iso_la_M2FLAGS = \
-fm2-pathname=m2iso -I. -Ilibm2iso -I$(GM2_SRC)/gm2-libs-iso \
-fm2-pathname=m2pim -I$(GM2_SRC)/gm2-libs \
-fiso -fextended-opaque -fm2-g -g -Wcase-enum \
- -Wreturn-type -fcase -fm2-prefix=m2iso \
- $(TARGET_LONGDOUBLE_ABI)
+ -Wreturn-type -fcase -fm2-prefix=m2iso
+
if TARGET_DARWIN
libm2iso_la_link_flags = -Wl,-undefined,dynamic_lookup
else
diff --git a/libgm2/libm2iso/Makefile.in b/libgm2/libm2iso/Makefile.in
index 1d04835..964c6da 100644
--- a/libgm2/libm2iso/Makefile.in
+++ b/libgm2/libm2iso/Makefile.in
@@ -480,7 +480,6 @@ AM_MAKEFLAGS = \
"NM_FOR_TARGET=$(NM_FOR_TARGET)" \
"DESTDIR=$(DESTDIR)" \
"WERROR=$(WERROR)" \
- "TARGET_LONGDOUBLE_ABI=$(TARGET_LONGDOUBLE_ABI)" \
"TARGET_LIB_PATH_libgm2=$(TARGET_LIB_PATH_libgm2)"
@@ -586,15 +585,13 @@ FLAGS_TO_PASS = $(AM_MAKEFLAGS)
@BUILD_ISOLIB_TRUE@libm2iso_la_CFLAGS = \
@BUILD_ISOLIB_TRUE@ $(C_INCLUDES) -I. -I.. -I$(GM2_SRC)/gm2-libs-iso -I$(GM2_SRC)/gm2-libs \
@BUILD_ISOLIB_TRUE@ -DBUILD_GM2_LIBS -I@srcdir@/../ -I../../../gcc -I$(GCC_DIR) -I$(GCC_DIR)/../include \
-@BUILD_ISOLIB_TRUE@ -I../../libgcc -I$(GCC_DIR)/../libgcc -I$(MULTIBUILDTOP)../../gcc/include \
-@BUILD_ISOLIB_TRUE@ $(TARGET_LONGDOUBLE_ABI)
+@BUILD_ISOLIB_TRUE@ -I../../libgcc -I$(GCC_DIR)/../libgcc -I$(MULTIBUILDTOP)../../gcc/include
@BUILD_ISOLIB_TRUE@libm2iso_la_M2FLAGS = \
@BUILD_ISOLIB_TRUE@ -fm2-pathname=m2iso -I. -Ilibm2iso -I$(GM2_SRC)/gm2-libs-iso \
@BUILD_ISOLIB_TRUE@ -fm2-pathname=m2pim -I$(GM2_SRC)/gm2-libs \
@BUILD_ISOLIB_TRUE@ -fiso -fextended-opaque -fm2-g -g -Wcase-enum \
-@BUILD_ISOLIB_TRUE@ -Wreturn-type -fcase -fm2-prefix=m2iso \
-@BUILD_ISOLIB_TRUE@ $(TARGET_LONGDOUBLE_ABI)
+@BUILD_ISOLIB_TRUE@ -Wreturn-type -fcase -fm2-prefix=m2iso
@BUILD_ISOLIB_TRUE@@TARGET_DARWIN_FALSE@libm2iso_la_link_flags = \
@BUILD_ISOLIB_TRUE@@TARGET_DARWIN_FALSE@ $(am__append_1)
diff --git a/libgm2/libm2log/Makefile.am b/libgm2/libm2log/Makefile.am
index 8dadaae..ac690c8 100644
--- a/libgm2/libm2log/Makefile.am
+++ b/libgm2/libm2log/Makefile.am
@@ -90,7 +90,6 @@ AM_MAKEFLAGS = \
"NM_FOR_TARGET=$(NM_FOR_TARGET)" \
"DESTDIR=$(DESTDIR)" \
"WERROR=$(WERROR)" \
- "TARGET_LONGDOUBLE_ABI=$(TARGET_LONGDOUBLE_ABI)" \
"TARGET_LIB_PATH_libgm2=$(TARGET_LIB_PATH_libgm2)"
# Subdir rules rely on $(FLAGS_TO_PASS)
@@ -138,8 +137,8 @@ libm2log_la_M2FLAGS = \
-fm2-pathname=m2pim -I$(GM2_SRC)/gm2-libs \
-fm2-pathname=m2iso -I$(GM2_SRC)/gm2-libs-iso \
-Wcase-enum -Wreturn-type \
- -fcase -fm2-prefix=m2log \
- $(TARGET_LONGDOUBLE_ABI)
+ -fcase -fm2-prefix=m2log
+
if TARGET_DARWIN
libm2log_la_link_flags = -Wl,-undefined,dynamic_lookup
else
diff --git a/libgm2/libm2log/Makefile.in b/libgm2/libm2log/Makefile.in
index 4c37135..bd0f834 100644
--- a/libgm2/libm2log/Makefile.in
+++ b/libgm2/libm2log/Makefile.in
@@ -443,7 +443,6 @@ AM_MAKEFLAGS = \
"NM_FOR_TARGET=$(NM_FOR_TARGET)" \
"DESTDIR=$(DESTDIR)" \
"WERROR=$(WERROR)" \
- "TARGET_LONGDOUBLE_ABI=$(TARGET_LONGDOUBLE_ABI)" \
"TARGET_LIB_PATH_libgm2=$(TARGET_LIB_PATH_libgm2)"
@@ -487,8 +486,7 @@ FLAGS_TO_PASS = $(AM_MAKEFLAGS)
@BUILD_LOGLIB_TRUE@ -fm2-pathname=m2pim -I$(GM2_SRC)/gm2-libs \
@BUILD_LOGLIB_TRUE@ -fm2-pathname=m2iso -I$(GM2_SRC)/gm2-libs-iso \
@BUILD_LOGLIB_TRUE@ -Wcase-enum -Wreturn-type \
-@BUILD_LOGLIB_TRUE@ -fcase -fm2-prefix=m2log \
-@BUILD_LOGLIB_TRUE@ $(TARGET_LONGDOUBLE_ABI)
+@BUILD_LOGLIB_TRUE@ -fcase -fm2-prefix=m2log
@BUILD_LOGLIB_TRUE@@TARGET_DARWIN_FALSE@libm2log_la_link_flags = \
@BUILD_LOGLIB_TRUE@@TARGET_DARWIN_FALSE@ $(am__append_1)
diff --git a/libgm2/libm2min/Makefile.am b/libgm2/libm2min/Makefile.am
index ab627e8..b95b5dd 100644
--- a/libgm2/libm2min/Makefile.am
+++ b/libgm2/libm2min/Makefile.am
@@ -89,7 +89,6 @@ AM_MAKEFLAGS = \
"NM_FOR_TARGET=$(NM_FOR_TARGET)" \
"DESTDIR=$(DESTDIR)" \
"WERROR=$(WERROR)" \
- "TARGET_LONGDOUBLE_ABI=$(TARGET_LONGDOUBLE_ABI)" \
"TARGET_LIB_PATH_libgm2=$(TARGET_LIB_PATH_libgm2)"
# Subdir rules rely on $(FLAGS_TO_PASS)
@@ -104,12 +103,12 @@ libm2mindir = libm2min
toolexeclib_LTLIBRARIES = libm2min.la
libm2min_la_SOURCES = $(M2MODS) libc.c
libm2min_la_DEPENDENCIES = SYSTEM.def $(addsuffix .lo, $(basename $(libm2min_la_SOURCES)))
-libm2min_la_CFLAGS = -I. -I$(GM2_SRC)/gm2-libs-min -I$(GM2_SRC)/gm2-libs $(TARGET_LONGDOUBLE_ABI)
+libm2min_la_CFLAGS = -I. -I$(GM2_SRC)/gm2-libs-min -I$(GM2_SRC)/gm2-libs
libm2min_la_M2FLAGS = \
-fm2-pathname=m2min -I. -I$(GM2_SRC)/gm2-libs-min \
-fm2-pathname=m2pim -I$(GM2_SRC)/gm2-libs -fno-exceptions \
- -fno-m2-plugin -fno-scaffold-dynamic -fno-scaffold-main -fm2-prefix=m2min \
- $(TARGET_LONGDOUBLE_ABI)
+ -fno-m2-plugin -fno-scaffold-dynamic -fno-scaffold-main -fm2-prefix=m2min
+
if TARGET_DARWIN
libm2min_la_link_flags = -Wl,-undefined,dynamic_lookup
else
diff --git a/libgm2/libm2min/Makefile.in b/libgm2/libm2min/Makefile.in
index 1d723e4..453a3ac 100644
--- a/libgm2/libm2min/Makefile.in
+++ b/libgm2/libm2min/Makefile.in
@@ -432,7 +432,6 @@ AM_MAKEFLAGS = \
"NM_FOR_TARGET=$(NM_FOR_TARGET)" \
"DESTDIR=$(DESTDIR)" \
"WERROR=$(WERROR)" \
- "TARGET_LONGDOUBLE_ABI=$(TARGET_LONGDOUBLE_ABI)" \
"TARGET_LIB_PATH_libgm2=$(TARGET_LIB_PATH_libgm2)"
@@ -446,12 +445,11 @@ libm2mindir = libm2min
toolexeclib_LTLIBRARIES = libm2min.la
libm2min_la_SOURCES = $(M2MODS) libc.c
libm2min_la_DEPENDENCIES = SYSTEM.def $(addsuffix .lo, $(basename $(libm2min_la_SOURCES)))
-libm2min_la_CFLAGS = -I. -I$(GM2_SRC)/gm2-libs-min -I$(GM2_SRC)/gm2-libs $(TARGET_LONGDOUBLE_ABI)
+libm2min_la_CFLAGS = -I. -I$(GM2_SRC)/gm2-libs-min -I$(GM2_SRC)/gm2-libs
libm2min_la_M2FLAGS = \
-fm2-pathname=m2min -I. -I$(GM2_SRC)/gm2-libs-min \
-fm2-pathname=m2pim -I$(GM2_SRC)/gm2-libs -fno-exceptions \
- -fno-m2-plugin -fno-scaffold-dynamic -fno-scaffold-main -fm2-prefix=m2min \
- $(TARGET_LONGDOUBLE_ABI)
+ -fno-m2-plugin -fno-scaffold-dynamic -fno-scaffold-main -fm2-prefix=m2min
@TARGET_DARWIN_FALSE@libm2min_la_link_flags = $(am__append_1)
@TARGET_DARWIN_TRUE@libm2min_la_link_flags = \
diff --git a/libgm2/libm2pim/Makefile.am b/libgm2/libm2pim/Makefile.am
index 4c5e046..b575cab 100644
--- a/libgm2/libm2pim/Makefile.am
+++ b/libgm2/libm2pim/Makefile.am
@@ -88,7 +88,6 @@ AM_MAKEFLAGS = \
"NM_FOR_TARGET=$(NM_FOR_TARGET)" \
"DESTDIR=$(DESTDIR)" \
"WERROR=$(WERROR)" \
- "TARGET_LONGDOUBLE_ABI=$(TARGET_LONGDOUBLE_ABI)" \
"TARGET_LIB_PATH_libgm2=$(TARGET_LIB_PATH_libgm2)"
# Subdir rules rely on $(FLAGS_TO_PASS)
@@ -168,14 +167,14 @@ libm2pimdir = libm2pim
libm2pim_la_DEPENDENCIES = SYSTEM.def $(addsuffix .lo, $(basename $(libm2pim_la_SOURCES)))
libm2pim_la_CFLAGS = \
-I. -I.. -I$(GM2_SRC)/gm2-libs -I$(GM2_SRC)/gm2-libs-iso \
- -DBUILD_GM2_LIBS -I@srcdir@/../ -I@srcdir@/../libm2iso \
- $(TARGET_LONGDOUBLE_ABI)
+ -DBUILD_GM2_LIBS -I@srcdir@/../ -I@srcdir@/../libm2iso
+
libm2pim_la_M2FLAGS = \
-fm2-pathname=m2pim -I. -I$(GM2_SRC)/gm2-libs \
-fm2-pathname=m2iso -I$(GM2_SRC)/gm2-libs-iso \
-fm2-g -g -Wcase-enum -Wreturn-type \
- -fcase -fm2-prefix=m2pim \
- $(TARGET_LONGDOUBLE_ABI)
+ -fcase -fm2-prefix=m2pim
+
if TARGET_DARWIN
libm2pim_la_link_flags = -Wl,-undefined,dynamic_lookup
else
diff --git a/libgm2/libm2pim/Makefile.in b/libgm2/libm2pim/Makefile.in
index eca7e85..85623d0 100644
--- a/libgm2/libm2pim/Makefile.in
+++ b/libgm2/libm2pim/Makefile.in
@@ -467,7 +467,6 @@ AM_MAKEFLAGS = \
"NM_FOR_TARGET=$(NM_FOR_TARGET)" \
"DESTDIR=$(DESTDIR)" \
"WERROR=$(WERROR)" \
- "TARGET_LONGDOUBLE_ABI=$(TARGET_LONGDOUBLE_ABI)" \
"TARGET_LIB_PATH_libgm2=$(TARGET_LIB_PATH_libgm2)"
@@ -545,15 +544,13 @@ FLAGS_TO_PASS = $(AM_MAKEFLAGS)
@BUILD_PIMLIB_TRUE@libm2pim_la_DEPENDENCIES = SYSTEM.def $(addsuffix .lo, $(basename $(libm2pim_la_SOURCES)))
@BUILD_PIMLIB_TRUE@libm2pim_la_CFLAGS = \
@BUILD_PIMLIB_TRUE@ -I. -I.. -I$(GM2_SRC)/gm2-libs -I$(GM2_SRC)/gm2-libs-iso \
-@BUILD_PIMLIB_TRUE@ -DBUILD_GM2_LIBS -I@srcdir@/../ -I@srcdir@/../libm2iso \
-@BUILD_PIMLIB_TRUE@ $(TARGET_LONGDOUBLE_ABI)
+@BUILD_PIMLIB_TRUE@ -DBUILD_GM2_LIBS -I@srcdir@/../ -I@srcdir@/../libm2iso
@BUILD_PIMLIB_TRUE@libm2pim_la_M2FLAGS = \
@BUILD_PIMLIB_TRUE@ -fm2-pathname=m2pim -I. -I$(GM2_SRC)/gm2-libs \
@BUILD_PIMLIB_TRUE@ -fm2-pathname=m2iso -I$(GM2_SRC)/gm2-libs-iso \
@BUILD_PIMLIB_TRUE@ -fm2-g -g -Wcase-enum -Wreturn-type \
-@BUILD_PIMLIB_TRUE@ -fcase -fm2-prefix=m2pim \
-@BUILD_PIMLIB_TRUE@ $(TARGET_LONGDOUBLE_ABI)
+@BUILD_PIMLIB_TRUE@ -fcase -fm2-prefix=m2pim
@BUILD_PIMLIB_TRUE@@TARGET_DARWIN_FALSE@libm2pim_la_link_flags = \
@BUILD_PIMLIB_TRUE@@TARGET_DARWIN_FALSE@ $(am__append_1)
diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog
index 425b227..c6bc101 100644
--- a/libgomp/ChangeLog
+++ b/libgomp/ChangeLog
@@ -1,3 +1,56 @@
+2024-01-29 Tobias Burnus <tburnus@baylibre.com>
+
+ * testsuite/libgomp.c/declare-variant-4.h: Use gfx1100/gfx1030
+ function not gfx90a for gfx1100/gfx1030 context selector.
+
+2024-01-26 Richard Biener <rguenther@suse.de>
+
+ * plugin/plugin-gcn.c (suitable_hsa_agent_p): Filter out
+ agents with unsupported ISA.
+
+2024-01-26 Richard Biener <rguenther@suse.de>
+
+ * plugin/plugin-gcn.c
+ (EF_AMDGPU_MACH::EF_AMDGPU_MACH_UNSUPPORTED): Add.
+ (isa_code): Return that instead of -1.
+ (GOMP_OFFLOAD_init_device): Adjust.
+
+2024-01-26 Tobias Burnus <tburnus@baylibre.com>
+
+ * testsuite/libgomp.c/declare-variant-4.h: Add variant functions
+ for gfx1030 and gfx1100.
+ * testsuite/libgomp.c/declare-variant-4-gfx1030.c: New test.
+ * testsuite/libgomp.c/declare-variant-4-gfx1100.c: New test.
+
+2024-01-26 Andrew Stubbs <ams@baylibre.com>
+
+ * config/gcn/time.c (RTC_TICKS): Configure RDNA3.
+ (omp_get_wtime): Add RDNA3-compatible variant.
+ * plugin/plugin-gcn.c (max_isa_vgprs): Tune for gfx1030 and gfx1100.
+
+2024-01-24 Tobias Burnus <tburnus@baylibre.com>
+ Sandra Loosemore <sandra@codesourcery.com>
+
+ * libgomp.texi (Runtime Library Routines): Document
+ omp_pause_resource, omp_pause_resource_all and
+ omp_target_memcpy{,_rect}{,_async}.
+
+2024-01-22 Tobias Burnus <tburnus@baylibre.com>
+
+ * testsuite/libgomp.c/declare-variant-4-fiji.c: Xfail as fiji
+ support is no longer enabled by default.
+ * testsuite/libgomp.c/declare-variant-4-gfx803.c: Likewise.
+
+2024-01-20 John David Anglin <danglin@gcc.gnu.org>
+
+ * testsuite/libgomp.fortran/alloc-comp-3.f90: Increase
+ timeout by 2 on hppa*-*-*.
+
+2024-01-20 John David Anglin <danglin@gcc.gnu.org>
+
+ * testsuite/libgomp.c/simd-math-1.c: Don't run on
+ hppa*-*-hpux*.
+
2024-01-17 Jakub Jelinek <jakub@redhat.com>
PR middle-end/113409
diff --git a/libgomp/config/gcn/time.c b/libgomp/config/gcn/time.c
index 30a0d01..efcd04f 100644
--- a/libgomp/config/gcn/time.c
+++ b/libgomp/config/gcn/time.c
@@ -30,15 +30,25 @@
/* According to AMD:
dGPU RTC is 27MHz
AGPU RTC is 100MHz
+ RDNA3 ISA manual states "typically 100MHz"
FIXME: DTRT on an APU. */
+#ifdef __RDNA3__
+#define RTC_TICKS (1.0 / 100000000.0) /* 100MHz */
+#else
#define RTC_TICKS (1.0 / 27000000.0) /* 27MHz */
+#endif
double
omp_get_wtime (void)
{
uint64_t clock;
+#ifdef __RDNA3__
+ asm ("s_sendmsg_rtn_b64 %0 0x83 ;Get REALTIME\n\t"
+ "s_waitcnt 0" : "=r" (clock));
+#else
asm ("s_memrealtime %0\n\t"
"s_waitcnt 0" : "=r" (clock));
+#endif
return clock * RTC_TICKS;
}
diff --git a/libgomp/libgomp.texi b/libgomp/libgomp.texi
index 74d4ef3..6ee9230 100644
--- a/libgomp/libgomp.texi
+++ b/libgomp/libgomp.texi
@@ -561,7 +561,7 @@ specification in version 5.2.
* Thread Affinity Routines::
* Teams Region Routines::
* Tasking Routines::
-@c * Resource Relinquishing Routines::
+* Resource Relinquishing Routines::
* Device Information Routines::
* Device Memory Routines::
* Lock Routines::
@@ -1504,16 +1504,78 @@ and @code{false} represent their language-specific counterparts.
-@c @node Resource Relinquishing Routines
-@c @section Resource Relinquishing Routines
-@c
-@c Routines releasing resources used by the OpenMP runtime.
-@c They have C linkage and do not throw exceptions.
-@c
-@c @menu
-@c * omp_pause_resource:: <fixme>
-@c * omp_pause_resource_all:: <fixme>
-@c @end menu
+@node Resource Relinquishing Routines
+@section Resource Relinquishing Routines
+
+Routines releasing resources used by the OpenMP runtime.
+They have C linkage and do not throw exceptions.
+
+@menu
+* omp_pause_resource:: Release OpenMP resources on a device
+* omp_pause_resource_all:: Release OpenMP resources on all devices
+@end menu
+
+
+
+@node omp_pause_resource
+@subsection @code{omp_pause_resource} -- Release OpenMP resources on a device
+@table @asis
+@item @emph{Description}:
+Free resources used by the OpenMP program and the runtime library on and for the
+device specified by @var{device_num}; on success, zero is returned and non-zero
+otherwise.
+
+The value of @var{device_num} must be a conforming device number. The routine
+may not be called from within any explicit region and all explicit threads that
+do not bind to the implicit parallel region have finalized execution.
+
+@item @emph{C/C++}:
+@multitable @columnfractions .20 .80
+@item @emph{Prototype}: @tab @code{int omp_pause_resource(omp_pause_resource_t kind, int device_num);}
+@end multitable
+
+@item @emph{Fortran}:
+@multitable @columnfractions .20 .80
+@item @emph{Interface}: @tab @code{integer function omp_pause_resource(kind, device_num)}
+@item @tab @code{integer (kind=omp_pause_resource_kind) kind}
+@item @tab @code{integer device_num}
+@end multitable
+
+@item @emph{Reference}:
+@uref{https://www.openmp.org, OpenMP specification v5.0}, Section 3.2.43.
+@end table
+
+
+
+@node omp_pause_resource_all
+@subsection @code{omp_pause_resource_all} -- Release OpenMP resources on all devices
+@table @asis
+@item @emph{Description}:
+Free resources used by the OpenMP program and the runtime library on all devices,
+including the host. On success, zero is returned and non-zero otherwise.
+
+The routine may not be called from within any explicit region and all explicit
+threads that do not bind to the implicit parallel region have finalized execution.
+
+@item @emph{C/C++}:
+@multitable @columnfractions .20 .80
+@item @emph{Prototype}: @tab @code{int omp_pause_resource(omp_pause_resource_t kind);}
+@end multitable
+
+@item @emph{Fortran}:
+@multitable @columnfractions .20 .80
+@item @emph{Interface}: @tab @code{integer function omp_pause_resource(kind)}
+@item @tab @code{integer (kind=omp_pause_resource_kind) kind}
+@end multitable
+
+@item @emph{See also}:
+@ref{omp_pause_resource}
+
+@item @emph{Reference}:
+@uref{https://www.openmp.org, OpenMP specification v5.0}, Section 3.2.44.
+@end table
+
+
@node Device Information Routines
@section Device Information Routines
@@ -1720,10 +1782,10 @@ pointers on devices. They have C linkage and do not throw exceptions.
* omp_target_free:: Free device memory
* omp_target_is_present:: Check whether storage is mapped
* omp_target_is_accessible:: Check whether memory is device accessible
-@c * omp_target_memcpy:: <fixme>
-@c * omp_target_memcpy_rect:: <fixme>
-@c * omp_target_memcpy_async:: <fixme>
-@c * omp_target_memcpy_rect_async:: <fixme>
+* omp_target_memcpy:: Copy data between devices
+* omp_target_memcpy_rect:: Copy a subvolume of data between devices
+* omp_target_memcpy_async:: Copy data between devices asynchronously
+* omp_target_memcpy_rect_async:: Copy a subvolume of data between devices asynchronously
@c * omp_target_memset:: <fixme>/TR12
@c * omp_target_memset_async:: <fixme>/TR12
* omp_target_associate_ptr:: Associate a device pointer with a host pointer
@@ -1899,6 +1961,246 @@ is not supported.
+@node omp_target_memcpy
+@subsection @code{omp_target_memcpy} -- Copy data between devices
+@table @asis
+@item @emph{Description}:
+This routine copies @var{length} of bytes of data from the device
+identified by device number @var{src_device_num} to device @var{dst_device_num}.
+The data is copied from the source device from the address provided by
+@var{src}, shifted by the offset of @var{src_offset} bytes, to the destination
+device's @var{dst} address shifted by @var{dst_offset}. The routine returns
+zero on success and non-zero otherwise.
+
+Running this routine in a @code{target} region except on the initial device
+is not supported.
+
+@item @emph{C/C++}
+@multitable @columnfractions .20 .80
+@item @emph{Prototype}: @tab @code{int omp_target_memcpy(void *dst,}
+@item @tab @code{ const void *src,}
+@item @tab @code{ size_t length,}
+@item @tab @code{ size_t dst_offset,}
+@item @tab @code{ size_t src_offset,}
+@item @tab @code{ int dst_device_num,}
+@item @tab @code{ int src_device_num)}
+@end multitable
+
+@item @emph{Fortran}:
+@multitable @columnfractions .20 .80
+@item @emph{Interface}: @tab @code{integer(c_int) function omp_target_memcpy( &}
+@item @tab @code{ dst, src, length, dst_offset, src_offset, &}
+@item @tab @code{ dst_device_num, src_device_num) bind(C)}
+@item @tab @code{use, intrinsic :: iso_c_binding, only: c_ptr, c_size_t, c_int}
+@item @tab @code{type(c_ptr), value :: dst, src}
+@item @tab @code{integer(c_size_t), value :: length, dst_offset, src_offset}
+@item @tab @code{integer(c_int), value :: dst_device_num, src_device_num}
+@end multitable
+
+@item @emph{See also}:
+@ref{omp_target_memcpy_async}, @ref{omp_target_memcpy_rect}
+
+@item @emph{Reference}:
+@uref{https://www.openmp.org, OpenMP specification v5.1}, Section 3.8.5
+@end table
+
+
+
+@node omp_target_memcpy_async
+@subsection @code{omp_target_memcpy_async} -- Copy data between devices asynchronously
+@table @asis
+@item @emph{Description}:
+This routine copies asynchronously @var{length} of bytes of data from the
+device identified by device number @var{src_device_num} to device
+@var{dst_device_num}. The data is copied from the source device from the
+address provided by @var{src}, shifted by the offset of @var{src_offset} bytes,
+to the destination device's @var{dst} address shifted by @var{dst_offset}.
+Task dependence is expressed by passing an array of depend objects to
+@var{depobj_list}, where the number of array elements is passed as
+@var{depobj_count}; if the count is zero, the @var{depobj_list} argument is
+ignored. The routine returns zero if the copying process has successfully
+been started and non-zero otherwise.
+
+Running this routine in a @code{target} region except on the initial device
+is not supported.
+
+@item @emph{C/C++}
+@multitable @columnfractions .20 .80
+@item @emph{Prototype}: @tab @code{int omp_target_memcpy_async(void *dst,}
+@item @tab @code{ const void *src,}
+@item @tab @code{ size_t length,}
+@item @tab @code{ size_t dst_offset,}
+@item @tab @code{ size_t src_offset,}
+@item @tab @code{ int dst_device_num,}
+@item @tab @code{ int src_device_num,}
+@item @tab @code{ int depobj_count,}
+@item @tab @code{ omp_depend_t *depobj_list)}
+@end multitable
+
+@item @emph{Fortran}:
+@multitable @columnfractions .20 .80
+@item @emph{Interface}: @tab @code{integer(c_int) function omp_target_memcpy_async( &}
+@item @tab @code{ dst, src, length, dst_offset, src_offset, &}
+@item @tab @code{ dst_device_num, src_device_num, &}
+@item @tab @code{ depobj_count, depobj_list) bind(C)}
+@item @tab @code{use, intrinsic :: iso_c_binding, only: c_ptr, c_size_t, c_int}
+@item @tab @code{type(c_ptr), value :: dst, src}
+@item @tab @code{integer(c_size_t), value :: length, dst_offset, src_offset}
+@item @tab @code{integer(c_int), value :: dst_device_num, src_device_num, depobj_count}
+@item @tab @code{integer(omp_depend_kind), optional :: depobj_list(*)}
+@end multitable
+
+@item @emph{See also}:
+@ref{omp_target_memcpy}, @ref{omp_target_memcpy_rect_async}
+
+@item @emph{Reference}:
+@uref{https://www.openmp.org, OpenMP specification v5.1}, Section 3.8.7
+@end table
+
+
+
+@node omp_target_memcpy_rect
+@subsection @code{omp_target_memcpy_rect} -- Copy a subvolume of data between devices
+@table @asis
+@item @emph{Description}:
+This routine copies a subvolume of data from the device identified by
+device number @var{src_device_num} to device @var{dst_device_num}.
+The array has @var{num_dims} dimensions and each array element has a size of
+@var{element_size} bytes. The @var{volume} array specifies how many elements
+per dimension are copied. The full sizes of the destination and source arrays
+are given by the @var{dst_dimensions} and @var{src_dimensions} arguments,
+respectively. The offset per dimension to the first element to be copied is
+given by the @var{dst_offset} and @var{src_offset} arguments. The routine
+returns zero on success and non-zero otherwise.
+
+The OpenMP specification only requires that @var{num_dims} up to three is
+supported. In order to find implementation-specific maximally supported number
+of dimensions, the routine returns this value when invoked with a null pointer
+to both the @var{dst} and @var{src} arguments. As GCC supports arbitrary
+dimensions, it returns @code{INT_MAX}.
+
+The device-number arguments must be conforming device numbers, the @var{src} and
+@var{dst} must be either both null pointers or all of the following must be
+fulfilled: @var{element_size} and @var{num_dims} must be positive and the
+@var{volume}, offset and dimension arrays must have at least @var{num_dims}
+dimensions.
+
+Running this routine in a @code{target} region is not supported except on
+the initial device.
+
+@item @emph{C/C++}
+@multitable @columnfractions .20 .80
+@item @emph{Prototype}: @tab @code{int omp_target_memcpy_rect(void *dst,}
+@item @tab @code{ const void *src,}
+@item @tab @code{ size_t element_size,}
+@item @tab @code{ int num_dims,}
+@item @tab @code{ const size_t *volume,}
+@item @tab @code{ const size_t *dst_offset,}
+@item @tab @code{ const size_t *src_offset,}
+@item @tab @code{ const size_t *dst_dimensions,}
+@item @tab @code{ const size_t *src_dimensions,}
+@item @tab @code{ int dst_device_num,}
+@item @tab @code{ int src_device_num)}
+@end multitable
+
+@item @emph{Fortran}:
+@multitable @columnfractions .20 .80
+@item @emph{Interface}: @tab @code{integer(c_int) function omp_target_memcpy_rect( &}
+@item @tab @code{ dst, src, element_size, num_dims, volume, &}
+@item @tab @code{ dst_offset, src_offset, dst_dimensions, &}
+@item @tab @code{ src_dimensions, dst_device_num, src_device_num) bind(C)}
+@item @tab @code{use, intrinsic :: iso_c_binding, only: c_ptr, c_size_t, c_int}
+@item @tab @code{type(c_ptr), value :: dst, src}
+@item @tab @code{integer(c_size_t), value :: element_size, dst_offset, src_offset}
+@item @tab @code{integer(c_size_t), value :: volume, dst_dimensions, src_dimensions}
+@item @tab @code{integer(c_int), value :: num_dims, dst_device_num, src_device_num}
+@end multitable
+
+@item @emph{See also}:
+@ref{omp_target_memcpy_rect_async}, @ref{omp_target_memcpy}
+
+@item @emph{Reference}:
+@uref{https://www.openmp.org, OpenMP specification v5.1}, Section 3.8.6
+@end table
+
+
+
+@node omp_target_memcpy_rect_async
+@subsection @code{omp_target_memcpy_rect_async} -- Copy a subvolume of data between devices asynchronously
+@table @asis
+@item @emph{Description}:
+This routine copies asynchronously a subvolume of data from the device
+identified by device number @var{src_device_num} to device @var{dst_device_num}.
+The array has @var{num_dims} dimensions and each array element has a size of
+@var{element_size} bytes. The @var{volume} array specifies how many elements
+per dimension are copied. The full sizes of the destination and source arrays
+are given by the @var{dst_dimensions} and @var{src_dimensions} arguments,
+respectively. The offset per dimension to the first element to be copied is
+given by the @var{dst_offset} and @var{src_offset} arguments. Task dependence
+is expressed by passing an array of depend objects to @var{depobj_list}, where
+the number of array elements is passed as @var{depobj_count}; if the count is
+zero, the @var{depobj_list} argument is ignored. The routine
+returns zero on success and non-zero otherwise.
+
+The OpenMP specification only requires that @var{num_dims} up to three is
+supported. In order to find implementation-specific maximally supported number
+of dimensions, the routine returns this value when invoked with a null pointer
+to both the @var{dst} and @var{src} arguments. As GCC supports arbitrary
+dimensions, it returns @code{INT_MAX}.
+
+The device-number arguments must be conforming device numbers, the @var{src} and
+@var{dst} must be either both null pointers or all of the following must be
+fulfilled: @var{element_size} and @var{num_dims} must be positive and the
+@var{volume}, offset and dimension arrays must have at least @var{num_dims}
+dimensions.
+
+Running this routine in a @code{target} region is not supported except on
+the initial device.
+
+
+
+@item @emph{C/C++}
+@multitable @columnfractions .20 .80
+@item @emph{Prototype}: @tab @code{int omp_target_memcpy_rect_async(void *dst,}
+@item @tab @code{ const void *src,}
+@item @tab @code{ size_t element_size,}
+@item @tab @code{ int num_dims,}
+@item @tab @code{ const size_t *volume,}
+@item @tab @code{ const size_t *dst_offset,}
+@item @tab @code{ const size_t *src_offset,}
+@item @tab @code{ const size_t *dst_dimensions,}
+@item @tab @code{ const size_t *src_dimensions,}
+@item @tab @code{ int dst_device_num,}
+@item @tab @code{ int src_device_num,}
+@item @tab @code{ int depobj_count,}
+@item @tab @code{ omp_depend_t *depobj_list)}
+@end multitable
+
+@item @emph{Fortran}:
+@multitable @columnfractions .20 .80
+@item @emph{Interface}: @tab @code{integer(c_int) function omp_target_memcpy_rect_async( &}
+@item @tab @code{ dst, src, element_size, num_dims, volume, &}
+@item @tab @code{ dst_offset, src_offset, dst_dimensions, &}
+@item @tab @code{ src_dimensions, dst_device_num, src_device_num, &}
+@item @tab @code{ depobj_count, depobj_list) bind(C)}
+@item @tab @code{use, intrinsic :: iso_c_binding, only: c_ptr, c_size_t, c_int}
+@item @tab @code{type(c_ptr), value :: dst, src}
+@item @tab @code{integer(c_size_t), value :: element_size, dst_offset, src_offset}
+@item @tab @code{integer(c_size_t), value :: volume, dst_dimensions, src_dimensions}
+@item @tab @code{integer(c_int), value :: num_dims, dst_device_num, src_device_num}
+@item @tab @code{integer(c_int), value :: depobj_count}
+@item @tab @code{integer(omp_depend_kind), optional :: depobj_list(*)}
+@end multitable
+
+@item @emph{See also}:
+@ref{omp_target_memcpy_rect}, @ref{omp_target_memcpy_async}
+
+@item @emph{Reference}:
+@uref{https://www.openmp.org, OpenMP specification v5.1}, Section 3.8.8
+@end table
+
+
+
@node omp_target_associate_ptr
@subsection @code{omp_target_associate_ptr} -- Associate a device pointer with a host pointer
@table @asis
diff --git a/libgomp/plugin/plugin-gcn.c b/libgomp/plugin/plugin-gcn.c
index 0339848..2771123 100644
--- a/libgomp/plugin/plugin-gcn.c
+++ b/libgomp/plugin/plugin-gcn.c
@@ -384,6 +384,7 @@ struct gcn_image_desc
See https://llvm.org/docs/AMDGPUUsage.html#amdgpu-ef-amdgpu-mach-table */
typedef enum {
+ EF_AMDGPU_MACH_UNSUPPORTED = -1,
EF_AMDGPU_MACH_AMDGCN_GFX803 = 0x02a,
EF_AMDGPU_MACH_AMDGCN_GFX900 = 0x02c,
EF_AMDGPU_MACH_AMDGCN_GFX906 = 0x02f,
@@ -1426,6 +1427,8 @@ init_hsa_runtime_functions (void)
#undef DLSYM_FN
}
+static gcn_isa isa_code (const char *isa);
+
/* Return true if the agent is a GPU and can accept of concurrent submissions
from different threads. */
@@ -1442,6 +1445,18 @@ suitable_hsa_agent_p (hsa_agent_t agent)
switch (device_type)
{
case HSA_DEVICE_TYPE_GPU:
+ {
+ char name[64];
+ hsa_status_t status
+ = hsa_fns.hsa_agent_get_info_fn (agent, HSA_AGENT_INFO_NAME, name);
+ if (status != HSA_STATUS_SUCCESS
+ || isa_code (name) == EF_AMDGPU_MACH_UNSUPPORTED)
+ {
+ GCN_DEBUG ("Ignoring unsupported agent '%s'\n",
+ status == HSA_STATUS_SUCCESS ? name : "invalid");
+ return false;
+ }
+ }
break;
case HSA_DEVICE_TYPE_CPU:
if (!support_cpu_devices)
@@ -1727,7 +1742,7 @@ isa_code(const char *isa) {
if (!strncmp (isa, gcn_gfx1100_s, gcn_isa_name_len))
return EF_AMDGPU_MACH_AMDGCN_GFX1100;
- return -1;
+ return EF_AMDGPU_MACH_UNSUPPORTED;
}
/* CDNA2 devices have twice as many VGPRs compared to older devices. */
@@ -1741,11 +1756,13 @@ max_isa_vgprs (int isa)
case EF_AMDGPU_MACH_AMDGCN_GFX900:
case EF_AMDGPU_MACH_AMDGCN_GFX906:
case EF_AMDGPU_MACH_AMDGCN_GFX908:
- case EF_AMDGPU_MACH_AMDGCN_GFX1030:
- case EF_AMDGPU_MACH_AMDGCN_GFX1100:
return 256;
case EF_AMDGPU_MACH_AMDGCN_GFX90a:
return 512;
+ case EF_AMDGPU_MACH_AMDGCN_GFX1030:
+ return 512; /* 512 SIMD32 = 256 wavefrontsize64. */
+ case EF_AMDGPU_MACH_AMDGCN_GFX1100:
+ return 1536; /* 1536 SIMD32 = 768 wavefrontsize64. */
}
GOMP_PLUGIN_fatal ("unhandled ISA in max_isa_vgprs");
}
@@ -3372,7 +3389,7 @@ GOMP_OFFLOAD_init_device (int n)
return hsa_error ("Error querying the name of the agent", status);
agent->device_isa = isa_code (agent->name);
- if (agent->device_isa < 0)
+ if (agent->device_isa == EF_AMDGPU_MACH_UNSUPPORTED)
return hsa_error ("Unknown GCN agent architecture", HSA_STATUS_ERROR);
status = hsa_fns.hsa_agent_get_info_fn (agent->id, HSA_AGENT_INFO_VENDOR_NAME,
diff --git a/libgomp/testsuite/libgomp.c/declare-variant-4-fiji.c b/libgomp/testsuite/libgomp.c/declare-variant-4-fiji.c
index a138fb0..654f9bc 100644
--- a/libgomp/testsuite/libgomp.c/declare-variant-4-fiji.c
+++ b/libgomp/testsuite/libgomp.c/declare-variant-4-fiji.c
@@ -3,6 +3,8 @@
/* { dg-additional-options -foffload=-march=fiji } */
/* { dg-additional-options "-foffload=-fdump-tree-optimized" } */
+/* { dg-xfail-if "fiji/gfx803 is no longer enabled by default & deprectated in ROCm/LLVM/GCC" { *-*-* } } */
+
#define USE_FIJI_FOR_GFX803
#include "declare-variant-4.h"
diff --git a/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1030.c b/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1030.c
new file mode 100644
index 0000000..d98d5ef
--- /dev/null
+++ b/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1030.c
@@ -0,0 +1,8 @@
+/* { dg-do link { target { offload_target_amdgcn } } } */
+/* { dg-additional-options -foffload=amdgcn-amdhsa } */
+/* { dg-additional-options -foffload=-march=gfx1030 } */
+/* { dg-additional-options "-foffload=-fdump-tree-optimized" } */
+
+#include "declare-variant-4.h"
+
+/* { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump "= gfx1030 \\(\\);" "optimized" } } */
diff --git a/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1100.c b/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1100.c
new file mode 100644
index 0000000..6ade352
--- /dev/null
+++ b/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1100.c
@@ -0,0 +1,8 @@
+/* { dg-do link { target { offload_target_amdgcn } } } */
+/* { dg-additional-options -foffload=amdgcn-amdhsa } */
+/* { dg-additional-options -foffload=-march=gfx1100 } */
+/* { dg-additional-options "-foffload=-fdump-tree-optimized" } */
+
+#include "declare-variant-4.h"
+
+/* { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump "= gfx1100 \\(\\);" "optimized" } } */
diff --git a/libgomp/testsuite/libgomp.c/declare-variant-4-gfx803.c b/libgomp/testsuite/libgomp.c/declare-variant-4-gfx803.c
index 03dffdd..b447631 100644
--- a/libgomp/testsuite/libgomp.c/declare-variant-4-gfx803.c
+++ b/libgomp/testsuite/libgomp.c/declare-variant-4-gfx803.c
@@ -3,6 +3,8 @@
/* { dg-additional-options -foffload=-march=fiji } */
/* { dg-additional-options "-foffload=-fdump-tree-optimized" } */
+/* { dg-xfail-if "fiji/gfx803 is no longer enabled by default & deprectated in ROCm/LLVM/GCC" { *-*-* } } */
+
#include "declare-variant-4.h"
/* { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump "= gfx803 \\(\\);" "optimized" } } */
diff --git a/libgomp/testsuite/libgomp.c/declare-variant-4.h b/libgomp/testsuite/libgomp.c/declare-variant-4.h
index a703524..d2e9194 100644
--- a/libgomp/testsuite/libgomp.c/declare-variant-4.h
+++ b/libgomp/testsuite/libgomp.c/declare-variant-4.h
@@ -35,6 +35,20 @@ gfx90a (void)
return 0x90a;
}
+__attribute__ ((noipa))
+int
+gfx1030 (void)
+{
+ return 0x1030;
+}
+
+__attribute__ ((noipa))
+int
+gfx1100 (void)
+{
+ return 0x1100;
+}
+
#ifdef USE_FIJI_FOR_GFX803
#pragma omp declare variant(gfx803) match(device = {isa("fiji")})
#else
@@ -44,6 +58,8 @@ gfx90a (void)
#pragma omp declare variant(gfx906) match(device = {isa("gfx906")})
#pragma omp declare variant(gfx908) match(device = {isa("gfx908")})
#pragma omp declare variant(gfx90a) match(device = {isa("gfx90a")})
+#pragma omp declare variant(gfx1030) match(device = {isa("gfx1030")})
+#pragma omp declare variant(gfx1100) match(device = {isa("gfx1100")})
__attribute__ ((noipa))
int
f (void)
diff --git a/libgomp/testsuite/libgomp.c/simd-math-1.c b/libgomp/testsuite/libgomp.c/simd-math-1.c
index 42a008c..b30df09 100644
--- a/libgomp/testsuite/libgomp.c/simd-math-1.c
+++ b/libgomp/testsuite/libgomp.c/simd-math-1.c
@@ -1,7 +1,7 @@
/* Check that the SIMD versions of math routines give the same (or
sufficiently close) results as their scalar equivalents. */
-/* { dg-do run } */
+/* { dg-do run { target { ! hppa*-*-hpux* } } } */
/* { dg-options "-O2 -ftree-vectorize -fno-math-errno" } */
/* { dg-additional-options -foffload-options=amdgcn-amdhsa=-mstack-size=3000000 { target offload_target_amdgcn } } */
/* { dg-additional-options "-DNONSTDFUNC=1" { target nonstandard_math_functions } } */
diff --git a/libgomp/testsuite/libgomp.fortran/alloc-comp-3.f90 b/libgomp/testsuite/libgomp.fortran/alloc-comp-3.f90
index 0185859..eb418e8 100644
--- a/libgomp/testsuite/libgomp.fortran/alloc-comp-3.f90
+++ b/libgomp/testsuite/libgomp.fortran/alloc-comp-3.f90
@@ -2,6 +2,7 @@
! Don't cycle by default through all options, just test -O0 and -O2,
! as this is quite large test.
! { dg-skip-if "" { ! run_expensive_tests } { "*" } { "-O0" "-O2" } }
+! { dg-timeout-factor 2.0 { target hppa*-*-* } }
module m
type dl
diff --git a/libsanitizer/ChangeLog b/libsanitizer/ChangeLog
index 6eb6964..5cb9924 100644
--- a/libsanitizer/ChangeLog
+++ b/libsanitizer/ChangeLog
@@ -1,3 +1,8 @@
+2024-01-19 Daniel Cederman <cederman@gaisler.com>
+
+ * sanitizer_common/Makefile.am (DEFS): Add @AS_SYM_ASSIGN_DEFS@.
+ * sanitizer_common/Makefile.in: Regenerate.
+
2024-01-17 YunQiang Su <yunqiang.su@cipunited.com>
* interception/interception.h (substitution_##func_name):
diff --git a/libsanitizer/sanitizer_common/Makefile.am b/libsanitizer/sanitizer_common/Makefile.am
index 02afe65..9ed6ef8 100644
--- a/libsanitizer/sanitizer_common/Makefile.am
+++ b/libsanitizer/sanitizer_common/Makefile.am
@@ -3,7 +3,7 @@ AM_CPPFLAGS = -I $(top_srcdir)/include -I $(top_srcdir) -isystem $(top_srcdir)/i
# May be used by toolexeclibdir.
gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER)
-DEFS = -D_GNU_SOURCE -D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS @RPC_DEFS@
+DEFS = -D_GNU_SOURCE -D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS @RPC_DEFS@ @AS_SYM_ASSIGN_DEFS@
AM_CXXFLAGS = -Wall -W -Wno-unused-parameter -Wwrite-strings -pedantic -Wno-long-long -fPIC -fno-builtin -fno-exceptions -fno-rtti -fomit-frame-pointer -funwind-tables -fvisibility=hidden -Wno-variadic-macros
AM_CXXFLAGS += $(LIBSTDCXX_RAW_CXX_CXXFLAGS)
AM_CXXFLAGS += -std=gnu++14
diff --git a/libsanitizer/sanitizer_common/Makefile.in b/libsanitizer/sanitizer_common/Makefile.in
index 4514193..31fff82 100644
--- a/libsanitizer/sanitizer_common/Makefile.in
+++ b/libsanitizer/sanitizer_common/Makefile.in
@@ -245,7 +245,7 @@ CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
-DEFS = -D_GNU_SOURCE -D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS @RPC_DEFS@
+DEFS = -D_GNU_SOURCE -D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS @RPC_DEFS@ @AS_SYM_ASSIGN_DEFS@
DEPDIR = @DEPDIR@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index fb5474c..39feb32 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,118 @@
+2024-01-29 François Dumont <fdumont@gcc.gnu.org>
+
+ * doc/xml/manual/debug_mode.xml: Link against libstdc++exp.a to use
+ _GLIBCXX_DEBUG_BACKTRACE macro.
+
+2024-01-24 Huanghui Nie <nnnjkk@gmail.com>
+ Théo Papadopoulo <papadopoulo@gmail.com>
+
+ * include/bits/hashtable.h (_Hahstable<>::_M_remove_bucket_begin): Remove
+ _M_before_begin check and cleanup implementation.
+
+2024-01-22 Jonathan Wakely <jwakely@redhat.com>
+
+ * testsuite/std/time/clock/file/io.cc: Fix expected result in
+ assertion and call test_format() from main.
+
+2024-01-21 Jonathan Wakely <jwakely@redhat.com>
+
+ PR libstdc++/113500
+ * include/bits/chrono_io.h (__formatter_chrono::_M_S): Fix
+ printing of subseconds with floating-point rep.
+ (__formatter_chrono::_M_format_to_ostream): Do not write
+ time_point specializations directly to the ostream.
+ (formatter<chrono::sys_time<D>, C>::parse): Do not allow an
+ empty chrono-spec if the type fails to meet the constraints for
+ writing to an ostream with operator<<.
+ * testsuite/std/time/clock/file/io.cc: Check formatting
+ non-integral times with empty chrono-specs.
+ * testsuite/std/time/clock/gps/io.cc: Likewise.
+ * testsuite/std/time/clock/utc/io.cc: Likewise.
+ * testsuite/std/time/hh_mm_ss/io.cc: Likewise.
+
+2024-01-21 Jonathan Wakely <jwakely@redhat.com>
+
+ * include/bits/chrono.h (__file_clock::from_sys)
+ (__file_clock::to_sys, __file_clock::_S_from_sys)
+ (__file_clock::_S_to_sys): Use common_type for return type.
+ * testsuite/std/time/clock/file/members.cc: Check round trip
+ conversion for time with lower precision that seconds.
+
+2024-01-21 Jonathan Wakely <jwakely@redhat.com>
+
+ PR libstdc++/113512
+ * include/std/format (__formatter_fp::format): Fix logic for
+ alternate forms.
+ * testsuite/std/format/functions/format.cc: Check buggy cases of
+ alternate forms with g presentation type.
+
+2024-01-20 Marek Polacek <polacek@redhat.com>
+
+ PR c++/111410
+ * include/std/ranges: Add #pragma to disable -Wdangling-reference with
+ std::ranges::views::__adaptor::operator|.
+
+2024-01-19 Jonathan Wakely <jwakely@redhat.com>
+
+ * include/std/format (_Spec::_M_parse_fill_and_align): Do not
+ use CTAD for _Utf32_view.
+
+2024-01-19 Jonathan Wakely <jwakely@redhat.com>
+
+ PR libstdc++/108822
+ * include/std/tuple (__glibcxx_no_dangling_refs) [C++17]: Fix
+ wrong fold-operator.
+ * testsuite/20_util/tuple/dangling_ref.cc: Check tuples with one
+ element and three elements. Check allocator-extended
+ constructors.
+
+2024-01-19 Patrick Palka <ppalka@redhat.com>
+
+ * include/precompiled/stdc++.h [_GLIBCXX_HOSTED]: Include
+ <print> and <text_encoding> for C++23 and C++26 respectively.
+
+2024-01-18 Patrick Palka <ppalka@redhat.com>
+
+ * include/bits/stl_pair.h [__cplusplus > 202002L]:
+ Guard P2321R2 changes with __glibcxx_ranges_zip instead.
+
+2024-01-18 Patrick Palka <ppalka@redhat.com>
+
+ * include/std/tuple [__cplusplus > 202002L]: Guard P2321R2
+ changes with __cpp_lib_ranges_zip instead.
+
+2024-01-18 Patrick Palka <ppalka@redhat.com>
+
+ PR libstdc++/109536
+ * include/debug/safe_base.h (_Safe_sequence_base::_M_swap):
+ Remove _GLIBCXX20_CONSTEXPR from non-inline member function.
+ * include/debug/safe_iterator.h
+ (_GLIBCXX20_CONSTEXPR_NON_LITERAL_SCOPE_BEGIN): Define.
+ (_GLIBCXX20_CONSTEXPR_NON_LITERAL_SCOPE_END): Define.
+ (_Safe_iterator::operator=): Use them around the code path that
+ defines a variable of type __gnu_cxx::__scoped_lock.
+ (_Safe_iterator::operator++): Likewise.
+ (_Safe_iterator::operator--): Likewise.
+ (_Safe_iterator::operator+=): Likewise.
+ (_Safe_iterator::operator-=): Likewise.
+ * testsuite/23_containers/vector/element_access/constexpr.cc
+ (test_iterators): Test more iterator operations.
+ * testsuite/23_containers/vector/bool/element_access/constexpr.cc
+ (test_iterators): Likewise.
+ * testsuite/std/ranges/adaptors/all.cc (test08) [_GLIBCXX_DEBUG]:
+ Remove.
+
+2024-01-18 Jonathan Wakely <jwakely@redhat.com>
+
+ * include/bits/unicode.h (__charset_alias_match): Initialize
+ __var_a and __var_b.
+
+2024-01-18 Jonathan Wakely <jwakely@redhat.com>
+
+ PR libstdc++/113450
+ * testsuite/std/format/functions/format.cc: Use signed char
+ instead of int8_t.
+
2024-01-17 Jonathan Wakely <jwakely@redhat.com>
PR libstdc++/113318
diff --git a/libstdc++-v3/doc/xml/manual/debug_mode.xml b/libstdc++-v3/doc/xml/manual/debug_mode.xml
index dadc0cd..ac15ef6 100644
--- a/libstdc++-v3/doc/xml/manual/debug_mode.xml
+++ b/libstdc++-v3/doc/xml/manual/debug_mode.xml
@@ -165,8 +165,8 @@ which always works correctly.
It requires that you configure libstdc++ build with
<option>--enable-libstdcxx-backtrace=yes</option>.
Use <code>-D_GLIBCXX_DEBUG_BACKTRACE</code> to activate it.
- You'll then have to link with libstdc++_libbacktrace static library
- (<option>-lstdc++_libbacktrace</option>) to build your application.</para>
+ You'll then have to link against libstdc++exp static library
+ (<option>-lstdc++exp</option>) to build your application.</para>
</section>
<section xml:id="debug_mode.using.specific" xreflabel="Using Specific"><info><title>Using a Specific Debug Container</title></info>
diff --git a/libstdc++-v3/include/bits/chrono.h b/libstdc++-v3/include/bits/chrono.h
index 6f4fe55..0773867 100644
--- a/libstdc++-v3/include/bits/chrono.h
+++ b/libstdc++-v3/include/bits/chrono.h
@@ -1453,14 +1453,14 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
#if __cplusplus > 201703L
template<typename _Dur>
static
- chrono::file_time<_Dur>
+ chrono::file_time<common_type_t<_Dur, chrono::seconds>>
from_sys(const chrono::sys_time<_Dur>& __t) noexcept
{ return _S_from_sys(__t); }
// For internal use only
template<typename _Dur>
static
- chrono::sys_time<_Dur>
+ chrono::sys_time<common_type_t<_Dur, chrono::seconds>>
to_sys(const chrono::file_time<_Dur>& __t) noexcept
{ return _S_to_sys(__t); }
#endif // C++20
@@ -1477,20 +1477,22 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
// For internal use only
template<typename _Dur>
static
- chrono::time_point<__file_clock, _Dur>
+ chrono::time_point<__file_clock, common_type_t<_Dur, chrono::seconds>>
_S_from_sys(const chrono::time_point<__sys_clock, _Dur>& __t) noexcept
{
- using __file_time = chrono::time_point<__file_clock, _Dur>;
+ using _CDur = common_type_t<_Dur, chrono::seconds>;
+ using __file_time = chrono::time_point<__file_clock, _CDur>;
return __file_time{__t.time_since_epoch()} - _S_epoch_diff;
}
// For internal use only
template<typename _Dur>
static
- chrono::time_point<__sys_clock, _Dur>
+ chrono::time_point<__sys_clock, common_type_t<_Dur, chrono::seconds>>
_S_to_sys(const chrono::time_point<__file_clock, _Dur>& __t) noexcept
{
- using __sys_time = chrono::time_point<__sys_clock, _Dur>;
+ using _CDur = common_type_t<_Dur, chrono::seconds>;
+ using __sys_time = chrono::time_point<__sys_clock, _CDur>;
return __sys_time{__t.time_since_epoch()} + _S_epoch_diff;
}
};
diff --git a/libstdc++-v3/include/bits/chrono_io.h b/libstdc++-v3/include/bits/chrono_io.h
index 7b5876b..82f2d39e 100644
--- a/libstdc++-v3/include/bits/chrono_io.h
+++ b/libstdc++-v3/include/bits/chrono_io.h
@@ -681,6 +681,7 @@ namespace __format
return __fc.locale();
}
+ // Format for empty chrono-specs, e.g. "{}" (C++20 [time.format] p6).
// TODO: consider moving body of every operator<< into this function
// and use std::format("{}", t) to implement those operators. That
// would avoid std::format("{}", t) calling operator<< which calls
@@ -702,6 +703,22 @@ namespace __format
if constexpr (__is_specialization_of<_Tp, __utc_leap_second>)
__os << __t._M_date << ' ' << __t._M_time;
+ else if constexpr (chrono::__is_time_point_v<_Tp>)
+ {
+ // Need to be careful here because not all specializations
+ // of chrono::sys_time can be written to an ostream.
+ // For the specializations of time_point that can be
+ // formatted with an empty chrono-specs, either it's a
+ // sys_time with period greater or equal to days:
+ if constexpr (is_convertible_v<_Tp, chrono::sys_days>)
+ __os << _S_date(__t);
+ else // Or it's formatted as "{:L%F %T}":
+ {
+ auto __days = chrono::floor<chrono::days>(__t);
+ __os << chrono::year_month_day(__days) << ' '
+ << chrono::hh_mm_ss(__t - __days);
+ }
+ }
else
{
if constexpr (chrono::__is_duration_v<_Tp>)
@@ -1122,39 +1139,43 @@ namespace __format
'S', 'O');
}
- __out = __format::__write(std::move(__out),
- _S_two_digits(__hms.seconds().count()));
- if constexpr (__hms.fractional_width != 0)
+ if constexpr (__hms.fractional_width == 0)
+ __out = __format::__write(std::move(__out),
+ _S_two_digits(__hms.seconds().count()));
+ else
{
locale __loc = _M_locale(__ctx);
+ auto __s = __hms.seconds();
auto __ss = __hms.subseconds();
using rep = typename decltype(__ss)::rep;
if constexpr (is_floating_point_v<rep>)
{
+ chrono::duration<rep> __fs = __s + __ss;
__out = std::format_to(std::move(__out), __loc,
- _GLIBCXX_WIDEN("{:.{}Lg}"),
- __ss.count(),
- __hms.fractional_width);
- }
- else if constexpr (is_integral_v<rep>)
- {
- const auto& __np
- = use_facet<numpunct<_CharT>>(__loc);
- __out = std::format_to(std::move(__out),
- _GLIBCXX_WIDEN("{}{:0{}}"),
- __np.decimal_point(),
- __ss.count(),
+ _GLIBCXX_WIDEN("{:#0{}.{}Lf}"),
+ __fs.count(),
+ 3 + __hms.fractional_width,
__hms.fractional_width);
}
else
{
const auto& __np
= use_facet<numpunct<_CharT>>(__loc);
+ __out = __format::__write(std::move(__out),
+ _S_two_digits(__s.count()));
*__out++ = __np.decimal_point();
- auto __str = std::format(_S_empty_spec, __ss.count());
- __out = std::format_to(_GLIBCXX_WIDEN("{:0>{}s}"),
- __str,
- __hms.fractional_width);
+ if constexpr (is_integral_v<rep>)
+ __out = std::format_to(std::move(__out),
+ _GLIBCXX_WIDEN("{:0{}}"),
+ __ss.count(),
+ __hms.fractional_width);
+ else
+ {
+ auto __str = std::format(_S_empty_spec, __ss.count());
+ __out = std::format_to(_GLIBCXX_WIDEN("{:0>{}s}"),
+ __str,
+ __hms.fractional_width);
+ }
}
}
return __out;
@@ -1911,7 +1932,13 @@ namespace __format
template<typename _ParseContext>
constexpr typename _ParseContext::iterator
parse(_ParseContext& __pc)
- { return _M_f._M_parse(__pc, __format::_ZonedDateTime); }
+ {
+ auto __next = _M_f._M_parse(__pc, __format::_ZonedDateTime);
+ if constexpr (!__stream_insertable)
+ if (_M_f._M_spec._M_chrono_specs.empty())
+ __format::__invalid_chrono_spec(); // chrono-specs can't be empty
+ return __next;
+ }
template<typename _FormatContext>
typename _FormatContext::iterator
@@ -1920,6 +1947,10 @@ namespace __format
{ return _M_f._M_format(__t, __fc); }
private:
+ static constexpr bool __stream_insertable
+ = requires (basic_ostream<_CharT>& __os,
+ chrono::sys_time<_Duration> __t) { __os << __t; };
+
__format::__formatter_chrono<_CharT> _M_f;
};
diff --git a/libstdc++-v3/include/bits/hashtable.h b/libstdc++-v3/include/bits/hashtable.h
index b486100..c3ef7a0 100644
--- a/libstdc++-v3/include/bits/hashtable.h
+++ b/libstdc++-v3/include/bits/hashtable.h
@@ -869,16 +869,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
_M_remove_bucket_begin(size_type __bkt, __node_ptr __next_n,
size_type __next_bkt)
{
- if (!__next_n || __next_bkt != __bkt)
+ if (!__next_n)
+ _M_buckets[__bkt] = nullptr;
+ else if (__next_bkt != __bkt)
{
- // Bucket is now empty
- // First update next bucket if any
- if (__next_n)
- _M_buckets[__next_bkt] = _M_buckets[__bkt];
-
- // Second update before begin node if necessary
- if (&_M_before_begin == _M_buckets[__bkt])
- _M_before_begin._M_nxt = __next_n;
+ _M_buckets[__next_bkt] = _M_buckets[__bkt];
_M_buckets[__bkt] = nullptr;
}
}
diff --git a/libstdc++-v3/include/bits/stl_pair.h b/libstdc++-v3/include/bits/stl_pair.h
index 52f532f..acd0c7b 100644
--- a/libstdc++-v3/include/bits/stl_pair.h
+++ b/libstdc++-v3/include/bits/stl_pair.h
@@ -211,7 +211,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
swap(second, __p.second);
}
-#if __cplusplus > 202002L
+#if __glibcxx_ranges_zip // >= C++23
// As an extension, we constrain the const swap member function in order
// to continue accepting explicit instantiation of pairs whose elements
// are not all const swappable. Without this constraint, such an
@@ -360,7 +360,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
constexpr explicit(!_S_convertible<_U1, _U2>())
pair(pair<_U1, _U2>&&) = delete;
-#if __cplusplus > 202002L
+#if __glibcxx_ranges_zip // >= C++23
/// Converting constructor from a non-const `pair<U1, U2>` lvalue
template<typename _U1, typename _U2>
requires (_S_constructible<_U1&, _U2&>()) && (!_S_dangles<_U1&, _U2&>())
@@ -464,7 +464,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
return *this;
}
-#if __cplusplus > 202002L
+#if __glibcxx_ranges_zip // >= C++23
/// Copy assignment operator (const)
constexpr const pair&
operator=(const pair& __p) const
@@ -887,7 +887,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
noexcept(noexcept(__x.swap(__y)))
{ __x.swap(__y); }
-#if __cplusplus > 202002L
+#if __glibcxx_ranges_zip // >= C++23
template<typename _T1, typename _T2>
requires is_swappable_v<const _T1> && is_swappable_v<const _T2>
constexpr void
@@ -1101,7 +1101,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
#endif // __glibcxx_tuples_by_type
-#if __cplusplus > 202002L
+#if __glibcxx_ranges_zip // >= C++23
template<typename _T1, typename _T2, typename _U1, typename _U2,
template<typename> class _TQual, template<typename> class _UQual>
requires requires { typename pair<common_reference_t<_TQual<_T1>, _UQual<_U1>>,
diff --git a/libstdc++-v3/include/bits/unicode.h b/libstdc++-v3/include/bits/unicode.h
index d025d21..51bf02e 100644
--- a/libstdc++-v3/include/bits/unicode.h
+++ b/libstdc++-v3/include/bits/unicode.h
@@ -1084,7 +1084,7 @@ inline namespace __v15_1_0
while (true)
{
// Find the value of the next alphanumeric character in each string.
- unsigned char __val_a, __val_b;
+ unsigned char __val_a{}, __val_b{};
while (__ptr_a != __end_a
&& (__val_a = __map(*__ptr_a, __num_a)) == 127)
++__ptr_a;
diff --git a/libstdc++-v3/include/debug/safe_base.h b/libstdc++-v3/include/debug/safe_base.h
index 107fef3..d5fbe4b 100644
--- a/libstdc++-v3/include/debug/safe_base.h
+++ b/libstdc++-v3/include/debug/safe_base.h
@@ -268,7 +268,6 @@ namespace __gnu_debug
* operation is complete all iterators that originally referenced
* one container now reference the other container.
*/
- _GLIBCXX20_CONSTEXPR
void
_M_swap(_Safe_sequence_base& __x) _GLIBCXX_USE_NOEXCEPT;
diff --git a/libstdc++-v3/include/debug/safe_iterator.h b/libstdc++-v3/include/debug/safe_iterator.h
index 1bc7c90..d3e959b 100644
--- a/libstdc++-v3/include/debug/safe_iterator.h
+++ b/libstdc++-v3/include/debug/safe_iterator.h
@@ -65,6 +65,20 @@
_GLIBCXX_DEBUG_VERIFY_OPERANDS(_Lhs, _Rhs, __msg_distance_bad, \
__msg_distance_different)
+// This pair of macros helps with writing valid C++20 constexpr functions that
+// contain a non-constexpr code path that defines a non-literal variable, which
+// was otherwise disallowed until P2242R3 for C++23. We use them below around
+// __gnu_cxx::__scoped_lock variables so that the containing functions are still
+// considered valid C++20 constexpr functions.
+
+#if __cplusplus >= 202002L && __cpp_constexpr < 202110L
+# define _GLIBCXX20_CONSTEXPR_NON_LITERAL_SCOPE_BEGIN [&]() -> void
+# define _GLIBCXX20_CONSTEXPR_NON_LITERAL_SCOPE_END ();
+#else
+# define _GLIBCXX20_CONSTEXPR_NON_LITERAL_SCOPE_BEGIN
+# define _GLIBCXX20_CONSTEXPR_NON_LITERAL_SCOPE_END
+#endif
+
namespace __gnu_debug
{
/** Helper struct to deal with sequence offering a before_begin
@@ -266,11 +280,11 @@ namespace __gnu_debug
._M_iterator(__x, "other"));
if (this->_M_sequence && this->_M_sequence == __x._M_sequence)
- {
+ _GLIBCXX20_CONSTEXPR_NON_LITERAL_SCOPE_BEGIN {
__gnu_cxx::__scoped_lock __l(this->_M_get_mutex());
base() = __x.base();
_M_version = __x._M_sequence->_M_version;
- }
+ } _GLIBCXX20_CONSTEXPR_NON_LITERAL_SCOPE_END
else
{
_M_detach();
@@ -306,11 +320,11 @@ namespace __gnu_debug
return *this;
if (this->_M_sequence && this->_M_sequence == __x._M_sequence)
- {
+ _GLIBCXX20_CONSTEXPR_NON_LITERAL_SCOPE_BEGIN {
__gnu_cxx::__scoped_lock __l(this->_M_get_mutex());
base() = __x.base();
_M_version = __x._M_sequence->_M_version;
- }
+ } _GLIBCXX20_CONSTEXPR_NON_LITERAL_SCOPE_END
else
{
_M_detach();
@@ -378,8 +392,10 @@ namespace __gnu_debug
_GLIBCXX_DEBUG_VERIFY(this->_M_incrementable(),
_M_message(__msg_bad_inc)
._M_iterator(*this, "this"));
- __gnu_cxx::__scoped_lock __l(this->_M_get_mutex());
- ++base();
+ _GLIBCXX20_CONSTEXPR_NON_LITERAL_SCOPE_BEGIN {
+ __gnu_cxx::__scoped_lock __l(this->_M_get_mutex());
+ ++base();
+ } _GLIBCXX20_CONSTEXPR_NON_LITERAL_SCOPE_END
return *this;
}
@@ -697,8 +713,10 @@ namespace __gnu_debug
_GLIBCXX_DEBUG_VERIFY(this->_M_decrementable(),
_M_message(__msg_bad_dec)
._M_iterator(*this, "this"));
- __gnu_cxx::__scoped_lock __l(this->_M_get_mutex());
- --this->base();
+ _GLIBCXX20_CONSTEXPR_NON_LITERAL_SCOPE_BEGIN {
+ __gnu_cxx::__scoped_lock __l(this->_M_get_mutex());
+ --this->base();
+ } _GLIBCXX20_CONSTEXPR_NON_LITERAL_SCOPE_END
return *this;
}
@@ -912,8 +930,10 @@ namespace __gnu_debug
_GLIBCXX_DEBUG_VERIFY(this->_M_can_advance(__n),
_M_message(__msg_advance_oob)
._M_iterator(*this)._M_integer(__n));
- __gnu_cxx::__scoped_lock __l(this->_M_get_mutex());
- this->base() += __n;
+ _GLIBCXX20_CONSTEXPR_NON_LITERAL_SCOPE_BEGIN {
+ __gnu_cxx::__scoped_lock __l(this->_M_get_mutex());
+ this->base() += __n;
+ } _GLIBCXX20_CONSTEXPR_NON_LITERAL_SCOPE_END
return *this;
}
@@ -930,8 +950,10 @@ namespace __gnu_debug
_GLIBCXX_DEBUG_VERIFY(this->_M_can_advance(-__n),
_M_message(__msg_retreat_oob)
._M_iterator(*this)._M_integer(__n));
- __gnu_cxx::__scoped_lock __l(this->_M_get_mutex());
- this->base() -= __n;
+ _GLIBCXX20_CONSTEXPR_NON_LITERAL_SCOPE_BEGIN {
+ __gnu_cxx::__scoped_lock __l(this->_M_get_mutex());
+ this->base() -= __n;
+ } _GLIBCXX20_CONSTEXPR_NON_LITERAL_SCOPE_END
return *this;
}
@@ -1156,6 +1178,8 @@ _GLIBCXX_END_NAMESPACE_VERSION
}
#endif
+#undef _GLIBCXX20_CONSTEXPR_NON_LITERAL_SCOPE_END
+#undef _GLIBCXX20_CONSTEXPR_NON_LITERAL_SCOPE_BEGIN
#undef _GLIBCXX_DEBUG_VERIFY_DIST_OPERANDS
#undef _GLIBCXX_DEBUG_VERIFY_REL_OPERANDS
#undef _GLIBCXX_DEBUG_VERIFY_EQ_OPERANDS
diff --git a/libstdc++-v3/include/precompiled/stdc++.h b/libstdc++-v3/include/precompiled/stdc++.h
index a1db96c..3eef20d 100644
--- a/libstdc++-v3/include/precompiled/stdc++.h
+++ b/libstdc++-v3/include/precompiled/stdc++.h
@@ -223,6 +223,7 @@
#if __cplusplus > 202002L
#include <expected>
#include <generator>
+#include <print>
#include <spanstream>
#if __has_include(<stacktrace>)
# include <stacktrace>
@@ -231,4 +232,8 @@
#include <stdfloat>
#endif
+#if __cplusplus > 202302L
+#include <text_encoding>
+#endif
+
#endif // HOSTED
diff --git a/libstdc++-v3/include/std/format b/libstdc++-v3/include/std/format
index efc4a17..0eca8b5 100644
--- a/libstdc++-v3/include/std/format
+++ b/libstdc++-v3/include/std/format
@@ -434,7 +434,7 @@ namespace __format
if constexpr (__literal_encoding_is_unicode<_CharT>())
{
// Accept any UCS scalar value as fill character.
- _Utf32_view __uv(ranges::subrange(__first, __last));
+ _Utf32_view<ranges::subrange<iterator>> __uv({__first, __last});
if (!__uv.empty())
{
auto __beg = __uv.begin();
@@ -1623,6 +1623,7 @@ namespace __format
*__p = std::toupper(*__p);
}
+ bool __have_sign = true;
// Add sign for non-negative values.
if (!__builtin_signbit(__v))
{
@@ -1630,56 +1631,73 @@ namespace __format
*--__start = '+';
else if (_M_spec._M_sign == _Sign_space)
*--__start = ' ';
+ else
+ __have_sign = false;
}
string_view __narrow_str(__start, __res.ptr - __start);
- // Use alternate form.
+ // Use alternate form. Ensure decimal point is always present,
+ // and add trailing zeros (up to precision) for g and G forms.
if (_M_spec._M_alt && __builtin_isfinite(__v))
{
string_view __s = __narrow_str;
- size_t __z = 0;
- size_t __p;
- size_t __d = __s.find('.');
- size_t __sigfigs;
- if (__d != __s.npos)
+ size_t __sigfigs; // Number of significant figures.
+ size_t __z = 0; // Number of trailing zeros to add.
+ size_t __p; // Position of the exponent character (if any).
+ size_t __d = __s.find('.'); // Position of decimal point.
+ if (__d != __s.npos) // Found decimal point.
{
__p = __s.find(__expc, __d + 1);
if (__p == __s.npos)
__p = __s.size();
- __sigfigs = __p - 1;
+
+ // If presentation type is g or G we might need to add zeros.
+ if (__trailing_zeros)
+ {
+ // Find number of digits after first significant figure.
+ if (__s[__have_sign] != '0')
+ // A string like "D.D" or "-D.DDD"
+ __sigfigs = __p - __have_sign - 1;
+ else
+ // A string like "0.D" or "-0.0DD".
+ // Safe to assume there is a non-zero digit, because
+ // otherwise there would be no decimal point.
+ __sigfigs = __p - __s.find_first_not_of('0', __d + 1);
+ }
}
- else
+ else // No decimal point, we need to insert one.
{
- __p = __s.find(__expc);
+ __p = __s.find(__expc); // Find the exponent, if present.
if (__p == __s.npos)
__p = __s.size();
__d = __p; // Position where '.' should be inserted.
- __sigfigs = __d;
+ __sigfigs = __d - __have_sign;
}
if (__trailing_zeros && __prec != 0)
{
- if (!__format::__is_xdigit(__s[0]))
- --__sigfigs;
- __z = __prec - __sigfigs; // Number of zeros to insert.
+ // For g and G presentation types std::to_chars produces
+ // no more than prec significant figures. Insert this many
+ // zeros so the result has exactly prec significant figures.
+ __z = __prec - __sigfigs;
}
- if (size_t __extras = int(__d == __p) + __z)
+ if (size_t __extras = int(__d == __p) + __z) // How many to add.
{
if (__dynbuf.empty() && __extras <= size_t(__end - __res.ptr))
{
+ // The stack buffer is large enough for the result.
// Move exponent to make space for extra chars.
__builtin_memmove(__start + __p + __extras,
__start + __p,
__s.size() - __p);
-
if (__d == __p)
__start[__p++] = '.';
__builtin_memset(__start + __p, '0', __z);
__narrow_str = {__s.data(), __s.size() + __extras};
}
- else
+ else // Need to switch to the dynamic buffer.
{
__dynbuf.reserve(__s.size() + __extras);
if (__dynbuf.empty())
@@ -1689,6 +1707,7 @@ namespace __format
__dynbuf += '.';
if (__z)
__dynbuf.append(__z, '0');
+ __dynbuf.append(__s.substr(__p));
}
else
{
diff --git a/libstdc++-v3/include/std/ranges b/libstdc++-v3/include/std/ranges
index 7ef835f..f2413ba 100644
--- a/libstdc++-v3/include/std/ranges
+++ b/libstdc++-v3/include/std/ranges
@@ -942,6 +942,8 @@ namespace views::__adaptor
concept __is_range_adaptor_closure
= requires (_Tp __t) { __adaptor::__is_range_adaptor_closure_fn(__t, __t); };
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdangling-reference"
// range | adaptor is equivalent to adaptor(range).
template<typename _Self, typename _Range>
requires __is_range_adaptor_closure<_Self>
@@ -961,6 +963,7 @@ namespace views::__adaptor
return _Pipe<decay_t<_Lhs>, decay_t<_Rhs>>{std::forward<_Lhs>(__lhs),
std::forward<_Rhs>(__rhs)};
}
+#pragma GCC diagnostic pop
// The base class of every range adaptor non-closure.
//
diff --git a/libstdc++-v3/include/std/tuple b/libstdc++-v3/include/std/tuple
index 2f6e419..be92f1e 100644
--- a/libstdc++-v3/include/std/tuple
+++ b/libstdc++-v3/include/std/tuple
@@ -324,7 +324,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
(_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in)))
{ }
-#if __cplusplus > 202002L
+#if __cpp_lib_ranges_zip // >= C++23
template<typename... _UElements>
constexpr
_Tuple_impl(_Tuple_impl<_Idx, _UElements...>& __in)
@@ -405,7 +405,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
(_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in)))
{ }
-#if __cplusplus > 202002L
+#if __cpp_lib_ranges_zip // >= C++23
template<typename _Alloc, typename _UHead, typename... _UTails>
constexpr
_Tuple_impl(allocator_arg_t __tag, const _Alloc& __a,
@@ -449,7 +449,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
std::move(_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in)));
}
-#if __cplusplus > 202002L
+#if __cpp_lib_ranges_zip // >= C++23
template<typename... _UElements>
constexpr void
_M_assign(const _Tuple_impl<_Idx, _UElements...>& __in) const
@@ -480,7 +480,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
_Inherited::_M_swap(_M_tail(__in));
}
-#if __cplusplus > 202002L
+#if __cpp_lib_ranges_zip // >= C++23
constexpr void
_M_swap(const _Tuple_impl& __in) const
{
@@ -549,7 +549,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
: _Base(std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in)))
{ }
-#if __cplusplus > 202002L
+#if __cpp_lib_ranges_zip // >= C++23
template<typename _UHead>
constexpr
_Tuple_impl(_Tuple_impl<_Idx, _UHead>& __in)
@@ -615,7 +615,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in)))
{ }
-#if __cplusplus > 202002L
+#if __cpp_lib_ranges_zip // >= C++23
template<typename _Alloc, typename _UHead>
constexpr
_Tuple_impl(allocator_arg_t, const _Alloc& __a,
@@ -650,7 +650,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
= std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in));
}
-#if __cplusplus > 202002L
+#if __cpp_lib_ranges_zip // >= C++23
template<typename _UHead>
constexpr void
_M_assign(const _Tuple_impl<_Idx, _UHead>& __in) const
@@ -676,7 +676,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
swap(_M_head(*this), _M_head(__in));
}
-#if __cplusplus > 202002L
+#if __cpp_lib_ranges_zip // >= C++23
constexpr void
_M_swap(const _Tuple_impl& __in) const
{
@@ -1299,7 +1299,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
// Error if construction from U... would create a dangling ref.
# if __cpp_fold_expressions
# define __glibcxx_dangling_refs(U) \
- (__reference_constructs_from_temporary(_Elements, U) && ...)
+ (__reference_constructs_from_temporary(_Elements, U) || ...)
# else
# define __glibcxx_dangling_refs(U) \
__or_<__bool_constant<__reference_constructs_from_temporary(_Elements, U) \
@@ -1775,7 +1775,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
public:
_GLIBCXX20_CONSTEXPR
void swap(tuple&) noexcept { /* no-op */ }
-#if __cplusplus > 202002L
+#if __cpp_lib_ranges_zip // >= C++23
constexpr void swap(const tuple&) const noexcept { /* no-op */ }
#endif
// We need the default since we're going to define no-op
diff --git a/libstdc++-v3/testsuite/20_util/tuple/dangling_ref.cc b/libstdc++-v3/testsuite/20_util/tuple/dangling_ref.cc
index 74fdc24..b2dcf35 100644
--- a/libstdc++-v3/testsuite/20_util/tuple/dangling_ref.cc
+++ b/libstdc++-v3/testsuite/20_util/tuple/dangling_ref.cc
@@ -7,6 +7,7 @@
#if __cplusplus >= 202002L
// For C++20 and later, constructors are constrained to disallow dangling.
+static_assert(!std::is_constructible_v<std::tuple<const int&>, long>);
static_assert(!std::is_constructible_v<std::tuple<const int&, int>, long, int>);
static_assert(!std::is_constructible_v<std::tuple<int, const int&>, int, long>);
static_assert(!std::is_constructible_v<std::tuple<const int&, int>,
@@ -30,76 +31,137 @@ static_assert(!std::is_constructible_v<std::tuple<int, const int&>,
void
test_ary_ctors()
{
- std::tuple<const int&, int> t1(1L, 2);
- // { dg-error "here" "" { target { c++17_down && hosted } } 33 }
- // { dg-error "use of deleted function" "" { target c++20 } 33 }
+ std::tuple<const int&> t1(1L);
+ // { dg-error "here" "" { target { c++17_down && hosted } } 34 }
+ // { dg-error "use of deleted function" "" { target c++20 } 34 }
- std::tuple<int, const int&> t2(1, 2L);
- // { dg-error "here" "" { target { c++17_down && hosted } } 37 }
- // { dg-error "use of deleted function" "" { target c++20 } 37 }
+ std::tuple<const int&, int> t2(1L, 2);
+ // { dg-error "here" "" { target { c++17_down && hosted } } 38 }
+ // { dg-error "use of deleted function" "" { target c++20 } 38 }
- std::tuple<const int&, const int&> t3(1L, 2L);
- // { dg-error "here" "" { target { c++17_down && hosted } } 41 }
- // { dg-error "use of deleted function" "" { target c++20 } 41 }
+ std::tuple<int, const int&> t3(1, 2L);
+ // { dg-error "here" "" { target { c++17_down && hosted } } 42 }
+ // { dg-error "use of deleted function" "" { target c++20 } 42 }
- std::tuple<const int&, const int&> t4(std::pair<long, int>{});
- // { dg-error "here" "" { target { c++17_down && hosted } } 45 }
- // { dg-error "use of deleted function" "" { target c++20 } 45 }
+ std::tuple<const int&, const int&> t4(1L, 2L);
+ // { dg-error "here" "" { target { c++17_down && hosted } } 46 }
+ // { dg-error "use of deleted function" "" { target c++20 } 46 }
- std::pair<int, long> p;
- std::tuple<const int&, const int&> t5(p);
+ std::tuple<const int&, const int&> t5(std::pair<long, int>{});
// { dg-error "here" "" { target { c++17_down && hosted } } 50 }
// { dg-error "use of deleted function" "" { target c++20 } 50 }
+
+ std::pair<int, long> p;
+ std::tuple<const int&, const int&> t6(p);
+ // { dg-error "here" "" { target { c++17_down && hosted } } 55 }
+ // { dg-error "use of deleted function" "" { target c++20 } 55 }
+
+ std::tuple<const int&, int, int> t7(1L, 2, 3);
+ // { dg-error "here" "" { target { c++17_down && hosted } } 59 }
+ // { dg-error "use of deleted function" "" { target c++20 } 59 }
}
void
test_converting_ctors()
{
- std::tuple<long, long> t0;
+ std::tuple<long> t10;
+
+ std::tuple<const int&> t11(t10);
+ // { dg-error "here" "" { target { c++17_down && hosted } } 69 }
+ // { dg-error "use of deleted function" "" { target c++20 } 69 }
+
+ std::tuple<const int&> t12(std::move(t10));
+ // { dg-error "here" "" { target { c++17_down && hosted } } 73 }
+ // { dg-error "use of deleted function" "" { target c++20 } 73 }
- std::tuple<const int&, int> t1(t0);
- // { dg-error "here" "" { target { c++17_down && hosted } } 60 }
- // { dg-error "use of deleted function" "" { target c++20 } 60 }
+ std::tuple<long, long> t20;
- std::tuple<int, const int&> t2(t0);
- // { dg-error "here" "" { target { c++17_down && hosted } } 64 }
- // { dg-error "use of deleted function" "" { target c++20 } 64 }
+ std::tuple<const int&, int> t21(t20);
+ // { dg-error "here" "" { target { c++17_down && hosted } } 79 }
+ // { dg-error "use of deleted function" "" { target c++20 } 79 }
- std::tuple<const int&, const int&> t3(t0);
- // { dg-error "here" "" { target { c++17_down && hosted } } 68 }
- // { dg-error "use of deleted function" "" { target c++20 } 68 }
+ std::tuple<int, const int&> t22(t20);
+ // { dg-error "here" "" { target { c++17_down && hosted } } 83 }
+ // { dg-error "use of deleted function" "" { target c++20 } 83 }
- std::tuple<const int&, int> t4(std::move(t0));
- // { dg-error "here" "" { target { c++17_down && hosted } } 72 }
- // { dg-error "use of deleted function" "" { target c++20 } 72 }
+ std::tuple<const int&, const int&> t23(t20);
+ // { dg-error "here" "" { target { c++17_down && hosted } } 87 }
+ // { dg-error "use of deleted function" "" { target c++20 } 87 }
- std::tuple<int, const int&> t5(std::move(t0));
- // { dg-error "here" "" { target { c++17_down && hosted } } 76 }
- // { dg-error "use of deleted function" "" { target c++20 } 76 }
+ std::tuple<const int&, int> t24(std::move(t20));
+ // { dg-error "here" "" { target { c++17_down && hosted } } 91 }
+ // { dg-error "use of deleted function" "" { target c++20 } 91 }
- std::tuple<const int&, const int&> t6(std::move(t0));
- // { dg-error "here" "" { target { c++17_down && hosted } } 80 }
- // { dg-error "use of deleted function" "" { target c++20 } 80 }
+ std::tuple<int, const int&> t25(std::move(t20));
+ // { dg-error "here" "" { target { c++17_down && hosted } } 95 }
+ // { dg-error "use of deleted function" "" { target c++20 } 95 }
+
+ std::tuple<const int&, const int&> t26(std::move(t20));
+ // { dg-error "here" "" { target { c++17_down && hosted } } 99 }
+ // { dg-error "use of deleted function" "" { target c++20 } 99 }
std::pair<long, long> p0;
- std::tuple<const int&, int> t7(p0);
- // { dg-error "here" "" { target { c++17_down && hosted } } 85 }
- // { dg-error "use of deleted function" "" { target c++20 } 85 }
+ std::tuple<const int&, int> t27(p0);
+ // { dg-error "here" "" { target { c++17_down && hosted } } 104 }
+ // { dg-error "use of deleted function" "" { target c++20 } 104 }
- std::tuple<int, const int&> t8(p0);
- // { dg-error "here" "" { target { c++17_down && hosted } } 89 }
- // { dg-error "use of deleted function" "" { target c++20 } 89 }
+ std::tuple<int, const int&> t28(p0);
+ // { dg-error "here" "" { target { c++17_down && hosted } } 108 }
+ // { dg-error "use of deleted function" "" { target c++20 } 108 }
- std::tuple<const int&, int> t9(std::move(p0));
- // { dg-error "here" "" { target { c++17_down && hosted } } 93 }
- // { dg-error "use of deleted function" "" { target c++20 } 93 }
+ std::tuple<const int&, int> t29(std::move(p0));
+ // { dg-error "here" "" { target { c++17_down && hosted } } 112 }
+ // { dg-error "use of deleted function" "" { target c++20 } 112 }
- std::tuple<int, const int&> t10(std::move(p0));
- // { dg-error "here" "" { target { c++17_down && hosted } } 97 }
- // { dg-error "use of deleted function" "" { target c++20 } 97 }
+ std::tuple<int, const int&> t210(std::move(p0));
+ // { dg-error "here" "" { target { c++17_down && hosted } } 116 }
+ // { dg-error "use of deleted function" "" { target c++20 } 116 }
}
-// TODO: test allocator-extended ctors
-// TODO: test 1-tuple or 3-tuple, not just 2-tuple
+#include <memory>
+
+void
+test_allocator_extended_ctors()
+{
+ std::allocator<int> a;
+
+ std::tuple<const int&> t1(std::allocator_arg, a, 1L);
+ // { dg-error "here" "" { target { c++17_down && hosted } } 128 }
+ // { dg-error "use of deleted function" "" { target c++20 } 128 }
+
+ std::tuple<const int&, int> t2(std::allocator_arg, a, 1L, 2);
+ // { dg-error "here" "" { target { c++17_down && hosted } } 132 }
+ // { dg-error "use of deleted function" "" { target c++20 } 132 }
+
+ std::tuple<long> tl;
+
+ std::tuple<const int&> t3(std::allocator_arg, a, tl);
+ // { dg-error "here" "" { target { c++17_down && hosted } } 138 }
+ // { dg-error "use of deleted function" "" { target c++20 } 138 }
+
+ std::tuple<const int&> t4(std::allocator_arg, a, std::move(tl));
+ // { dg-error "here" "" { target { c++17_down && hosted } } 142 }
+ // { dg-error "use of deleted function" "" { target c++20 } 142 }
+
+ std::tuple<long, long> tll;
+
+ std::tuple<const int&, int> t5(std::allocator_arg, a, tll);
+ // { dg-error "here" "" { target { c++17_down && hosted } } 148 }
+ // { dg-error "use of deleted function" "" { target c++20 } 148 }
+
+ std::tuple<const int&, int> t6(std::allocator_arg, a, std::move(tll));
+ // { dg-error "here" "" { target { c++17_down && hosted } } 152 }
+ // { dg-error "use of deleted function" "" { target c++20 } 152 }
+
+ std::pair<long, long> pll;
+
+ std::tuple<const int&, int> t7(std::allocator_arg, a, pll);
+ // { dg-error "here" "" { target { c++17_down && hosted } } 158 }
+ // { dg-error "use of deleted function" "" { target c++20 } 158 }
+
+ std::tuple<const int&, int> t8(std::allocator_arg, a, std::move(pll));
+ // { dg-error "here" "" { target { c++17_down && hosted } } 162 }
+ // { dg-error "use of deleted function" "" { target c++20 } 162 }
+}
// { dg-error "static assert.* dangling reference" "" { target { c++17_down && hosted } } 0 }
diff --git a/libstdc++-v3/testsuite/23_containers/vector/bool/element_access/constexpr.cc b/libstdc++-v3/testsuite/23_containers/vector/bool/element_access/constexpr.cc
index d6b657e..bff9f7b 100644
--- a/libstdc++-v3/testsuite/23_containers/vector/bool/element_access/constexpr.cc
+++ b/libstdc++-v3/testsuite/23_containers/vector/bool/element_access/constexpr.cc
@@ -18,22 +18,40 @@ test_iterators()
VERIFY( v.crend() == v.rend() );
auto it = v.begin();
+ VERIFY( it[0] == 0 );
VERIFY( *it == v.front() );
+ VERIFY( it[1] == v[1] );
VERIFY( it++ == v.begin() );
VERIFY( ++it == v.end() );
VERIFY( (it - 2) == v.begin() );
+ VERIFY( (it - v.begin()) == 2 );
it -= 2;
it += 1;
VERIFY( (it + 1) == v.end() );
+ VERIFY( (1 + it) == v.end() );
+ it = it + 1;
+ auto it2 = v.begin();
+ std::swap(it, it2);
+ VERIFY( it == v.begin() );
+ VERIFY( it2 == v.end() );
auto rit = v.rbegin();
+ VERIFY( rit[0] == 0 );
VERIFY( *rit == v.back() );
+ VERIFY( rit[1] == v[0] );
VERIFY( rit++ == v.rbegin() );
VERIFY( ++rit == v.rend() );
VERIFY( (rit - 2) == v.rbegin() );
+ VERIFY( (rit - v.rbegin()) == 2 );
rit -= 2;
rit += 1;
VERIFY( (rit + 1) == v.rend() );
+ VERIFY( (1 + rit) == v.rend() );
+ rit = rit + 1;
+ auto rit2 = v.rbegin();
+ std::swap(rit, rit2);
+ VERIFY( rit == v.rbegin() );
+ VERIFY( rit2 == v.rend() );
return true;
}
diff --git a/libstdc++-v3/testsuite/23_containers/vector/element_access/constexpr.cc b/libstdc++-v3/testsuite/23_containers/vector/element_access/constexpr.cc
index ee93d2f..19c91d2 100644
--- a/libstdc++-v3/testsuite/23_containers/vector/element_access/constexpr.cc
+++ b/libstdc++-v3/testsuite/23_containers/vector/element_access/constexpr.cc
@@ -18,22 +18,40 @@ test_iterators()
VERIFY( v.crend() == v.rend() );
auto it = v.begin();
+ VERIFY( it[0] == 0 );
VERIFY( &*it == &v.front() );
+ VERIFY( &it[1] == &v[1] );
VERIFY( it++ == v.begin() );
VERIFY( ++it == v.end() );
VERIFY( (it - 2) == v.begin() );
+ VERIFY( (it - v.begin()) == 2 );
it -= 2;
it += 1;
VERIFY( (it + 1) == v.end() );
+ VERIFY( (1 + it) == v.end() );
+ it = it + 1;
+ auto it2 = v.begin();
+ std::swap(it, it2);
+ VERIFY( it == v.begin() );
+ VERIFY( it2 == v.end() );
auto rit = v.rbegin();
+ VERIFY( rit[0] == 0 );
VERIFY( &*rit == &v.back() );
+ VERIFY( &rit[1] == &v[0] );
VERIFY( rit++ == v.rbegin() );
VERIFY( ++rit == v.rend() );
VERIFY( (rit - 2) == v.rbegin() );
+ VERIFY( (rit - v.rbegin()) == 2 );
rit -= 2;
rit += 1;
VERIFY( (rit + 1) == v.rend() );
+ VERIFY( (1 + rit) == v.rend() );
+ rit = rit + 1;
+ auto rit2 = v.rbegin();
+ std::swap(rit, rit2);
+ VERIFY( rit == v.rbegin() );
+ VERIFY( rit2 == v.rend() );
return true;
}
diff --git a/libstdc++-v3/testsuite/std/format/functions/format.cc b/libstdc++-v3/testsuite/std/format/functions/format.cc
index 63702ed..a27fbe7 100644
--- a/libstdc++-v3/testsuite/std/format/functions/format.cc
+++ b/libstdc++-v3/testsuite/std/format/functions/format.cc
@@ -181,6 +181,12 @@ test_alternate_forms()
// PR libstdc++/108046
s = std::format("{0:#.0} {0:#.1} {0:#.0g}", 10.0);
VERIFY( s == "1.e+01 1.e+01 1.e+01" );
+
+ // PR libstdc++/113512
+ s = std::format("{:#.3g}", 0.025);
+ VERIFY( s == "0.0250" );
+ s = std::format("{:#07.3g}", 0.02);
+ VERIFY( s == "00.0200" );
}
void
@@ -365,7 +371,7 @@ test_minmax()
s = std::format("{:b}" , std::numeric_limits<U>::max());
VERIFY( s == '1' + ones );
};
- check(std::int8_t(0));
+ check((signed char)(0)); // int8_t is char on Solaris, see PR 113450
check(std::int16_t(0));
check(std::int32_t(0));
check(std::int64_t(0));
diff --git a/libstdc++-v3/testsuite/std/ranges/adaptors/all.cc b/libstdc++-v3/testsuite/std/ranges/adaptors/all.cc
index e7010f8..5f7206d 100644
--- a/libstdc++-v3/testsuite/std/ranges/adaptors/all.cc
+++ b/libstdc++-v3/testsuite/std/ranges/adaptors/all.cc
@@ -156,11 +156,7 @@ test07()
constexpr bool
test08()
{
-#ifdef _GLIBCXX_DEBUG
- using std::_GLIBCXX_STD_C::vector;
-#else
using std::vector;
-#endif
// Verify P2415R2 "What is a view?" changes.
// In particular, rvalue non-view non-borrowed ranges are now viewable.
diff --git a/libstdc++-v3/testsuite/std/time/clock/file/io.cc b/libstdc++-v3/testsuite/std/time/clock/file/io.cc
index 39eb0db..9ab9f10 100644
--- a/libstdc++-v3/testsuite/std/time/clock/file/io.cc
+++ b/libstdc++-v3/testsuite/std/time/clock/file/io.cc
@@ -18,6 +18,23 @@ test_ostream()
}
void
+test_format()
+{
+ using namespace std::chrono;
+ auto t = file_clock::now();
+
+ auto s = std::format("{}", t);
+ std::ostringstream ss;
+ ss << t;
+ VERIFY( s == ss.str() );
+
+ // PR libstdc++/113500
+ auto ft = clock_cast<file_clock>(sys_days(2024y/January/21)) + 0ms + 2.5s;
+ s = std::format("{}", ft);
+ VERIFY( s == "2024-01-21 00:00:02.500");
+}
+
+void
test_parse()
{
using namespace std::chrono;
@@ -37,5 +54,6 @@ test_parse()
int main()
{
test_ostream();
+ test_format();
test_parse();
}
diff --git a/libstdc++-v3/testsuite/std/time/clock/file/members.cc b/libstdc++-v3/testsuite/std/time/clock/file/members.cc
index 54459cc..9d217b1 100644
--- a/libstdc++-v3/testsuite/std/time/clock/file/members.cc
+++ b/libstdc++-v3/testsuite/std/time/clock/file/members.cc
@@ -41,9 +41,18 @@ test02()
VERIFY( t - s < 1s );
}
+void
+test03()
+{
+ using namespace std::chrono;
+ auto st = sys_days(2024y/January/21);
+ VERIFY( file_clock::to_sys(file_clock::from_sys(st)) == st );
+}
+
int
main()
{
test01();
test02();
+ test03();
}
diff --git a/libstdc++-v3/testsuite/std/time/clock/gps/io.cc b/libstdc++-v3/testsuite/std/time/clock/gps/io.cc
index 6f4544f..5d15713 100644
--- a/libstdc++-v3/testsuite/std/time/clock/gps/io.cc
+++ b/libstdc++-v3/testsuite/std/time/clock/gps/io.cc
@@ -3,6 +3,7 @@
#include <chrono>
#include <format>
+#include <sstream>
#include <testsuite_hooks.h>
void
@@ -16,6 +17,32 @@ test_ostream()
auto s = format("{0:%F %T %Z} == {1:%F %T %Z}", st, gt);
VERIFY( s == "2000-01-01 00:00:00 UTC == 2000-01-01 00:00:13 GPS" );
+
+ std::ostringstream ss;
+ ss << gt;
+ VERIFY( ss.str() == "2000-01-01 00:00:13" );
+
+ gps_time<duration<float>> gtf = gt;
+ ss.str("");
+ ss.clear();
+ ss << (gps_time<duration<long double>>(gt) + 20ms);
+ VERIFY( ss.str() == "2000-01-01 00:00:13.020" );
+}
+
+void
+test_format()
+{
+ using std::format;
+ using namespace std::chrono;
+
+ auto st = sys_days{2000y/January/1};
+ auto gt = clock_cast<gps_clock>(st);
+ auto s = std::format("{}", gt);
+ VERIFY( s == "2000-01-01 00:00:13" );
+
+ // PR libstdc++/113500
+ s = std::format("{}", gt + 150ms + 10.5s);
+ VERIFY( s == "2000-01-01 00:00:35.650" );
}
void
diff --git a/libstdc++-v3/testsuite/std/time/clock/utc/io.cc b/libstdc++-v3/testsuite/std/time/clock/utc/io.cc
index 58e358f..55c53dc 100644
--- a/libstdc++-v3/testsuite/std/time/clock/utc/io.cc
+++ b/libstdc++-v3/testsuite/std/time/clock/utc/io.cc
@@ -112,6 +112,10 @@ test_format()
s = std::format("{:%T}", leap + 1s);
VERIFY( s == "00:00:00" );
+
+ // PR libstdc++/113500
+ s = std::format("{}", leap + 100ms + 2.5s);
+ VERIFY( s == "2017-01-01 00:00:01.600");
}
void
diff --git a/libstdc++-v3/testsuite/std/time/hh_mm_ss/io.cc b/libstdc++-v3/testsuite/std/time/hh_mm_ss/io.cc
index 8eb8042..d651dfb 100644
--- a/libstdc++-v3/testsuite/std/time/hh_mm_ss/io.cc
+++ b/libstdc++-v3/testsuite/std/time/hh_mm_ss/io.cc
@@ -35,9 +35,31 @@ test_ostream()
VERIFY( out.str() == "18:15:45.123" );
}
- ostringstream out;
- out << hh_mm_ss{65745s};
- VERIFY( out.str() == "18:15:45" );
+ {
+ ostringstream out;
+ out << hh_mm_ss{65745s};
+ VERIFY( out.str() == "18:15:45" );
+ }
+
+ {
+ ostringstream out;
+ out << hh_mm_ss{0.020s};
+ // hh_mm_ss<duration<long double>>::fractional_width == 0 so no subseconds:
+ VERIFY( out.str() == "00:00:00" );
+ }
+
+ {
+ ostringstream out;
+ out << hh_mm_ss<std::chrono::duration<long double, std::nano>>{0.020s};
+ // hh_mm_ss<duration<long double, nano>>::fractional_width == 9:
+ VERIFY( out.str() == "00:00:00.020000000" );
+ }
+
+ {
+ ostringstream out;
+ out << hh_mm_ss{65745s + 20ms};
+ VERIFY( out.str() == "18:15:45.020" );
+ }
}
void